kobakei's blog

プログラミングの話や技術系イベントの話をゆるく書くブログです

DroidKaigi 2017に参加した感想

聞いたセッション

1日目

  • 逆引き マテリアル デザイン
  • Android Security 最前線!!
  • Androidリアルタイム通信アプリ作成Tips
  • Data Bindingで開発を気持ちよくしよう
  • 実践アニメーション
  • オフラインファーストなアプリケーション開発
  • React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか
  • What’s New in RxJava 2.0

2日目

  • Android ORMの選び方
  • 未熟なチーム開発
  • Data Bindingで実現するMVVM Architecture
  • 4年続くアプリにおけるチーム開発
  • コマンドなしでぼくはAndroid開発できない話
  • Fireside Chat
  • テスト0から目指すクラッシュフリー率99%

感想

結論:とてもよかった

Androidエンジニアこんなにいたんだ

過去最多の参加者ということで、かなり広い会場に人がぎっしりいて「日本にこんなにAndroidエンジニアいたのか」という驚き。最近どこの会社もAndroidエンジニア足りてないって話を聞きますけどみんな普段どこにいるんですかね。。。

セッションのアジェンダをもうちょっと詳しく/正確にして欲しい

セッションについては、公式サイト/アプリで見るアジェンダを見て予想した内容と、実際に話してる内容に結構ずれがあったのが気になりました。例えばHogeというワードがアジェンダには入ってないのにトークではHogeを使う前提で話が進む、みたいな。同じ時間帯に見たいセッションがかぶることが多く、どのセッションを見るべきかを判断するためにもこの辺の情報はできるだけ正確にして欲しいなーという印象。

MVVM + data binding

個人的には最近MVVM+data bindingに取り組んでいることもあって、「Data Bindingで実現するMVVM Architecture」のセッションが一番期待していました。セッション本体はどちらかというとMVVM初めてやる人向けかなーという感想でしたが、Office Hourでの会話がとても濃く、こういうのはネットでスライドみるだけじゃなくて実際に参加してみないと体験できないなと思いました。このセッション立ち見がかなりいたので、もっと大きい部屋でもよかったんじゃないですかね。部屋割りどうやって決めてるのか知らないけど。

もっとこんなのが聞きたい

来年に期待。

  • 設計やデザインパターンを適用として、詰まったところ&どうやって解決したか、みたいな話
  • レガシーなアプリをモダンな設計にリプレースした話
  • あまり有名じゃないけど実はおすすめなライブラリの話
  • 泥臭い話

来年は登壇したい

あと、今年CFP応募してみたんですが、残念ながらRejectされた*1ので普通に聞くだけでの参加でした。 来年こそはスピーカーとして参加したいと思います。

*1:RejectConやりたい

Goで匿名ダイアリーもどきを作ってみた

完全に趣味ですが、Goに入門しました。 匿名ダイアリーもどきのアプリケーションを作るとこまでできたので、ここまでに学んだことをメモ。 http://golang-jp.org/doc/に十分まとまっていますがね。

作ったアプリ github.com

※環境はOSXです

インストール

brewでさくっと入れました。執筆時点のバージョンは1.7.4.

brew install go

Goは$GOPATHという環境変数ワークスペースを指定します。また、$GOPATH/binにバイナリが配置されますので、.bash_profileに以下を追加。

export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"

コーディングスタイル

goは公式のスタイルが厳格に決まっていて、gofmtなるフォーマットツールも付属しているらしい。

以下のコマンド一発でフォーマットしてくれるので、git hookとかで強制的にフォーマットするとよさそう。

gofmt -w .

パッケージマネージャ

Goではライブラリはワークスペースにgetしてきたものが使われるんですが、複数のマシンで開発するときはやっぱバージョン固定したいですよね。

パッケージマネージャは色々ありますが、glideかgovendorがナウい感じ? gom, godepなどもあるみたいだけど、後述するEchoではglideとgovendorが紹介されてました。

特に強い理由はないけど、なんとなく今メジャーっぽいというだけでglideを採用。 バージョンをyamlで管理してくれます。

brew install glide

glide init
glide install
glide get github.com/hogehoge/fugafuga

WAF

RubyにおけるRailsのような、とりあえずこれ使おう的なものはまだない印象。そもそも重量級フレームワークとかを使って黒魔術ゴリゴリで書く言語ではなさそう。

  • Echo
  • Gin
  • Revel

など色々あります。開発の活発さとドキュメントの充実具合で、Echoを採用しました。

テンプレートエンジン

「標準のhtml/templateパッケージで十分」とどこかで見かけたので、これしか試してない。

ORM

WAFに同じく、あんまりGoだと使わないのかなー。デファクトスタンダードなものはなさそう。

  • gorm
  • gorp

などがあり、gormを採用しました。この選択はあまり自信ないです。

テスト

標準のtestingパッケージを使って書けばOK

所感

  • 「今風なC++」を書いている感覚
  • コンパイル言語でwebアプリを書くの初めてなので新鮮
    • 文法エラーとかビルド時に教えてくれて嬉しい
    • ちょっとした修正でもビルドが走るからtry and errorに時間かかってる。auto reload的なのあるのかな?
  • 言語仕様が引き算で考えられていて覚えやすい
  • 並列処理のgoroutineが便利らしいけど、まだ触ってないので触りたい