この記事では、2017年にGoogleが作ったこの技術を数ヶ月間扱ってきた私たちの体験をお話しします。
最初の印象は少し奇妙でした。まず、この技術はBLoCパターンを使用しており、これはGoogleの開発者たちが推奨している方法です。そして、見た目の部分では…オブジェクト? 頭が混乱しました。今までと全く違う考え方でした。しかし、それは悪いことではなく、新しい挑戦でした。
Flutterを1〜2週間使ってみて驚いたのは、思っていたよりも快適に開発できたことです。先ほど言ったオブジェクトは「ウィジェット」と呼ばれ、CSSとかなり似たプロパティを持っています。自分たちでウィジェットを作ることもでき、(まるでReactでコンポーネントを作っているような感覚でした!)ビューにデータを送るときは、BLoC内でStream<T>オブジェクト(Tは型)を作成し、ビュー側でStreamBuilderウィジェットを使って受け取ります。逆に、ビューからイベントを通じてBLoCへデータやアクションを送ることもできます。とにかく、一度試してみることをおすすめします。ここでは簡単にいくつかのことを紹介しただけですが、次に重要なトピックに進みましょう。
テスト
Flutterのドキュメントを見ると、3つのカテゴリーがあります:
- ユニットテスト
- ウィジェットテスト
- 統合テスト
それぞれの作り方を説明することもできますが、それはまた別の記事で紹介します。ここでは、私たちが直面した問題について話しましょう。
実際、これらのテストは他の技術のテストと大きな違いはありませんが、いくつかの問題に遭遇しました。簡単に解決できたものもあれば、そうでないものもありました。多くはウィジェットテストに関するものでした。
ある問題では、GUI内で特定の要素が見つからないというものでした。すべて正しく設定されているように見えましたが…なぜそのウィジェットが見つからないのか? テストはコンソールでflutter testコマンドを使って実行しますが、リアルタイムで動作を見ることはできません。そのため、視覚的なデバッグが少し難しくなります。解決策はスクロールをする必要があったこと! 一度この問題を知ってしまえば、次からはすぐに気づくでしょう。
次に紹介する問題は本当に厄介でした。アプリを多言語対応にする場合は注意が必要です。現在、Flutterはまだ若い技術であり、予期しないバグやベータ段階のパッケージ、ネイティブで自分で実装しなければならない機能などが存在します。私たちの問題は、言語用のJSONファイルが一定以上の文字数になると、ウィジェットテストで全く動作しなくなったことです。どの要素も見つかりませんでした。解決策は? 値の代わりにキーを使うことでした。納得はしていませんが、今のところこれが動く方法でした。
私たちが挙げたような問題に出会うかもしれませんが、必ず解決策は見つかるはずです。最後にもう一つのテーマを紹介します。
アプリケーション、パッケージ、プラグイン
おそらく多くの人はアプリケーションを作るでしょうが、私たちはすべて試してみました。プロジェクトを作成するとき、3つのタイプから選べます:通常のアプリケーション、機能を提供するパッケージ、またはプラグインです。プラグインはパッケージとほぼ同じですが、違いはパッケージにはネイティブコードがないことです。実際、パッケージを作成するとAndroidとiOSのフォルダは含まれませんが、プラグインにはネイティブコードが含まれます。
結論
私たちの学習曲線は急上昇でした。最初は少し戸惑うかもしれませんが、すぐに慣れます。アプリケーション、パッケージ、プラグインを作る機会があり、機能の実装やテスト作成でいくつか問題がありましたが、それはFlutterコミュニティがまだ若いからです。これから多くの人がFlutterのコミュニティに加わることでしょう。
試してみたくなりませんか?
この記事は、Lean Mindのブログでスペイン語で公開された記事「Flutter, ¡una maravilla! ¿o... no?」の翻訳です。Noemi Delgadoとの共著です。本バージョンはAIによって翻訳されたものですので、文章の一貫性が損なわれていたり、不自然な箇所があった場合はご了承ください。ご理解いただき、ありがとうございます。
