意識

  • 描く自分の姿のイメージ
  • 落ち着いて、焦らず、冷静に
  • 一度立ち止まっていい
  • 冷静でいられるとき、わからないことなんてなにもない

やりたいこと

  • 図書館行く
    • ロゴのアイデア集め
    • 開発とデザインの本を読む

「それがぼくには楽しかったから」リーナス・トーバルズ著

  • UNIX のシンプルな設計と哲学に興味持った

シンプルで基本的なビルディング・ブロックがセットになっていて、それを組み合わせることによって無限に複雑な表現をすることができる

このシンプルさを捨てて、別の楽なものにひよっちゃいけない。設計とセンスの良さがあってこそのシンプルさなのだから。

  • CPU のアーキテクチャについても興味持った
  • x86
    • 現在一般に x86 というとき 32 ビットの CPU を指す
    • Intel 8086
      • 16 ビットの CPU
    • Intel 80386 or i386
      • 32 ビットの CPU
  • x64
    • x86 を 64 ビットに拡張したもの
    • x86-64 とも呼ばれる
  • Intel, AMD (x86) と ARM は根本的にアーキテクチャが異なる
    • ARM は省電力なアーキテクチャでモバイル系のデバイスで使われてきたが M1 からデスクトップでも使われるように

UNIX

  • AT&T のベル研究所で、ケン・トンプソン、デニス・リッチーらによって開発 (System V)
  • AT&T は当時、独占を禁止する規制のためコンピューター業界で商業活動を行うことを禁止されていた
  • そのため UNIX は商品として販売するのではなく大学や研究所にソースコードが配布された
  • カリフォルニア大学バークレー校が UNIX を改良し、BSD UNIX となった
    • のちに AT&T 由来のコードを削除し、4.4BSD-Lite として公開
      • FreeBSD や NetBSD など BSD 系の UNIX が派生
  • Darwin
    • BSD 系統の NEXTSTEP (OPENSTEP) がベース
    • カーネルは XNU (X is Not UNIX)
  • XNU
    • Mach カーネルと FreeBSD カーネルを組み合わせたもの
  • Mach
    • カーネギーメロン大学のリチャード・ラシッド教授らが開発したマイクロカーネル
  • GNU
    • リチャード・ストールマン (rms) によって開発された UNIX 互換の OS
    • UNIX 系の OS ではあるが、UNIX 由来のコードを全く使っていない自由ソフトウェア

考え

  • ある本を読んで、一周目ですべてが理解できないのは当たり前のことだ
  • はじめて触れる知識に、あなたはまだ慣れ親しんでいない
  • しかし、2度目に読むときには、1度目に読んだときよりもより多くのことが理解できるようになるだろう
  • 3度目はさらに、4度目はそれよりもさらに理解ができる
  • それこそが学びのプロセスであり、成長である
  • だから、1度目ですべてを理解する必要はない
  • 一度目に読んだとき、2つ3つほどの、大切だと思うことを見つけられたら、それは素晴らしい成果だ
  • すべてを覚えようとすると圧倒されるが、2つ3つを理解してみることはそれほど難しくはない
  • その2つか3つのことについて、自分の頭で考えてみることだ
  • そして次の日、またその本を読んでみると、昨日には見つけることのできなかった新しい発見が見つかる

ハッカーと画家

  • 見えない細部は、それが重なり合うと、見えるようになる
    • 人が注意を向けないような、小さな部分への執拗な執拗なこだわりは、一見無駄のように思えるが、それらの細部が全体の美しさを作り出している
    • これは表現全般に言えることで、プログラムも、音楽も、絵も、小説も、料理も、すべてに共通する
    • そして私が惹かれるのは、そのような細部へのこだわりだ
  • 大企業はすごい製品を作ることで勝つわけではなく、すでにあるネームバリューや資本力で、ヘタを打たないことで勝つ
    • ソフトウェアはプロダクトマネージャーによって考えられ、エンジニアはそれに従って実装するだけ
    • 個人や小さいベンチャーが勝つには、その製品に対する愛情とこだわり
    • 単純にお金にならないところへのこだわ

  • 回転寿司とカウンターの寿司を区別するものはその細部にある
    • 外観・内装・雰囲気・接客・味
    • ネタの切り方、温度、シャリの硬さ、シャリの量、酢加減、わさびの量、醤油の量、出す順番、出すペース
    • そういう本当に小さいことの積み重ねが、全体でみると大きな違いになる
  • スポーツやゲームも一緒
    • これまで失敗してきたたくさんの経験があって、上手い人はそこから学んだ小さいところの配慮が山のようにあって、それがその人を強くしている
    • 言葉にできなくても、「こうしたら上手くいく」「ここに注意をしておく」「こういう意識で」というようなことがたくさんあるんだ
    • それが、その人をより失敗させない人にしていて、細かいミスを潰しているから強い
  • プログラミングも一緒で
    • こういう風に書くとバグりやすい・後々問題になりやすい・メンテしにくい・読みにくい、みたいなことをたくさん知ってて、それに対する解決策も知ってて
    • そういう経験から導かれるより良い方法を経験的に知っていて、それを潰しているからきれいに書ける