ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

Androidアプリ設計の技術書をクラウドファンディングで執筆しました

本を書きました

2017年7月に投稿したブログポストの続きです。Androidアプリの設計パターンを紹介しようとおもって書き始めた技術書のクラウドファンディングです。本日2018年1月31日に一般販売が始まりました!

 

Android アプリ設計パターン入門

Android アプリ設計パターン入門

  • 著者:日高 正博,小西裕介,藤原聖,吉岡 毅,今井 智章,
  • 製本版,電子版
  • PEAKSで購入する

本の内容

本書はアプリの設計を知り、考えるための議論に使える本として執筆しました。書きたいことを表現するためになんども書き直し、完成まで死ぬほど時間がかかった技術書です(2017年10月~12月の余暇のほとんどを費やした)。

ちなみに私以外の執筆者の感想はこちらから読めます。あわせてどうぞ。

tsuyogoro.hatenablog.com

tomoima525.hatenablog.com

実際、この本をよんで設計が出来るようになるかというと胸を張って「間違いなくはじめの一歩を踏み出せる」一冊と答えます。実際には読んでもあなたのアプリは完成しないかもしれないし、失敗するかもしれません。でも右も左も分からないということはなくなります。もちろん大成功するかもしれませんがそれはきっとあなたの力です。

本書ではアーキテクチャを学び、議論する前提を組み立てることを大事にしていて、結局のところ、設計とは何かを大いに考えさせる技術書になりました。「設計を完全に理解しているか」と問いかけられると誰もが不安を覚えると思います。特定の分野に限って考えても、とてもとても難しいことです。

アプリの設計には開発者の理念や思想が反映されているべきで、それらはアプリの要件や開発チームの練度・性質で千差万別の形があります。方法論だけをみて設計の評価は出来ないし、実装だけをみて評価することもまた出来ません。

このような事情に悩んだ結果、本書では実際の開発事例をみながら議論をすすめる構成にしています。実際にあったことを丁寧に解説し、手法と実装の両面からアプリ設計、アーキテクチャ追体験できます。

第1部ではGoogleアーキテクチャサンプルリポジトリをベースに現代のAndroidアプリの設計手法の基礎を学べます。MVPやMVVMが登場した背景からモバイル分野での適用を知れます。ライフサイクルなどモバイル特有の事情についても触れています。

第2部では、サイバーエージェント、メルカリ、そしてOSSとしてのDroidKaigi 2017のカンファレンスアプリを取り上げ、いろんな設計を成り立ちから紹介しています。なぜ選んだのか、どうしてこうなったのか、というコードからは分からない部分と実際やってみてどうだったか、という評価まで含めて解説しています。本の内容として失敗したことを書くのは抵抗がありましたが、良いところも悪いところも包み隠さず知ることが一番だと思い「ここは失敗だった」「当時は乗り気じゃなかったが、振り返ってみると良策だった」など忌憚のない意見を書いてもらっています。MVPやMVVM、Flux、そしてReact Nativeと幅広く事例を集められたと自負しています。

第3部は未来の話です。Android Architecture Componentsを取り上げ、どのように使うべきか議論を進めています。

Androidアプリの設計は、まだまだ道半ばでようやく基礎が整ったに過ぎません。2018年をみても設計手法にアップデートがあるはずです。たとえばDroidKaigi 2018のリポジトリには今すぐ使えるKotlinのアプリ開発の知見が集まっています。本書はそのようなこれからの設計を議論する基礎になれば、という思いを込めて作りました。ぜひ手にとって見てください。 

色々な意見をお待ちしています。「いやー、これはきつい」「ここの章は参考になるな」「この視点はなかった」など何気ない一言がきっかけで良い設計に変わるかも。

クラウドファンディングでよかったこと・わるかったこと

まず出資者のみなさんの応援があったことで制作の原資を獲得できました。ありがとうございました。当初見込んでいた良いところはたくさん提供できる(今回、個人ではほぼありえない数千冊部以上を印刷できました)ことで文句なしのメリットNo.1です。

意識してない中で嬉しかったところは、執筆の最中にも応援してもらったことがめちゃくちゃ励みになりました。通常、執筆というのは自分との闘いで書籍が販売されるまでは孤独なものです。今回は書いてることがみんな知ってたのでいろいろな人から「がんばってください」「期待してます」「無理しないで」と声をかけてもらえ、モチベーションに繋がりました。

またα版やβ版というかたちで意見を交わせたのもよかったです。自分がここはどうだろうな?と悩んだ部分は読者からの的確な指摘があって、やっぱり気持ちが伝わるんだなということを再確認できました(見直しつつ妥協なく書きました)。プロの編集者の方に校正してもらいながら、クオリティを上げられた点もよかったです。

他方でクラウドファンディング達成後の書籍販売ルートは基本的に口コミと手売りに頼ることになります。PEAKSはポッとでてきた出版社にすぎず、取次経由でたくさんの書店にならべることはできません。発売日に全国の書店に並ぶことはやっぱりスゴいことなんです。

ですので、この本をよんで良い本だと感じたら是非、隣の開発者に教えてあげてください。著者一同よろこびます。クラウドファンディング、同人誌のような著者と読者が近い形態はフィードバックを得やすく、とても好きな雰囲気を感じてます。

Android アプリ設計パターン入門

Android アプリ設計パターン入門

  • 著者:日高 正博,小西裕介,藤原聖,吉岡 毅,今井 智章,
  • 製本版,電子版
  • PEAKSで購入する

さいごに

実はクラウドファンディングであるメリットを最大限活かして本の表紙や紙質、フォントサイズやレイアウト、細かい点までmhidaka(私です)がアレコレと口をだしました(PEAKSの方々に大変迷惑をかけながら!レイアウトチェックや紙の指定のために事務所までお邪魔しました)。更に電子書籍も2種類用意してもらい、片方はPDFのしおりやコピペが完璧にできるもの、もう片方は書籍そのままに美しいクオリティのもの、と2本立てです。これも執念というか趣味の領域ですね。どちらも欲しい人が居そうなので両方つくって提供しちゃうか、という感じです。

f:id:hdk_embedded:20180131114827p:plain

電子版(機能重視)

f:id:hdk_embedded:20180131115217p:plain

電子版(紙面レイアウト)

ただいまリフロー版(EPUB)も試しているのでKindleとかで固定レイアウト以外でよみたいよ、という人がいたらお問い合わせください。

ここから番宣です。一般販売記念キャンペーンで最初のロットは割引価格の2800円で提供中です。また本書の出資者が紹介した場合、紹介プログラムにより販売価格の30%が出資者に還元されます。全国津々浦々の書店に置けないのでチャレンジしてみましょう、となった新しい取り組みです。なんか面白そうなので一肌脱ぐぜ!という方はぜひ試してみて下さい。

Android アプリ設計パターン入門

Android アプリ設計パターン入門

  • 著者:日高 正博,小西裕介,藤原聖,吉岡 毅,今井 智章,
  • 製本版,電子版
  • PEAKSで購入する

 

謝辞

まずはじめに、クラウドファンディングの出資者のみなさん。出資ありがとうございます。なによりの励みとなりました。

そして、サイバーエージェントの社員のみなさん、メルカリの社員のみなさん、DroidKaigi OSSアプリのコントリビュータのみなさん、みなさんの知見が書籍になりました。ありがとうございます。

PEAKS出版のみなさん。本書を制作するにあたり力強いサポートをいただきました。ありがとうございます。

著者の小西裕介さん、藤原聖さん、吉岡 毅さん、今井 智章さん。このような荒唐無稽な執筆を快諾いただき、ありがとうございます。いつも無茶をいう私を笑顔で受け入れてくれ、開発に関する知見を惜しみなく提供くださいました。

八木さん、今回は忙しくてだめだったけどまた一緒に書こうね。

TechBoosterに寄稿いただいてる著者のみなさん。みてる?がんばったよ!冬コミとか技術書典とかあまり動けなくてごめんね。いい本が出来たよ!また一緒にいい本つくろうな(Androidモダンプログラミング ~Kotlin&Gradle実践入門~の電子版やらなきゃ…)。

本音

頼む!ひつじのリンクからたくさん売れてくれ!!!

Androidアプリ設計の技術書をクラウドファンディングで執筆します

本を書きます!

技術書のクラウドファンディングサービス「PEAKS」でプログラミング解説書「Android アプリ設計パターン入門」のファンディングをはじめました。みなさんの応援が、書籍を作る原資になります。よろしくおねがいします

Android アプリ設計パターン入門」

f:id:hdk_embedded:20170703093536j:plain

PEAKS(ピークス)|日高 正博 小西裕介 藤原聖 八木 俊広 - TechBoosterの新刊!「Android アプリ設計パターン入門」執筆プロジェクト

本の内容はリンク先から「プロジェクト概要」に思いの丈を書き綴りました。

アプリの設計を知り、考えるための議論に使える本を目指してます。プログラミングにおいて設計は重要な要素ですが、それ自体が目的ではありません。ソースコードを通じて何が実現できるか、という視点で良い選択(プロジェクトごと異なる解があるはず)を選べるようになりたいという気持ちです。特に第2部では生きたプロジェクトをテーマにプロダクトコードをベースに設計についてみていけるといいな、と思ってます。

クラウドファンディングの理由

本書がクラウドファンディングのカタチをとったのはいくつか理由があるのですが、ひとつは紙の本を作るのに、ページ数に比例してお金がかかるということです。部数を増やせば単価は安くなりますが、過度な発注での在庫リスクのせめぎ合いに悩まされます(本書は完成時250ページ以上!)。

同人誌(TechBoosterのBoothにmhidakaがいままで作ってきた本があるよ!)として作るのには「Androidアプリ設計を自由に議論するのにいささか余白が足りなさそう」&「せっかくだからみんなの課題を聞いてみたい」という気持ちもありました。そこで第10章は

第10章 みんなの広場

出資者の設計上の課題をきいて、一問一答形式で案を出すコーナー

というAndroid開発者が抱える設計の不安を共有し、よりよりプログラミングについて考えられれば、というコーナーにしています。めちゃくちゃ時間がかかる章になりそうですが、色んな意見を聞く機会になるし、クラウドファンディングぽさを楽しんほしいな、と思います。

著者(執筆に巻き込まれた人)紹介!

mhidakaが急に訪ねてどうしてもあなたの記事が読みたい、と無理を言って声をかけたひとびとです。それぞれが沢山アウトプットをだしているひとたちで、一線級のエンジニアです!

小西裕介さん(Konifar)

KonifarさんはQuipperで働くかたわらDroidKaigiアプリをOSSアプリとして開発するなど無限のバイタリティ(!)とベースにある技術的な裏付けがすごいドラえもんアイコンの人です。ブログでは独自の視点からハッと気づかせるような記事が多く、担当を予定してる「第5章 OSSにおける設計者の役割」も今から楽しみです。

藤原聖さん

Shibuya.apkやサイバーエージェントのCA.*のオーガナイザー。めっちゃたくさんイベントをホストしています。本書ではFluxアーキテクチャArchitecture Componentsを担当してます。アーキテクチャコンポーネントGoogle I/O 2017で発表されたばかりの注目度Maxなライブラリです。一方、全然こなれてないので使い方そのものについて議論していき、便利な使い方を提示できればいいな、と担当をお願いしました!

八木 俊広さん

アーキテクチャおじさん。クックパットに居た頃から尋常じゃない仕事量について風のうわさが耳に入ってきました。TechBoosterでもKotlinの記事などエッジなところを書いてもらっていて、八木さんの知識でしか書けないなー、という解説記事がちらほら(たとえばコミケで一緒に作った本では第5章 詳説Kotlin 1.1 async/awaitを担当。内部実装まで調べて解説してくれてます)。今回もGoogle I/O 2017で発表のあったKotlin正式サポートを受けて、第9章 Kotlinが設計に与える影響を担当してもらえました。またチーム開発について考える第7章 チームとアーキテクチャも楽しみです。

さいごに

個人としては、どんどんAndroid開発が難しくなっていく中で(少なくとも覚えることが格段に増えていっている)技術共有が大事だし、もっと重要なファクターになるとおもってます。

なのでTechBooster(夏コミがんばってかいてます!)やDroidKaigi(来年度計画始まりました!)をやっていってます。技術全体に視点を広げると技術書典なども開催しています(技術書典3の受付はじめました!)。

PEAKSは未成立だと決済されない系クラウドファンディングです。気に入ったらぜひ購入ください。1人が出資してくれたらそのお金で2冊つくれる!よし!余分にできた1冊はmhidakaが責任を持って普及活動するぞ!という気持ちです。

peaks.cc

よろしくお願いします。今後もまとまった知識として本を作って頒布していきたいです。

 

株式会社ソウゾウに入社した

2月より株式会社ソウゾウ(Souzoh,Inc)でお世話になっている。

そろそろ1ヶ月(2月は多少短いのだけども)たつので忘れないように感想をまとめておこうと思う。何か日記っぽいなとおもったけど、そもそもブログタイトルが「ひつじのにっき」なのでそれも気にしないでいきたい。

読み返してみると友達への私信っぽい感じになってるけど、やはりこれも気にしないでいようかな。

あ、どうも。mhidaka(🐑)です。Androidエンジニアとして過ごす傍ら、技術の共有や普及活動に興味が強くて技術書典を主宰したり、DroidKaigiの代表をつとめたり、講演したり、技術記事を執筆したり勉強会を開いたりしています。 

何の仕事をしてるの。

一ヶ月もたって社内がわかってきた…わけではない。実はまだ社内のプロダクトにはあまり貢献していない(もちろんプロダクトのリポジトリをみてPRやIssue、レビューなどは目を通してるけども大したことじゃない)。何をしてるのかといえばDroidKaigiのことをフルタイムでやってる*1。これは自分でも驚いてる。

ちょっと🐑のことを知ってる人なら「何をバカなことを。いつもフルタイムで応答するだろ」「そもそもいつ寝てるんだ」「お前はいったい何インスタンス起動しているんだ」とジョークが始まることも多いので混乱するかもしれない。

この場合のフルタイムは業務時間、ずっとっていう意味であってる。自分の場合は入社にあたってコミュニティ活動(社外へのアウトプット)を業務中にも認めて欲しいという要望は出していたんだけど、入った日に「今は忙しい時期だとおもうから全力でコミットしていいよ」と言われたときは驚いた。

社内の同僚に説明しても、みんな驚いたあと口を揃えて「いい会社だなぁ」と言って納得してたので本当にそうなんだろうな、と思う*2

個人的にはDroidKaigiが落ち着いたら社内のプロジェクトにも触れていきたいと考えてるけど(もちろん技術の普及やコミュニティへの貢献も継続するよ)、このあたりの詳しい話を聞きたい人は、しばらくたってから声をかけてくれると嬉しい。もうすこし突っ込んだ話もできるとおもう。会社のミートアップやイベントには参加予定なので、そこで捕まえてもらっても大丈夫(外から入ったばっかりの感想が聞きたいなら今がチャンスだ)。

アウトプット

というわけで今はモバイル分野、Androidエンジニアが楽しめるカンファレンスができるようにDroidKaigiの準備を頑張ってる。

チケットは昨晩売り切れて*3スタッフ、スピーカー、出展者などなど含めると1000人弱のカンファレンスに成長した。海外からの参加者も増えていて、大変うれしい。一方でやることも指数曲線的に増えていて(多分カンファレンスの規模が500人を超えてくるあたりに境界線がある)微力ながら手伝っている、というのが正直な感想。

比率でいうと30~50人のスタッフが準備を進めているなかでは個人が40時間/週の工数をつかっても単純作業の一部を肩代わり(1人あたり1時間分ぐらい)するだけなので実際のイメージとしてはスタッフが動きやすいよう「交通整理をして情報を集約してまとめる」「施設、外部との調整」「準備物の発注作業」などボトルネックの解消を心がけて進めてる。

自分の時間をかければかけるほど多くのボランティアスタッフに支えられてるのが身にしみて分かるし、会社がこういう活動をサポートしてくれて僕のお給料がでるのはとても不思議な気持ちになる*4。コミュニティや企業の枠を超えて、むこうにいるAndroidエンジニアひとりひとりのために働いてる気もしてくる(要望があったら遠慮なくいってね)。

なにはともあれ3月9日/10日のDroidKaigiのために精一杯がんばってるので参加する予定の人は目当てのセッションを楽しんで欲しいし、好きな技術ではしゃいでほしいというのが本音です。

周りの環境

となりに@operandoOSさんがいて、もひとつ向こうに@_ishkawaさんが座ってる。チームはとても小さい(ソフトウェアエンジニアは3~4人、関係者全員でも5~10人ぐらいだろうか。2枚のピザ理論を守っている)。社内wikiが育っていて、ものを書く文化圏なので馴染みがある。

もっと会社の様子を知りたいひとはmercan(メルカン)Mercari Engineering Blogが良いかも。

ほしいものリスト

Amazonウィッシュリスト、じつは初めて使うんですごいドキドキしてます。

www.amazon.co.jp

やっていくぞ。

*1:mhidakaはDroidKaigiの代表者をしてます

*2:これまでの🐑の活動や技能を評価してくれた側面もあるのかもしれないけど、それでもスゴいなぁ、と感じた

*3:∩(・ω・)∩万歳

*4:まだ慣れてない