matobaの学んだこと

とあるPythonエンジニアのブログ。ソフトウェア開発、執筆活動、ライフログ。

「IT実務のアンチパターン」の続編を作り始めてる話

こんにちは。前に書いた「IT実務のアンチパターン」の続編になる第二作を作っています。それが最近どうすか。という話をざっと書きたいと思います。

「IT実務のアンチパターン」の続編とは

「IT実務のアンチパターン」は僕が書いて、技術書典5で出した同人誌です。

詳しくは、ここら辺をどうぞ。

blog.mtb-production.info

で、もともと続編にしたいというイメージがあったので、今回はその続編を書くに当たって考えてることとか、困ってることとか、です。

どんな本にしたいかのイメージを書き出した

まず、続編を書くに当たって、改めてどんな本にしたいかのイメージを書き出しました

前回も最初に書き出していて、ここに書いてあることに近いことをしてます。

blog.mtb-production.info

観点としては、以下のようなものだと思います。

  • 誰に意味がある本にしたいか
  • それを手に取った人がどうなって欲しいか
  • それを書いて僕はどう思いたいか
  • 本を書くことにどういう意味がありそうか
  • 僕に取ってこの本を書くというのはどういう意味があるか

次の活動に対する期待とか想いみたいなものを可視化しておきました。

これがあとあと意味のあるものになるはずです。多分。

目次を検討した

イメージを作った後は、目次を作りました。 といってもなんとなくネタ出しは前にやってて、そこに対してイメージもあったので、それを並び替えたり、少し殴り書きして見たりをしながら、出来上がりのイメージを手探りで探ってます。

仮に目次がこうだったとして、最終的にどこで何を理解するんだろう?とか、なんかそういうの考えてたりもします。

目次を作ったり殴り書きをする中で、一作目と比較することが増えました。

一作目とどこまで共通させるかの検討

一作目を作るときは、書きたいことが多いけど分量が多いから分割しよう。くらいで分割してたのですが、続編となると、シリーズっぽくするのに、いろんな工夫を考える必要が出てきました。

例えば、目次とか文章の構成とかを似せたほうがいいんだろなーとか思ったりします。 でも、構成を似せるためには、前回の構成を改めて分析する必要があります。

一作目はとりあえず仕上げることが重要だったので、わかりやすいことを目指して構成や構造を作っては組み替えてを繰り返していました。

二作目は、一作目でわかりやすかったとフィードバックがあった部分や自分で思っている部分を引き継ぎたいという気持ちがあります。

一作目と二作目で作り方が違う

とりあえず二作目の方がなんか難しいぞ、ってことに気づいてきました。

改めて考えてみると、一作目の構造は、殴り書きとリファクタリングを何度も繰り返して、あの構造になってました。

でも二作目は、最初から構造ができてるところに、書いて行く、というと全然違うプロセスだなあ。と感じてます。

なんとなくイメージすると、フレームワークも何もない時代からやってきて、リファクタリングしまくった結果、フレームワークっぽい構造になって、それを使っている人と、フレームワークを使い始めてその中を学ぼうとしたり、新しい構造を作ろうとしたりする人だと考えることが全然違うと思います。

その視点の違いみたいなところに引っかかってるような気がしてます。

二作目だからもっと楽にまとまるんじゃないかなと思ってたけど、全然そんなことはなかった。

この話をどこに書くべきなのか、文章構造の設計の難易度が高い。

リファクタリングで適切な構造になってた?

プログラムを書いているとき、殴り書きとリファクタリングの中で理解が深まって行くのはあります。不要な構造を最初から作ってこの構造なんであるんだっけ?という話になったりもすると思います。

YAGNIで考えよう。という話なんですが、シリーズにしたいな、と思っていると、最初から構造をコピーしたいという気持ちもあり、難しい、、、とか思ってます。

もしかしたら、二作目は一作目と違う構造がいいかもしれないのに、最初から構造を持ってきてるところがもしかしたらおかしいのかも、とか思ったり、迷走感が少しずつ出てきました。ぐぬぬ。

リファクタリングの過程で深まる理解

そもそもの話なんですが、僕の場合、扱ってるテーマについて執筆を始めたときは、僕もすごく詳しいわけではなくて、「なんとなくこう思ってる」というくらいしか理解できてません。

それを文章に書きながら、「あれ?ここをこういう話にすると、あっちがずれてない?」とか「ここで僕はこういう主張をしてるけど、これって僕が思ってるだけじゃないの?本調べてみよう」とかやりながら、全体の理解度を上げていってるわけです。

そういうプロセスも扱ってるテーマについて理解を深めるために重要なことなんですが、最初に構造があるところから入ると、そういうのをぶっ飛ばしていきなり中身を書けそうな気がしてしまいます。

そして、中身を書こうとすると、そもそもテーマについて理解が深まってないので、言ってることの情報の質がすごく低い、、、みたいな状況になると。

なんか、プログラミングを初めて最初からフレームワークを使ってる人が書いた部分はフレームワーク部分に比べて脆弱性が含まれてる可能性がたかそう、みたいな話に近いような。どっちにしてもどうするか、困り中。

終わり

今のところこんな感じです。

ぼちぼち、手元に参考文献を買ってきて読んだり、書いているテーマについて考えたりしながら、話をまとめていってます。次も問題なくできあがるんだろうな、とか心のどこかで思ってたんですがよく考えたら、一昨目も簡単に出来上がったのではなくて、紆余曲折があったりいろんな人に相談しながらできたので、今回もたくさんの人に相談させてもらうことになりそうだ、、、とか思ってます。相談させていただく機会があれば、よろしくお願いします。

とりあえず、現時点では、「一つ目は評判が良かったからこうしたい」「一つ目ではこれが書けなかったけど今回はこれも書きたい」という二作目ならではの自分の中での期待や要求が増えているのはわかりました。

一作目と二作目は別の難しさがあるよなあ、ということをひしひし感じたりします。

この本に書いてある「第二のシステム」の失敗にハマりそうだ、、、とか

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

この本に書いてある「セカンドシステム症候群」にハマりそうだ、、、

人月の神話【新装版】

人月の神話【新装版】

とかすでに不安がありますが、とりあえず頑張って継続していきたい所存です。

最後まで読んでくれてありがとうございました。 また、しばらくしたら、どんな状況になったかを書きたいと思います。