Redux(react-redux)における適切な配列要素の更新
2021年8月23日…
今回、一通りDart, Flutterの公式の資料を読み込み、最初のアプリケーションをビルドし、実行までを行った。ざっと、以降の内容をまとめた感想だと、過去開発経験のあるReact Nativeよりもとっつきやすそうというのが第一印象だった。開発環境の構築のサポートに気を遣っているのか、環境構築のステップ数も短く、資料のガイドも適切で迷うことがなくアプリケーションを実行まで至った、というのが好印象の要因だろう。
React Nativeは対象とする実行環境向けのネイティブコードを出力する、というのではなく、あくまでJavaScriptコードからOSネイティブAPIをコールするという仕組みで動作している。一方、Dartは対象とする実行環境向けのネイティブコードを出力する点で、アプリケーションの動作速度や実行時の安定性に優位性が期待できるのではないかと思っている。
Dartは公式サイトで、『Dart is a client-optimized language for fast apps on any platform』と、明確に言語の方向性がクロスプラットフォームを意識したものであることを宣言している。一方で、React NativeやXamarinなど、ある既存のプログラミング言語においてクロスプラットフォーム開発環境を提供する、といったものはあったが、私が知る限りプログラミング言語そのものがクロスプラットフォーム環境を完全に意識して作られている、といったものはない(※Dartのこれまでの紆余曲折の歴史から、今ではたまたまそうなったというツッコミはそれはそれで…)。Dartのプログラミング言語としての方向性がそのままクロスプラットフォーム開発環境なので、これまでクロスプラットフォーム開発環境は流行り廃りの激しい歴史があったが、ソフトウェアとしての寿命が少しは…長そうだと多少の期待が持てる。
GoogleはAndroid OSの開発元であり、また洗練されたUIデザインのガイドライン、Material Designも提唱している。FlutterフレームワークはMaterial DesignのUIキットを内包しており、世界的に実績のある標準的なUIが標準的に提供されている点が心強い。
Dart, Flutterの公式資料は、共に多くもなく、少なくもなく、初見の開発者が見た時に知りたい情報にアクセスしやすい印象があった。この手の比較的新しかったたり、一風変わった技術は、機能があっても資料がなくて困るシチュエーションはあり得るので、公式資料の充実は嬉しいポイントである。
Dartは言語の方針的に、クロスプラットフォームです!を主張する以上、さすがにある程度モバイルOSへのブリッジAPIがサポートされているものかと思ったが、実際にAPIを調べてみるとそうでもなかった。自分が私生活でよく使っていそうなモバイルOSの機能で、カメラ, マイク, GPS, Bluetoothを対象にDart公式のライブラリとしてのサポート状況を調べてみたところ、唯一、カメラは公式から提供されていたくらいで、他に関しては外部の開発者の貢献によるものだった。
Flutter環境にて、ブリッジされていないAPIがあった場合、MethodChannel class
を使用することで、SwiftやKotklinその他のコードと疎通できるようだ。純粋なDartにおいては、未調査につき不明。
DartもFlutterも、合わせても数ステップ以内だったので、これはかなり短いほうだろう。環境によって、インストール済みの依存のあるツールも異なるが、これも後述の $ flutter doctor
を見て、試行すれば良く、だいたい10ステップ以内程度で完了するだろう。
このコマンドを実行すると、Flutter環境を動作させるために必要なツールが実行可能かをチェックしてくれる。実行できない場合、推奨する実行方法を教えてくれる。環境構築の補助やトラブルを想定したツールだと思うが、これが環境になれてない初心者にはとても欲しいものだったりする。実際、iOSの実行環境のみで良かったので、このコマンドを何度か実行し、iOSの実行環境のみを今回は構築した。
これは見出しのそのままで、環境構築についてはDart, Flutterともに公式サイトしか参照することなく、環境構築を完了できた。React Native(※2021年1月2日現在、React Nativeの最新バージョンv0.63)は現在どうなっているのだろう、と環境構築の資料を確認したところ、現在ではReact Nativeにおいても丁寧に資料が整備されていた。
あとは、Flutterの資料で地味に良いかったのが、異なる開発環境ごと(VScodeまたはAndroid Studio)にアプリケーションの実行手順が示されており、分かりやすかった(GUI上のどのメニューのどのボタンを押す、まで書いてあるので初学者にも優しい)。
Dartは、言語としてクロスプラットフォーム環境を主張しているにも関わらず、モバイルOSにおけるブリッジAPIが少ないなど、気になる点はあるものの、少なくともこの手の技術としては、開発環境の構築手順が明瞭であり、またトラブル時の資料も公式サイトや公式提供のコマンドラインツールでガイドが適切に示されているため、初学者がとっつきやすそうな環境という印象を持った(※2021年1月2日現在、React Nativeの最新バージョンv0.63の資料も確認したが、DartやFlutterのほうが資料がより見やすいように思えた)。
今回は、Dart, Flutterに関する技術調査と簡単なハンズオンにとどまったが、今後Flutterを本格的に使用する機会がありそうなので、あらためて実際に通信するモバイルアプリを組んでみてから感想を残したいと思う。
プログラムを書きながらTranceを聴くのが良いですね。みなさんも聴いたほうがいいですよ、Trance。EDMよりハードトランスでしょ。
Discussion about this post