2024年8月8日
C++ライブラリアン
C++日本語リファレンスサイトcpprefjpを運営し、C++の最新情報を日本語で発信している。株式会社Preferred Networksに所属し、スーパーコンピュータのソフトウェア開発に携わっている。
著書として、『C++テンプレートテクニック』(SBクリエイティブ)、『C++ポケットリファレンス』(技術評論社)、『プログラミングの魔導書』(ロングゲート)。
X: @cpp_akira
GitHub: faithandbrave
こんにちは。プログラミング言語C++に関する日本語情報の発信をしている高橋 晶です。
私は本業でソフトウェア開発に従事している傍ら、余暇の時間にはボランティアで以下のような活動をしています。
これらの活動は、2009年に最初の共著書『C++テンプレートテクニック』を執筆したころから続けているので、15年ほど続いています。
私のこれらの活動は、ソフトウェア開発のプログラミング力や設計力のようなものだけでは続けることはできませんでした。ソフトウェア開発はもちろん、こういったライフワークの活動には、開発スキル以外のより広い技術を身につけることや、考え方の強化などが不可欠です。
今回は、私のソフトウェア開発やライフワークに加え、普段の生活にも大きな影響を与えた書籍を紹介していきます。
本書は、私の人生に大きな変化を与えてくれた、私にとってのバイブルです。
本書では、研究や統計に基づいた「人を変える方法」の解説をしています。
変わりたいと思う自分、変えたいと思う相手、そうは思っていても自分も相手も思ったとおりには動いてくれない!本書は、そんな悩みに向き合う力を与えてくれます。ソフトウェア開発ではもちろん役立ちますし、人生のさまざまな状況で活用できる技術が身につきます。
「人を変えたいけど変わらない」というのは、いろいろな状況で起きます。
本書では、本能を象、理性を象使いにたとえています。理性 (象使い) で本能 (象) に無理やりいうことをきかせ続けていると、より大きな力をもった本能 (象) に反発されて、言うことをきいてくれなくなってしまう、というようなことです。
そんな暴れん坊の本能を飼いならして人を変えるために、以下のようなことをするのがよいといっています。
このような人を変える方法は、たとえばプレゼンテーションでも使えます。理性的で淡々とした発表では行動変容につながらないため、より感情に訴えかけることで人の行動を強くうながすことができます。
ソフトウェア開発においても、2年後の完成に向けて最終目標だけが決まっていると、かならずグダグダな開発になってしまいますが、短期目標(マイルストーン)を細かく設定することで定期的な計画の見直しができます。
本書は私にとって、この本を読まなかったら乗り越えられない壁がいくつもあった、といえるほど大きな存在です。なにかを変えたい、と強く思っている方にはぜひ読んでいただきたいです。
本書では、「習慣」に関する研究・取材の成果をまとめたものとなります。
先ほど紹介した『スイッチ!』と合わせて読むと、習慣に抗う本能を飼いならして、より最強になれる、そんな本です。
私の活動において、プログラミングの情報発信は果てしない作業が必要になります。
たとえばこの記事の場合、休日に数時間だけ集中すれば書ききることができ、それは最初から最後まで情熱で乗り切ることができます。
一方で書籍の執筆となると、300ページもの内容を情熱で書ききることはできません。最初に書籍の執筆をしたときには、1日がんばって書いても11ページが限界でしたし、
その全力を完成まで継続し続けることもできなかったです。
また、C++日本語リファレンスサイトcpprefjpは、本記事の執筆時点で5,500ページあります。私以外に関わっている方もたくさんいますが、書籍1冊を300ページとすると、書籍18冊以上の分量になり、1ページあたりの分量も書籍より多くなっています。この情報サイトの執筆は、書籍と違って終わりがなく、プログラミング言語C++が更新され続ける限り永遠に続きます。
このように情熱だけでは継続がむずかしい、長い活動においては習慣化という技術が不可欠になります。
本書は「毎日ずっと続ける活動」のような習慣の特性と、その習慣を身につける方法について研究・取材を行った書籍です。
まず私が驚いたのは、本書を書いたのが心理学や脳科学の専門家ではなく、ジャーナリストだったということです。ここまでしっかりした内容の書籍を、専門家ではない方が取材によって書いたというのは、とてつもなくすごいことだと思います。
専門家は多くの場合に多忙で、書籍を書いている時間などないことでしょう。そのような専門家に取材を行い、技術的に正しい書籍を1冊分も書き上げるというのは、ジャーナリストとして神がかり的に優秀な方なのだと思います。
本書ではまず、認知症の方が無意識に習慣化された行動をする事例とともに、習慣化された行動は脳のリソースをほとんど使わず、行動する際の心理的負荷が少ないということを示しています。
私たちは、習慣化されていない行動をするときにはがんばって行動する必要がありますが、習慣化さえできてしまえば、がんばる必要なく淡々と行動することができます。
習慣化の方法としては、「きっかけ」 → 「ルーチン」 → 「報酬」を自分が習慣化したい行動に当てはめることです。
「きっかけ」はたとえば「毎日朝9時から (行動する)」のような、習慣化された行動をはじめる際のルールです。
「ルーチン」はその「習慣化された行動」です。
重要なのは「報酬」になります。習慣化された行動を終える際には毎回、なにかしらの報酬が必要になります。報酬はすごいご褒美である必要はなく、たとえば達成感のようなものでもよいですし、行動の終わりに一杯のコーヒーを飲むというのでもよいです。これをすると習慣化された行動を気持ちよく終えることができる、というのが重要になります。
報酬の設定がうまくできると習慣化がしやすくなりますので、いろいろ試してみてください。
この習慣化の技術は、悪習慣を断つことにも使えます。禁酒や禁煙などがそれに当たります。悪習慣の「きっかけ」 → 「ルーチン」 → 「報酬」を分析し、悪習慣のルーチンがおわったあとに自分がどんな報酬を得ているのか分析したうえで、報酬を変えずにルーチンを変えると、悪習慣を変えやすくなります。
習慣化は、仕事という強制力が少ないライフワークにおいて、継続的な行動のために必要不可欠な技術です。
ソフトウェア開発においては、オープンソース活動や生涯学習でも役立てることができるでしょう。
ただし、ひとつ注意が必要です。情熱を抑えて習慣化をやりすぎてしまうと、感情が死んでしまうことがあります。やりたいことがいっぱいあるけど、それを抑えて淡々と習慣化した行動を繰り返す、ということをやってしまうと、抑圧されすぎてなにも感じなくなってしまいます。習慣化はやりすぎ注意です。
本書は、正義論という哲学の本になります。
正解がなく、決断に葛藤が必要なさまざまな事例と考え方をもとに、自分なりの正義、自分なりの行動指針というものを考えられるものとなっています。
自分にとっての正しい行動とは何かをあらかじめ考えておくと、決断に一貫性をもたせることができます。
たとえば私にとっての行動指針とは、抽象的ではありますが「社会貢献につながる行動をする」というものになります (細かく話せばもっといろいろありますが)。
これは私のライフワークでの情報発信につながるものでもありますが、仕事選びにおいても重要な指針になっています。
私が所属する「Preferred Networks」という会社はAIの会社ですが、これからの日本の「働き手の減少」という問題に対処してより賢い自動化をするためにAIの社会実装を加速させる、ということが私にとっての行動指針に合致しました。
私は現在、MN-Coreというスーパーコンピュータの開発に携わっています。この仕事に参加することで、社内の多くのチームの研究を加速させることができます。日本の多くの大企業と共同研究をしている弊社においては、社会への影響がとても大きい仕事だと考え、高いモチベーションで取り組むことができています。
正義論は、わかりやすいところでは功利主義という、幸福量が最大になる選択をする考え方があります。アニメや映画でよく題材になりやすい「多数を救うために少数を犠牲にしてもよいのか」というものですね。こういった題材のたくさんの事例をもとに、自分の考え方を育てることができます。
本書の内容は手法を学ぶのではなく、自分の考え方を作るためにいろいろな事例を学ぶものとなっています。いままで私たちが漠然ともっていたであろう考え方を補強してくれるように感じます。
私の人生に影響を与えてくれた書籍はほかにもたくさんありますが、全部詳しく書くと1記事の文量ではどうも紹介しきれません。短文になってしまいますが、何冊かかんたんに紹介させてください。
本書は、すごい技術をもったプログラマ (ハッカー) がどんな考え方で仕事に取り組んできたのかを紹介した本になります。私は本書を読んでから、自分の仕事に強く誇りをもつことができ、この道を極めていきたいと思えました。
特に「富とはなにか」はすごく考えさせられるもので、自分は生活を豊かにする富を作っているのだと自覚できました。
本書は、プログラマとしての成長の仕方をカタログ的にポイントをまとめています。本書の副読本として、前身となった『ソフトウェア職人気質: 人を育て、システム開発を成功へと導くための重要キーワード』と、本書の翻訳にも携わっている柴田 芳樹さんの『プログラマー”まだまだ”現役続行』もまた、プログラマとしての人生をよりよいものにするためにおすすめです。
今回は、仕事としてソフトウェア開発に携わりながらも、ライフワークとして技術情報の発信を行っている立場から、直接的な開発技術から離れた資質強化につながる書籍を紹介させていただきました。
この記事を読んでくださった方のプログラマ人生が、ここで紹介した書籍で少しでも豊かになることにつながれば幸いです。
関連記事
人気記事