Android アプリの設計についての本を執筆します
技術書のクラウドファンディングサービスPEAKSで、Androidの設計について本を書くことになりました。
自分は第5章 OSSにおける設計者の役割を担当し、DroidKaigi2017アプリの設計について書きます。
今回は執筆する側なんですが、実は自分はこういう本を即購入することはほとんどなくて、色んな情報を集めてから購入を判断するタイプなんですよね。なので、自分自身が買いたくなるような情報を少しまとめておこうと思います。
活きた設計の意図が説明される
最近はGitHubにも設計のサンプルとなるリポジトリもたくさんあります。しかしそれらのサンプルは簡単であるが故に、設計そのものの意図を読み取りにくいという難点があります。
コードを読んでもなぜクラスを分けているのかわからず冗長に感じたり、ServiceやNotificationなどサンプルにない部分をどう扱えばいいのかわからなかったりすることも多いのではないでしょうか。
「なんでこんな風に作ってるんだろう…?」「自分のアプリではこの作りを真似していいのかな…?」そんな疑問を持ったことがある人には、今回の本はとても役立つものになるのではないかと思います。
第2部は、単純なサンプルではなく実際に著者の方々が作り上げたアプリを題材になっています。その設計で作ることで何を解決しようとしているのか、何が嬉しいのか、そういった設計の意図が説明される章になるはずです。
もちろん、それがそのまま皆さんの実務に適用できるかはわかりません。しかし、様々なGitHubリポジトリをひたすら見て設計の意図を読み取っていくよりも効率よく設計のエッセンスを吸収できるのではないかと思います。
著者と設計の議論ができる
これは正直 楽しみな気持ちと不安な気持ちが30:70くらいなんですが、購入者の皆さんから設計に関する課題を伺って、著者陣がこうしたらどうかという考えをぶつけ議論して作り上げる 「みんなの広場」という章があります。クラウドファンディングならではのエッジの効いた試みですね。
自分自身、アプリの設計はこうすればOK!という明確な指針が固まっているわけではなく、アプリを作るたびに試行錯誤という状態です。実際、DroidKaigi2016と2017のアプリでは設計が変わっています。
新しいアプリを作ったりブログに考えをまとめたりするたびに「ここはああしておけばよかった」「ここをこうしておいたの俺天才」といった具合に情報がアップデートされていくんですよね。もしかしたら、執筆が終わった段階ではさらによい考えを思いついている、ということすらあるかもしれません。そういう意味では、執筆中に皆さんと議論ができるというのは常に最新の考えをぶつけ合ういい機会とも言えます。特に、まわりに設計について話せる人がいなくて寂しい思いをしている方にはいいきっかけになるかもしれません。
設計は明確な正解がないことも多いので、取捨選択の説明が最も重要になります。考えがまとまらないと説明も的を得ないものになってしまうため、この試みはわりとプレッシャーです。がんばります。
自分の章について
自分の担当する章のDroidKaigi2017アプリの設計について少し触れておきます。
設計は考えることを減らすためにあるという考えを持っているので、基本的にはその設計にすることで何を考えなくて済むようになるのかという説明を書いていく予定です。例えば、パッケージ構成をキッチリ決めるのは新しく機能を作る時にどこに何のクラスを作ればいいか考えなくてもいいようにしたいからです。
それに加えて、設計時の取捨選択の話も入れていきたいと思っています。例えば、DroidKaigiアプリの場合、『セッション一覧』画面は比較的複雑ですが、『アプリについて』画面はとてもシンプルです。それらを共存しようとした時に生じる設計の冗長さに対して、どういう指針で設計を決めたのかといった話にも触れる予定です。
と言っても、実はまだ考えがまとまっていないところも多いです。DaggerやDataBindingなどのライブラリについてどこまで触れるべきかというのも悩ましいところですね。実は今回のクラウドファンディングでは 執筆完了前の書籍を書き上がった章から閲覧できる という特典もあるので、皆さんからフィードバックをもらいながらブラッシュアップしていけるとありがたいです。
自分自身が知りたいと思う部分について、なるべく丁寧に書いていく所存です。
豪華著者陣について
他の著者の方々は日頃から知識をアウトプットしている人たちばかりです。 最後に、自分以外の著者の方々を紹介して締めたいと思います。
日高 正博さん
ひつじさん。DroidKaigi、TechBooster、その他講演を業務と並行してこなすバイタリティあふれる方です。触れる情報量に比例して知識量が半端じゃなく、さらにTechBoosterでは編集者も兼ねているのでとても説明が上手です。実は、自分が最初にひつじさんを認識したのは、自分のブログ第一本目のMVP設計に関する記事に対してTwitterで反応してくれたことがきっかけだったりします。今回も勉強させてもらいます。
八木 俊広さん
やぎさん。とにかく新しいことを片っ端から試してアウトプットしている方です。自分はAndroidを始めた頃からやぎさんのブログを読んで参考にしていました。設計は経験と手数で磨かれる部分もあるので、やぎさんの新しいVIPERアーキテクチャの章を読むのを楽しみにしています。
藤原 聖さん
ふじわらさん。Architecture Componentsが公開されてすぐに触ってみてQiitaにまとめていて、とても参考になりました。勉強会で会った時にオフライン対応の設計の話を楽しそうにしていたのが印象的です。 CyberAgentのクオリティの高いアプリでも採用されているというFluxアーキテクチャの章は個人的に一番楽しみにしています。まさに活きた設計の話になりそうです。
著者の1人として参加するのはプレッシャーですが、購入していただいた皆さんの期待を超えられるようがんばります。興味があれば買ってね。
現場からは以上です。