hole」カテゴリーアーカイブ

いわゆる日記

最近やっていること: Flutter日記

こんにちは。2018年は一度も更新がなく気づくと2019年。早いですね。うらぴこさん元気ですか。

最近は、FlutterというiOS/Android向けにアプリを作ることが出来るフレームワークに興味がありましてちょこちょこと触っています。

https://flutter.dev/

これは練習で書いているおもちゃアプリ: https://github.com/ymegane/TapTapTap2

(タップやドラッグしたところに円が出てさーっと消えていくだけのアプリなんだけど、
基本的な画面の作りや座標系、非同期処理、アニメーションまで実現しないと実は書けないので、練習で書くのに割と適してるんですよ : )

FlutterはGoogleが提供していて、Fuchsiaという次期モバイルOSなんだかいつものGoogle社内競争の産物なのかわからない謎の新OS向けアプリケーションのSDKとしても知られていて、もしも今後Fuchsiaがメジャーになることがあれば大勝利かもしれません。

FlutterはDart言語で開発するんですが、これも既存の経験がある言語に比べて独特というわけでもなく、すんなり書き始めることができています。

https://www.dartlang.org/guides/language/language-tour


さらに開発環境もSDKとVSCodeとVSCode PluginがあればOKというお手軽さ。
FormatterやLinter、TestSuiteからパッケージ管理、パフォーマンス系のデバッグツールまで一通り揃っていて、さすがGoogleやでという感じです。(一部はDartのエコシステムです)

難点は、宣言的に記述するUIのうち、PaddingやOpacityなんかもView(FlutterではWidget)のプロパティではなく一つのWidgetとして宣言する必要がある点でしょう。

これはつまりどんなWidgetが存在するかあらかじめ知っておく必要があるということです。
そうでないと製品レベルのUIを組み上げることは難しいと思います。
しばらく書いていれば常套手段が溜まってきてそれなりにスラスラ書けるようになると思いますが、最初は途方に暮れましたし、今でも発見があります。

アニメーションもちょっと直感的じゃないと思うけど、これは慣れの問題じゃないかと思います。

また、これから始めてみようという方に注意点があるとすれば、結局iOS, Androidの知識も必要ということです。

少なくともリリースビルドするときには各OSのビルド設定を直接行う必要がありますし、既存のライブラリにない各OSの機能を使いたければ、Pluginなり各OS向けの連携コードを実装する必要があります(よく使いたくものは大体あります。)。

ちょっとビルドが通らないみたいなときに、Xcode/Android Studioを開いて設定を確認すれば問題が解消することもあります。

これはReactNativeなんかもそうなので、クロスプラットフォーム開発での常識かもしれません。

でも、そんなことは些細なことで、ここまで手軽にクロスプラットフォームなアプリ開発ができる環境が用意されていることは、素直に喜んでいいと思います。
公式のドキュメントも割と充実していますし。

そんなわけで、今年はしばらくFlutterをメインに触っていきたいな〜という気持ちです。

うらぴこさんの思い出

この記事は うらぴこAdvent calendar 20日目の記事です。

初対面のうらぴこさん

いまの会社に入った当時、うらぴこさんは、インドネシア人です。と自己紹介してくれた。
純真無垢な僕は、一瞬信じてしまった。
本名を知るのは、もう少し先の話だった。

真の初対面

入社してしばらく経って、GitHubを眺めていたら、うらぴこさんのアイコンに見覚えがあることに気がついた。

そこで今回、記事にするにあたって、いつどこで見たことがあるのか、うらぴこさんのリポジトリとブログを漁ってみたところ、以下の記事が怪しそうだった。

AndroidのWebViewにて、mixiにログインするためのソース – urapico’s diary

実際にいつこの記事を見たのかは定かではないが、
2010年といえば、ぼくはAndroid開発を始めて2年めくらい。
Webサービスにログインする方法を色々さがしていた時にたどり着いたのかもしれない。

世の中にはこうやって自分で調べて記事にしている人がいるんだなぁと、
こなみかんを感じたような気がする。

おしまい

こうやって、巡り巡って同僚になったりするんだなぁと人生を感じるます。
うらぴこさんForever。