趣味プログラマーの憂鬱と楽観(2)

承前

前回の内容はこちら。
趣味プログラマーの憂鬱と楽観 - the code to rock

前回は非エンジニアが趣味でプログラミング入門をすることにまつわるあれこれを書き連ねてみた。
普段思っていたことの大半を書くことができたので良かったが、書き切っただけに出てくる新たに言えること、というのもありそうで、以下ではそうしたことについて記したい。

他の趣味に比べて良いところ

趣味のプログラミングの良いところは、ゴルフや釣り、あるいは絵を描くことなどに比べて、必要な道具や段取りが少ない、ということである。

とくに、ぼくの場合は普段からMacで仕事をしているから、ああ疲れた、ちょっと休憩しよう、あ、そういえば途中まで作ってたあのプログラム、少し機能改善してみよう・・なんてふうにすぐ切り替えられる。

わざわざ必要な服に着替えなくてもいいし(油絵を描くなら普段着じゃ駄目である)、外出しなくてもいいし(家の中で魚釣りはできない)、仕事をしているままの環境でそのまま趣味に移行できる。
もちろん、趣味を楽しむために長い休みをとる必要もない。

時間の奪われ方

ただし、上では「すぐに切り替えられる」とは書いたものの、それは物理的な状況に関してそう言えるというだけで、頭の中はまったくそうではない。
むしろ頭の中の状況的には隔離された別の場所で、長期的にそのための時間が必要、というぐらいのことは言えて、これは前回書いたことにもつながるが、仕事とプログラミングを往復すればするほど効率が悪い、ということを感じる。

たとえるならば(何回喩えを考えたら済むのかわからないが)、高層ビルAの最上階から高層ビルBの最上階までを往復する感じに近い。
同じ別のビル同士であっても、1階と1階ならばただ地面を行き来すればよいだけだが、最上階同士だと、そのつど大変な高さを昇り降りする必要があってムチャクチャ面倒である。
これは高さの喩えだが、深さでも同じことで、水深数百メートルまで潜って目的の場所まであと1メートル、というところで酸素が足りなくなって、一旦海上にあがるとなったら、その「あと1メートル」という状況に再び戻るまでにえらい時間がかかる。

最近、これらに近い別のたとえをまた考えたけど、これはポップミュージックの構造にも似ている。楽曲によってはサビから始まる物も少なくないけど、通常、というか原型的なポップミュージックというのはAメロ、Bメロという前置き的なタームを何度か繰り返してから聞かせどころのCメロ=サビが来る、という構造になっていて、そういう場合には大抵Aメロというのはサビを引き立たせるためにちょっと地味というか、ある意味退屈な調子になっていたりする。

細切れにしかプログラミングをできない、という状況というのは、これで言うAメロ、Bメロまで来たところでタイムリミットが来てしまって、ようやく仕事を終えて再開できたときにはまた最初のAメロからスタート、みたいになる。
ようはサビまでの行き方をすでに忘れているから、初めから順を追わないと中断した場所にまで戻れない。

このような状況があることを考えると(あくまで僕の場合ですが)、ある程度まとまった時間をとって基礎を身につけたいなあ、みたいなことは、それはまあ考える。

金銭コスト

時間や機会のあり方についてはそのように両義的な面があるが、それではかかる金銭コストはどうだろう。

小説を書くにはペンと紙だけあれば良いと言うが、それに近いところはあると思う。
コンピュータが1台あればそれだけで大抵のことはできるし、普段から仕事でもコンピュータを使っているということなら「趣味のためだけに」それを買う必要はないと言える。
一方、自分用のいつでも使えるコンピュータがない状況だったらやはりそういうものを買った方が良いかもしれない、とは思う。そうでないならコンピュータに合わせて動く(たとえば学校や職場でしか使えないならそうした場所に自分を合わせて)、という意味で結局上記のようなアウトドア系の趣味と同じ面倒さが生じてしまう。

金がかかるといえば、自分は技術書をけっこう買うので(入門書的なものを中心に)、それも馬鹿にならない。何十万もはしないけど、たとえばぼくの家にある本の大半はまず仕事に使うもので、これまではそれに次いで、大学の頃とかに買った、ようは仕事につく前に買い溜めていた本が多かったけど、今ではプログラミング関連の本の方がそれを上回っていると思う。

ブログやQiita、あるいはSlideShareなどのスライド置き場を眺めていれば、プログラミングに関する無料の知見はWeb上に無限に近くあるわけだから、本なんて買わなくても済むといえば済むのかもしれないけど、選択肢の潤沢さから考えて有償の書籍を避けて学習を重ねることは難しいと思われる。

英語に似ている

プログラミング言語というぐらいで、というわけでもないだろうが、やはりどこか英語学習とこれは似ている。
前回の記事でも、プログラミング学習は現在の英会話スクールなどの稽古事の一分野として広まるだろうとは書いたが、そういう意味とはまた別に、英語(または他国語)学習に似ている。

共通する要素はいろいろあるが、まずは不断の努力が必要であること。継続しなければ忘れてしまう。使っていなければ忘れてしまう。
またそれと近いが、これは他人との競争ではないという点でも似ている。
前回書いたことのメイントピックのひとつは、「いくら頑張ってもそれを職業とするプロとの差は開くばかりでそれがツライ」みたいなことだが、そのような感情を持つことはある意味で自然かつ仕方ないことだとしても(持たない人もいるだろうけど)、そもそもそういった職業プログラマー/エンジニアとの競争や勝負をしているわけではないのだから負けたような気持ちになるというのも違うと言えばちょっと違う。

英語をいくら身につけたところでプロの現場で使っている人やネイティブの人たちに比べたらどうしたって負けてしまうわけで、それよりは「昨日より上達しているか」「以前の自分よりもそれを通して欲しかったものが手に入ったか」などといった過去の自分との比較を気にした方が妥当だろう。

英語ができるようになって何が良いのかというと、英語で記録されたコンテンツを自分の世界に含めることができるということで、つまり自分が得するための道具として英語は機能する。
英語の習得がもたらすメリットに比べると、プログラミング習得がもたらすそれは曖昧模糊としているけれど、自分の知る世界が広がって、たとえば科学技術に関する困難にぶつかったときでも積極的あるいは楽観的に、楽しくリラックスしながら様々な方法で解決をはかる助けにはなるだろうとは想像できる。

承認欲求を用いる

プロのプログラマーと自分との落差に肩を落とす、ということは、ようは自尊心や承認欲求といった生きていく上で無くすことのできない要素と絡んでいる。

思春期にはそういった欲望を汚いもの、と思いがちだしぼくもいまだに時にはそう感じなくもないが、そうした欲求や指向が結局のところ多くの行動の原動力になりえていることを思えば必ずしも悪いものではないし、むしろ豊かな人生を送るために不可欠な心性ではないかとも思う。

昨日まで動かなかったプログラムが一晩寝て、仕事の始業前にちょっと直したらバッチリ動いて「おお、俺すごいじゃん!」と思うのは自尊心がもたらす喜びであろうし、結局のところその瞬間の世界が一気に広がる感じ、いきなり軽快な律動が胸に湧き上がってきて何度もそれを実行してはうっとりしてしまう、そのような楽しみを味わうためにやっているというところもある。

昨日までとは違う、昨日より今日の方が楽しく豊かな環境にあり、物事を理解している(気になっている)という状況は善きもので、そういう意味でもプログラミング学習は人間の根源的な欲望にフィットした趣味であるとは言える。
※もちろんプログラミング学習だけがそれを人に与える、という意味ではなくプログラミング学習をしてもそれを得られる、という話。

プログラミングをする編集者はどこにいるか

プログラミングを始めた当初、ぼくがよく思っていたのは、一般の編集者でHello, world! なんてやってる人はそうそういないだろうな、ということで、そうであるなら(一応は編集業をしている)自分は希少な存在で、ある程度これを突き詰められたら一部の人々からは重宝されるかもしれないな、ということだった。

しかしながら考えてみると、上記でぼくが大量に買うと言ったような技術書を出版するためにも当然編集者が必要なわけで、それだけ膨大な技術書が出版されてきたことを考えれば、膨大な Hello, world! ができる編集者もいるはずで、ということは編集者がプログラミングをできること自体に希少性はないよな、と思うようになった。

と同時に、そのわりにはなかなか、編集者でなおかつ趣味でプログラミングをやってます、こういうものを作りました、みたいな人は見かけづらいというか、まあ単に目立たない、自分からそんなに発信していない、あるいは僕がそれを捕捉できてないだけかもしれないが、Twitterで様々なエンジニアの人たちのつぶやきを始終追っていても、そういう人の存在が話題に上がることはほとんどない。

言うまでもなく(というか)、技術書の編集者はたくさん見かけるし、中にはWEB+DBの稲尾さんや『実践Vim』の(そしてTeXの)鈴木さんのように有名人と呼べる方々もいるけれど、趣味プログラマーとして何かを発信しているという感じでもないことを思うと、やはり同じ業種で同じ趣味をもつ仲間、というのはなかなかいなそう、という感じがある。

編集という行為や、日本語の使い方について論じるエンジニアは少なくないが、プログラミングについて語る編集者は少ない。そう感じる。
英語圏にまで観測範囲を広げればよいのかもしれないが、果たして海外ではどうなのだろう。

ぼくは今仕事で触っている原稿はすべてVim(MacVim)で書いていて、Vimは大量のテキストを扱う編集者に大推薦できるな〜、と常日頃思っているけど、果たして同様のことを考えている編集者は他にどれぐらいいるのだろう。
はっきり言ってぼくとしては、今となっては Quickrun.vim、open-browser.vim、Previm、calendar.vimあたりのない作業(というか生活)は考えられない。
参考: MarkdownのプレビューをVimで見る2つの方法 - the code to rock

以前に読んだこちらの記事で、Emacsを使っている編集者の方を知ったけど、Vimmerの編集者は今のところ知らない。
技術評論社を退職し、紙からWebの編集者になりました | 食う寝る出す読む

またそちらの記事でも触れられているが、GitやGitHub(やBitbucket)と編集業の相性も良いはずで、実際先日のGiHub Kaigiでも稲尾さんの発表にそういった内容があったけど、超具体的なそういう道具を起点に、共通点のある同業の人を見つけていくということはできるのかもしれない。
GitHubで雑誌・書籍を作る

ところでプログラミングと編集者、という観点でそのまま言うと、何と言っても以下が面白い。
記者のつぶやき - 3冊のRuby書籍を通して見る,本はプログラム,もしくは旅:ITpro

2ページ目以降は日経の会員登録が必要だが、充実した内容なので興味のある人にはお勧め。
同じ矢崎さんの記事だと、こちらも今回の話題に近いかもしれない。
記者の眼 - “エンジニアの幸せ”を味わえるプログラミング言語Ruby:ITpro

あと同じITProで比較的最近読んで、面白いなーと思ったのはこちら。
記者の眼 - こんなコードはボツだ!:ITpro

ネットワーク

話を戻すと、編集業ということにかぎらず、そもそもの興味としては普段プログラミングと全然関係ないことを仕事にしている人がなぜ、どうやって、どんなプログラミングを日々やっているのか、ということを知りたいと思っている。

そういう先人は僕の前にもたくさんいるはずだし、これまではとくにそういう人を探そうという気もなかったけれど、よく考えたらそういう人は積極的にブログなども書いて発信しているだろうから(というか話の流れ的に「発信している人を探している」のだから同義反復だが)こちらから粛々と探していけば面白いネットワークができるのかもしれない、とも思う。

ちなみに昨日Twitterで声をかけてくださった @tomcha_ さんも非エンジニア&趣味プログラマーの方ということで、ぼくは tomcha さんのブログはPerl入学式関連で何度も読んでいたけど、非エンジニアとは思っていなかった。すごいですね・・。
Perlがくしゅう帳(Rubyも)

普段あまりプログラミング学習に時間を割くことができない状況の中、なぜ、そしてどうやってそれをやっているか、という話についてはまだいろいろと書き残したことがあって、しかしすでにだいぶ長くなったのでそれらの話についてはまた時間ができたら書きたい。