Realm Blog

Realm Cocoa Converter

このたび、Realm Cocoa Converterをオープンソースのライブラリとしてリリースしました!Realm Objective-CとRealm Swiftに足りない部分を補完する役割があります。

これまで開発者のみなさまから、もっと簡単に既存のデータをRealmに変換したい、それをするために開発のかなりの時間を費やしている、との声をたくさんいただいていました。Realm Cocoa Converterはさまざまなデータ形式のファイルからRealmにデータをインポートする、あるいはRealmから別のファイル形式にデータをエクスポートする機能を提供するライブラリです。

このライブラリはSwiftで書かれており、そしてとても簡単に使うことができます。例えばRealmからデータをエクスポートする場合は、あるクラスを1つ使用するだけです。下記の例はRealmのデータをCSVファイルにエクスポートします。

let path = ... // 対象のRealmファイルへの絶対パス
let destinationFolder = ... // CSVファイル(複数)が保存されるフォルダへの絶対パス

let exporter = CSVDataImporter(realmFilePath: path)
exporter.exportToFolderAtPath(outputFolderPath: destinationFolder)

Realmへデータをインポートするには、エクスポートの時よりも少し手順が増えます。Realmはファイルをインポートする際にそれぞれのデータ項目の型を決めて、スキーマを生成する必要があるからです。

Realm Cocoa Converterはスキーマを専用のクラスによってとても賢く生成します。生成されたスキーマはそのまま保存することもできますし、データをインポートする前にカスタマイズすることも可能です。

生成されたスキーマは、インポートを行う際に渡します。

var filePaths = [String]() // Realmにインポートされるファイルパスの配列

// スキーマジェネレータのインスタンスを生成し、インポートするデータファイルを解析します
let generator =  ImportSchemaGenerator(files: filePaths)
let schema = try! generator.generate()

let destinationRealmPath = ... // データがインポートされたRealmファイルの保存場所

// データインポータのインスタンスを生成し、データのインポートを実行します。スキーマは上記で生成したものを渡します。
let dataImporter = CSVDataImporter(files: filePaths)
try! dataImporter.importToPath(String(destinationRealmPath), schema: schema)

Realm Cocoa ConverterはSwiftを用いて記述されています。そしてObjective-Cから利用する場合でも、適切なインターフェースが提供されるようにコード規約を設計しています。

NSString *path = ... // 対象のRealmファイルへの絶対パス
NSString *destinationFolder = ... // CSVファイル(複数)が保存されるフォルダへの絶対パス

RLMCSVDataExporter *exporter = [[RLMCSVDataExporter alloc] initWithRealmFileAtPath:realmFilePath];
[exporter exportToFolderAtPath:destinationFolder withError:nil];

現在はRealmファイルへデータをインポートすることができるファイル形式はCSVとExcel(XLSX)ファイルをサポートしています。Realmファイルからエクスポートできるデータ形式はCSVをサポートしています。今後のバージョンアップにて、その他の形式、JSONやSQLiteなどのサポートも予定しています。

Realm Cocoa Converterはまだリリースしたばかりのライブラリです。まだまだこれからたくさんの改善が必要です。ぜひ開発を手伝ってください!また、具体的なユースケースや、対応してほしいファイル形式がありましたらぜひ私たちに知らせてください!


お読みいただきありがとうございます。Realmがすばらしいアプリを作るお役に立てたなら幸いです。お困りの際はStack Overflow(日本語)Slack(日本語)Twitter(日本語)GitHubでご相談ください。


Tim Oliver

Tim Oliver hails from Perth, Australia! He has been an iOS developer for 6 years, and recently joined Realm in March 2015. Tim has a cool app called iComics and he loves karaoke! He does, in fact, also sometimes have the problem of too many kangaroos in his backyard.

記事の更新情報を受け取る