冷めたコーヒー

Weniger, aber besser

7月に読んだ本・読んでいる本

こんにちは、みるか(@mirucaaura)です。前回前々回に引き続き、今月に読んだ本について簡単にまとめておきたいと思います。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

プログラマが知るべき97のこと

  • 発売日: 2010/12/18
  • メディア: 単行本(ソフトカバー)

先月、本書の監修者である t_wada さんこと和田卓人さんのご講演を拝聴する機会があり、本書を知りました。ご講演のログについては以下の記事にまとめましたので、ぜひ目を通していただければ幸いです。

mirucacule.hatenablog.com

本書は、題目の通り、プログラマが知っておくべき事柄について、著名なプログラマによる 97 本のエッセイによって構成されています。また、日本語訳版では、Ruby開発者であるまつもとひろゆきさんや t_wada さんによる 10 本のエッセイも加わっています。

内容については本書に譲りますが、ぜひ読んでみたくなるようなエッセイタイトルを以下に列挙しておきます:

  • 関数型プログラミングを学ぶことの重要性(Edward Garson; pp4-5)
  • ハードワークは報われない(Olve Maudal; pp.72-73)
  • 車輪の再発明の効用(Jason P. Sage; pp.138-139)
  • シングルトンパターンの誘惑に負けない(Sam Saariste; pp.140-141)
  • エラーがエラーを相殺してしまう(Allan Kelly; pp.162-163)
  • 正しいアルゴリズムとデータ構造を選ぶ(Jan Christiaan "JC" van Winkel; pp.168-169)
  • WETなシステムはボトルネックが見つかりにくい(Kirk Pepperdine; pp.172-173)

一つひとつのエッセイは見開き 2 ページ程度であり、それぞれが互いに独立した内容なので、隙間時間などに少しずつ読むのに適しています。

エッセンシャル思考

再読しました。前回読んだのが2月だったので、およそ5ヶ月振りとなります。本書のキーメッセージは「より少なく、しかしより良く」という一点に集約されます。色んなことに手を出して全てを中途半端に終わらせるのではなく、自分がすべきことを徹底的に明確にして、そこで最高の結果が出すことが人生のあらゆる場面で重要となります。本書は、本当に重要なことを見極め、それを確実に実行するための方法論について、エッセンシャル思考の人と非エッセンシャル思考の人との比較を通して伝えています。以下の表は両者の《考え方行動結果》に関する比較を表したものです。

非エッセンシャル思考 エッセンシャル思考
やらなくては これをやろう
どれも大事だ 大事なことは少ない
全部こなすには? 何を捨てるべき?
差し迫ったものからやる 本当に重要なことを見定める
反射的に「やります」と言う 大事なこと以外断る
期限が迫ると根性で頑張る1 予め障害を取り除いておく
何もかも中途半端 質の高い仕事ができる
振り回されている コントロールしている
疲れきっている 毎日を楽しんでいる

本書の内容は書かれていることを理解するだけであれば極めて簡単だと思います。しかしながら、それらを日々の生活の中で実践することは一朝一夕には難しいと思います。自身の生活に取り入れたい Tips を一つ選んで実践し、無意識でも実践できるようになったら本書を見返して再び生活に取り入れて...というサイクルを繰り返していくとよいと思います。

シンプルな勉強法

シンプルな勉強法というタイトルの通り、奇を衒ったような内容については一切記載されておらず、正統的な勉強の仕方に関する本です。大学受験に関連した事例や具体例が多く、多少のくどさを感じましたが、これから大学受験を控えている高校生のみならず、大学受験を終えた大学生や社会人が読んでも得るものはあると思いました。幾つか役に立ちそうな内容をメモしておきます:

  • 勉強を通して、何らかの目標を達成したい場合、「どれくらい頑張ったか」と「どの方向に向かって頑張ったのか」の二軸が重要となる。次の逆算的な思考を行うことで、誤った方向に努力してしまうことを避ける:
    • 目標を定め、具体的なゴールを設定する
    • ゴールまでにやりたいことを決める
    • やるべきことをスケジュールに落とし込む
    • 実践する
    • 進み具合を定期的に確認する
  • 動画で何かを学ぶ際は、全体像のメリハリをつけるために、ある程度視聴したら一時停止してそれまでの内容についてメモをする。逐次、情報を頭の中で整理してアウトプットをしていくことが重要。
  • 家の中で勉強に集中ができないときは、スマホを家に置いて、自宅から少し離れたカフェや図書館で勉強をする。スマホを放置することで、勉強以外にできることをなくすことが大事。

デジタルネイチャー

2年ほど放置していましたが重い腰を上げて読んでみました。本書で唱えられている「デジタルネイチャー」というのは、人間を数理的に捉えるウィーナーの「サイバネティクス」と、あらゆるモノにコンピュータ性を付与するワイザーの「ユビキタス」という二つの概念を継承した計算機分野の思想のことだそうです(pp.87)。

AI分野の研究に携わったことがないので知らなかったのですが、今AIの分野で求められている才能は、データとデータの間の関係性に目を向けるセンスであり、必ずしも解析的な発想が求められないということです(pp.84-85)。頭で考えるよりも、データセットと(既存の)解析手法と計算機資源があれば新規性が出せる(可能性がある)という点は理論的な分野に携わっていた自分としては新鮮でした。

本書の内容は機知に富んでいる一方で、敢えて分かりにくい専門用語や衒学的表現を多用している印象を受けました。この文体こそ著者特有の文体であり、そこに楽しみを感じる読者が一定数いることも事実だと思う。しかしながら、個人的には、もっと平易な文体で読みたかったです。

解析入門Ⅰ

軽装版 解析入門〈1〉

軽装版 解析入門〈1〉

第一章:実数を中心に読みました。これまで実数は既知として扱ってきましたが、本書にもあるように、現代数学の立場から見ると高校までに学んだ実数の認識では厳密性に欠ける点があります。そこで、有理数については既知として、それに基づいて論理的に厳密な実数論を構築することが本章の目的でした。補助資料として、YouTube にアップロードされている動画を参考にしながら進めました。議論を進めるに当たって、ε-N論法を用いる場面が多々ありますが、この概念に慣れるためにはε-N論法について考え込むよりも、例題や諸定理の証明を通して慣れていけば良いというのが個人の見解です。

おまけ

余談として、今月やっていたことについて少しだけ触れておきたいと思います。

数学に関しては、前述した通り、解析学の実数論について学びました。補助資料として用いた動画は、古賀さんの動画AKITOさんの動画です。今回に限っては、より厳密な議論について学びたかったのでヨビノリさんの動画は視聴しませんでした1。勉強の進め方としては、学んだ内容を自分で再構成できるレベルを目指しています。

数学以外で時間を割いたこととして、筋トレを継続的に行いました。我流でやっても大した成果は生まれないと思ったので、コチラの動画を参考に、完走できることを目指しました。現在、何とか 3 分を超えることができるようになりましたが、完走には至っていないので、来月も継続して取り組みたいと思います。下図はログです。横軸が回数、縦軸が秒数を表しています。

f:id:mirucacule:20200729112948p:plain
筋トレ精進グラフ

他には、競プロにも時間を割きましたが、ABCのE問題以降を解けるビジョンが見えずに行き詰まっています。より具体的に言うと、AtCoder Problemsにおける緑色上位レベル〜水色下位レベル以上の問題に対する解法を自力で思い付くことができない状態です。圧倒的に演習量が足りていないことが要因の一つであることは間違いないので、典型とされる問題をストックしていく必要がありそうです。

また、4連休(7/23~7/26)で心に余裕があったので、株式や確定拠出年金、税金などといったお金まわりのことについて学びました。それに伴って、会計の知識を身に付けたくなりました。以前、簿記の勉強をしたことがあるのですが、機械的な仕訳の作業に終始してしまい、面白みを見出せませんでした。Twitter2にて、より厳密な立場で会計について学べる書籍について質問したところ、以下の書籍を紹介していただきました。書店で気に入ったものを購入したいと思います。


  1. このやり方はやってしまいがちですが、再現性のない確率的な仕事になってしまうので、気を付けたいです。

  2. ヨビノリさんの動画が厳密性に欠けるという意味ではありません。悪しからず。

  3. 当該ツイートへのリンクです。ご回答して頂いた方々、誠にありがとうございました。