なぜWebアプリを作ることになったか
- Androidアプリ内でオープンソースライセンスを表示するためのUIが必要だった
- アプリとブラウザ両方からアクセスできるようにしたかった
- 規模が小さいため、Webアプリ開発の勉強としてちょうどよいので、作ることにした
- GAE/GoでAPIを作る機会も多いので、最低限の管理コンソール(Swagger UI以外の)が作れたほうがいいだろう、きっと。
アプリ内容
- 2画面構成
- ソフトウェア名を一覧で表示する画面
- ライセンステキストを表示する詳細画面
- ライセンステキストはFirebaseから取得する
- たったこれだけ
- これだけで勉強含めて1週間かかった
Angular Dartを選んだ理由
AngularDartの情報量
- AngularJSと比べれば、情報は天と地ほどに少ない
- 参考にしようと思って、日本語書籍を探したが、0である
- JS版はそれなりにある
- 書籍があるということは、それなりに需要を見込めているのであろう
- 公式チュートリアルも日本語版が用意されていない
- 参考にしようと思って、日本語書籍を探したが、0である
将来性は?わざわざAngularDartを覚える意味は?
- Dartは最近Googleのお気に入りだ
- そう、あの先進的なGoogle WaveをつくったGoogleが最近お気に入りなのだ
AngularJSにさわる
- 開発時点で、Webアプリ開発スキルはほぼ無い
- HTMLはホームページビルダーで書いたことあります!!
- マーキータグが好きでした!!
- AngularDartをやる前に、AngularJSのチュートリアルをやる
- 1〜2日程度。
- 両方をやることで、差分や考え方の違いを知る
- それがわかれば、AngularJSの情報から差分を考えて自分でなんとかできるだろう
- 実際、開発中はAngularJSの情報を参照することが多かった
- むしろ「JSの情報でも英語でもロシア語でもなんでもいいからとりあえず情報でてこいや」っていう気分になれる
AndroidアプリエンジニアからみたAngularDartあれこれ
開発環境
- IntelliJ Idea(or WebStormとかいろいろ)を使える
- Android Studioに慣れていれば、あんまり困らない
- ブレークポイントで止まる
- dart2jsされているので、完全なマッピングはされていない
- 変数ウォッチはちょっとしにくい
- IntelliJからデバッガ接続可能
HTMLとComponentの関係性
依存管理
JavaScriptとの親和性
- JSのインターフェースを呼び出せる
- いくつかのライブラリはラッパーを用意している
- Firebaseも用意されているので、すぐに使える
- つまり超気合入れればKotlinで書いたものをJS出力してAngularDartから呼び出せるのである
- その気合がどの程度実るかはわからないけど。
Material Designの組み込みやすさ
- カタログが用意されている
- https://dart-lang.github.io/angular_components/
- URLをみるに、標準でAngularとコイツラを推していきたい模様
- JS版とselectorが異なるので、参考書からは適宜読み替える
- SCSSという謎の物体でデザインを変える
UnitTest
- テストが遅い
- アセット読み込みとかしづらい
CI
- CircleCIで流した
- UnitTestでchromeブラウザが必要っぽいので、google/dart イメージだけだt
webdev
テストが完結しなかった - CI中に別途インストールしたりキャッシュしたり気合い入れてするくらいなら、カスタムイメージを作ったほうが良いかも
- ビルドチェックと標準フォーマッタ
dartfmt
でフォーマットチェックはやれた
Deploy
- webdevビルドするとjsとかの成果物が
/build
配下に配置される - 要らんファイルもあるので、必要なファイルを拾ってGAEにDeployする
今後
- まだ触れていない機能がたくさんある
- しばらくはGoogleからWaveされずに元気にメンテされていてください