eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

Androidアプリエンジニアが触れたAngularDartの所感

なぜWebアプリを作ることになったか

  • Androidアプリ内でオープンソースライセンスを表示するためのUIが必要だった
  • アプリとブラウザ両方からアクセスできるようにしたかった
  • 規模が小さいため、Webアプリ開発の勉強としてちょうどよいので、作ることにした
    • GAE/GoでAPIを作る機会も多いので、最低限の管理コンソール(Swagger UI以外の)が作れたほうがいいだろう、きっと。

アプリ内容

  • 2画面構成
    • ソフトウェア名を一覧で表示する画面
    • ライセンステキストを表示する詳細画面
  • ライセンステキストはFirebaseから取得する
  • たったこれだけ
    • これだけで勉強含めて1週間かかった

Angular Dartを選んだ理由

  • 前職ではWebアプリ開発にAngularJSを使っていた
  • ココ最近、Flutterを使っている
  • 以上の悪魔合体により、AngularDartを使うことにした

AngularDartの情報量

  • AngularJSと比べれば、情報は天と地ほどに少ない
    • 参考にしようと思って、日本語書籍を探したが、0である
      • JS版はそれなりにある
      • 書籍があるということは、それなりに需要を見込めているのであろう
    • 公式チュートリアルも日本語版が用意されていない

将来性は?わざわざ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からデバッガ接続可能
    • 公式はChrome Dev Console上でみる方法を案内してる
    • IDEから観たほうが楽

HTMLとComponentの関係性

  • プロジェクトを作ると勝手に作られてる
  • HTMLはレイアウトXMLにあたる
  • ComponentはAndroid ArchitectureのViewModelにあたる

依存管理

  • pubspec.yamlに書くとつながる
  • package.jsonよりは楽
    • コメント行 # が使えるが人類に優しい

JavaScriptとの親和性

  • JSのインターフェースを呼び出せる
    • いくつかのライブラリはラッパーを用意している
    • Firebaseも用意されているので、すぐに使える
  • つまり超気合入れればKotlinで書いたものをJS出力してAngularDartから呼び出せるのである
    • その気合がどの程度実るかはわからないけど。

Material Designの組み込みやすさ

UnitTest

  • テストが遅い
  • アセット読み込みとかしづらい
    • index.htmlと同一ディレクトリにfirebase.jsonを置いといて、UnitTest時に読み込むとかやりたいけど、方法がまだわからない
    • テストの情報が少ない

CI

  • CircleCIで流した
  • UnitTestでchromeブラウザが必要っぽいので、google/dart イメージだけだt webdev テストが完結しなかった
  • CI中に別途インストールしたりキャッシュしたり気合い入れてするくらいなら、カスタムイメージを作ったほうが良いかも
  • ビルドチェックと標準フォーマッタ dartfmtフォーマットチェックはやれた

Deploy

  • webdevビルドするとjsとかの成果物が /build 配下に配置される
  • 要らんファイルもあるので、必要なファイルを拾ってGAEにDeployする

今後

  • まだ触れていない機能がたくさんある
  • しばらくはGoogleからWaveされずに元気にメンテされていてください