🐶

【Flutter】Isarの公式ドキュメントを日本語訳しました。

2022/10/22に公開

この記事について

FlutterのローカルDBパッケージであるIsarに翻訳Docsを追加してはどうかと作成者のSimon Leier氏に相談し、ついに翻訳企画の進行+日本語訳の完成に至りましたので記事を書かせて頂きました。

https://isar.dev/

上段のSelect Languageから言語を選択できます。

こちらが日本語verのドキュメントです。
https://isar.dev/ja/

Isarとは

Isar[ee-zahr]は、FlutterのローカルDBパッケージでNoSQL database & WEBを含めたマルチプラットフォームに対応しています。
IsarのコアはRustで書かれており、

特徴としては、

  • 独自のInspectorを搭載
  • 高性能なDB検索機能やクエリの豊富さ
  • ACIDトランザクションに基づいているため"all or nothing"で処理される。
  • 高パフォーマンスかつ高速処理対応
  • その他(同期+非同期処理の双方に対応、ボイラープレート無し、etc)
    などが挙げられます。

特にInspectorと検索機能の豊富さに関しては目を見張る物があります。

なぜHiveじゃなくてIsarなの?

Flutter関連に精通されている方はご存じかもしれませんが、IsarはHiveの課題を解決する為に新たに作成されたパッケージです。

作成者のSimon Leier氏は、当時、Hiveで正しく効率的にクエリを実装する方法を考えてきましたが、当時のHiveのアーキテクチャでは不可能だという結論に達したからです。(Dart本来のwhere節を利用したりHiveをカスタマイズしているプロジェクトもありますが、効率的/最適解とは言えなかったそうです)

これに加えて、Hiveは問題があります。
それは、Dartオブジェクトが大量のRAMを消費することです。これらの問題を解決する為に、
Hiveの新しい形をRustで書き直され、Isarが生まれました。

IsarもHiveと同じ目標に立っており、シンプルかつ高パフォーマンスという土台は崩していません。
というのが背景にあります。

2021年12月段階のdiscussionでは、 IsarはHiveの完全上位互換ではなく、単にIsarがHiveを置き換えるもので作成はしていないと述べています。ただ、公式Docsでは、HiveよりもIsarを使うことを推奨するとあります。

https://github.com/hivedb/hive/issues/246

私の見解と結論

HiveとIsarは全く異なるものだと思います。忖度無しで述べると、個人的には、

  • シンプルなKVS型ストアを使用して値の取り出しだけしたい。もしくはDB内の検索機能がいらない場合はHiveで良い。
  • DB内を検索し絞り込む機能が欲しい場合は、必ずと言っていいほどIsarを選ぶべき。
  • データベースという概念に触れた事が無い/初心者である場合は、学習コストがHiveよりも圧倒的に高い(ただ、勉強にはなるはずです)
  • Hiveの方が成熟した状況にある為、安定しており、Isarは比較的新しいので今後も変更を追っていく必要がある。

と思います。

翻訳内容について

直訳を旨に翻訳していますが、日本語と英語の統語論的な差や意味論に基づく語彙の解釈などから、句や節の並び替えや若干の意訳、専門用語を英単語/カタカナ表記にあえてする箇所や訳もあります。

厳密な意味を捉えたい場合は英語訳をご覧ください。

また日本語訳を一人で行ったため、間違いがあるかと思います。
ぜひ確認頂いて間違いなどを指摘して頂けると助かります。

Isarに貢献

日本語訳が間違っているもしくは違和感がある場合は、ぜひOSS貢献者としてIsarに貢献して頂けると幸いです。

日本語公式Docsのリポジトリはこちらです。面倒な手順は必要なく、ローカルサーバーを立ち上げた後にmdを編集するだけです。ちなみにドキュメント基盤はVuepressです。
https://github.com/isar/isar/tree/main/docs/docs/ja

貢献の仕方やDocsの導入方法はこちらに記載があります。
https://github.com/isar/isar/tree/main/docs

最後に

公式Docsはありますが、別の記事で、完全な初心者向けのIsar記事を書きたいと思います。
よろしくお願いいします。

ドキュメントの誤字や内容の誤り、その他の質問等あればお気軽にTwitterのDMまでどうぞ!
https://twitter.com/urasan_edu

Discussion