Layout」が発売されました。貴重な経験ができたと思うのでまとめようと思います。経緯はじまりは、2015年元日。新しいメモ帳に「本を書く」と目標を書いたことでした。他にも目標があって、ベンチプレスの自己記録更新や、シックスパックを手に入れるとかそのうちの1つです。きっかけは、前職のGunosyで第13回potatotipsを開催したときに突然訪れました。懇親会で@tokoromさんにアイデアを話したところ、「お、いいね!」となり出版社の方を紹介してもらえることになりました。その後、出版社の方との顔合わせミーティング、企画の打ち合わせなどがあり、執筆することになりました。このときはまだ、これから待ち受ける困難には気付いていないのでした。Requestを作るというスタイルでした。今考えましたが、通称GMSフロー(Github+Markdown執筆フロー)です。私にとって、はじめての執筆だったため、私が書く、編集がチェック、修正依頼を送るみたいなプロセスを複数回繰り返しゲラ*1ができ、その後赤入れ*2を繰り返しやるという形でした。*3執筆中抱えた課題どこから手をつけたらいいかわからず、過去のブログ記事と関連する第6章「実装基本パターン」から手をつけることに。Layoutを用いたレイアウトをパターンに分けるという試みの章です。時間をかけて書いたブログ記事を元に書いたので上手くいくと思っていましたが、このファーストドラフトはひどいものでした。長文を書くということができませんでした。日本語や全体の設計にも問題がありました。*4長文が書けない最初の問題は、内容が表面的すぎたことです。十分な深掘りができておらず、結果的に最初に書いた章のドラフトは短すぎました。それでも、この時書いた量は、気合の入ったブログ記事位の長さでだったので、「俺頑張った」と思っていました。日本語らしい書き方ができていないこと。昔から国語が大の苦手だった私。中学の時、4分の1か4分の2と言いたくて、4分のちょっとって言ってたくらい、国語力は低いです。文章の書き方は留学中に学び*5、学術論文を通して学んだので、特徴的な文章となっていました。日本語は英語よりも接続詞をよく使うとか、主語をはっきりさせるとかいった、当たり前のレベルからはじめる必要がありました。全体設計200ページ以上あるので、全体を見てメッセージを発信するのが非常に難しかったです。私は、まず目次を作ることにしました。書き進めていくと、内容の追加、入れ替えが必要になったり、書籍の目的を考えなおすなんてこともありました。コンテクストがある程度共有されているブログと違って、前提条件から説明し、かつ深掘りする必要があります。苦手だからこの内容は飛ばそうみたいなこともできません。引いて全体を見ながら、時には必要以上に近づいて対象技術を観察する必要がありました。対策これらの課題はエンジニア的思考で解決することができました。長文が書けないこれは書くことでしか解決されませんでした。長文が書けないので、書きはじめることができません。「鶏が先か、卵が先か」です。そこで、私はまず口語で書くことにしました。オリエンテーションという考え方がなくなった。デザイナーと縦横で話すのはやめよう。UITraitCollectionを使おうよ。やばいんだって、こいつ。口語で書くと、まだ書くことができたので、アウトプット量を増やすという意味と自分の思考を整理するという意味で、ひたすら書き続けました。小さい単位で、編集の方にレビューしてもらうというのを繰り返しました。Requestは小さい単位で出し、早い段階でレビューをもらい修正してもらう。これもチーム開発と似ています。失敗を多く犯しながら、失敗を元に、少しずつ自分の日本語の問題を解決していきました。本を書いたことがなかったので、先に目次を作るなんてアプローチがまず間違っていました。プログラミングをしたことない人が、クラス設計から入るようなもんです。全体像をざっくり考えた後、プロトタイプをさっと作る、そのプロトタイプを元に全体を修正する、そんなアプローチが必要だったと今では思います(このトピックは中島聡さんの本がおすすめ)。プログラミングと同様に、コードを書き、リファクタリングすることを繰り返し、ようやく良い設計に近づいていけるのだと思います。文章の書き直しもリファクタリングだと思うと、書くことや修正することに対する心理的障壁がぐっと下がります。ソフトウェアだと考えれば、一度動くものを作って、形を整え、必要があれば作りなおすなんてことも、できるようになりました。執筆は、困難が多かったですが、それによって得たことも大きいです。執筆を通してアウトプットを続けたので、文章に対する取り組み方が変わりました。苦手意識が強いですが、日本語で長文を書くことへの抵抗感は減ったし、ある種のスタイルが確立したのは良かったです。技術要素についても網羅的に知識を整理することができたので、取り組み方、見え方が変わり、コードを書くときも少し抽象的な視点から物事を捉えられている気がします。割りと辛かったのは、1年間、外部世界と切り離されていたことです。これは、アウトプットにエネルギーを注ぐため、自然とインプットの量が減るためです。時間を主に使う技術は執筆内容に関連したものになるため、新しい技術、注目されている技術をこれまで通り深掘りする時間を確保するのが非常に難しかったです。執筆をしている間は、情報の取捨選択、時間の効率化に気をつけていました。友人と遊ぶ機会も減るので、修行僧のような気持ちになることもありました。まとめとてもハードなプロセスでしたが、執筆を通して良かったことの方が多いです。学びはとても多かったです。書籍が店頭に並んでいる姿をみたとき、友人達が応援してくれているとき、役に立ったというコメントを見たときに、「あぁ頑張ってよかったな」と心から思えた、本当に良い経験でした。Layout」という本を執筆しました。多くの人に、iOSアプリ開発のレイアウト手法を伝えるために、全身全霊を注ぎ書きました。執筆にエンジニア的手法を用いることができ、それはとても有効でした。Layoutとサイズクラスについて解説している書籍です。レイアウトの基礎を包括的に紹介し、後半では業務でよく使うパターンをまとめています。Layoutと言われると、つい尻込みしてしまうアプリ開発者にぴったりの一冊です。いう感じになっています。基本的には、iOSアプリ開発初心者に向けて書いているので、"黒帯エンジニア"みたいな人には向きません*7。書店で見かけたらパラパラと読んでみてください。2016-07-04KindleAmazon*1:文字を印刷用レイアウトにおこしたもの*2:ゲラに赤ペンで修正を入れていく*3:各章6往復以上しました*4:もちろん技術的な困難もありました*5:日本の国語の授業って文章構造とかあまりやらないですよね*6:昨日たまたま聴いたdex.fmで似たようなこと話していました。Nimaで働くiOSエンジニア。Layout」の著者。(1)Archiveはてなブログをはじめよう!jeffsukeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。