読者です 読者をやめる 読者になる 読者になる

具志ブログ(β版)

ピキーン!ときたフレーズや画像、動画なんかを俺のフィルタを通して紹介

31.プログラムを書くのは自動化するということ

スポンサーリンク

f:id:gushijiro:20170104161825p:plain

前回からの続き。

定理はこれ。

ソフトウェアの梃子を有効に活用する

で、その定理の小項目が4つ。

  1. よいプログラマはよいコードを書く。偉大なプログラマはよいコードを借りてくる
  2. 独自技術症候群を避ける
  3. コードを他者が梃子として使うのを認める
  4. すべてを自動化する

3と4を詳しく紹介していきます。

3. コードを他者が梃子として使うのを認める

いわゆるオープンソースとかフリーウェアなどがこれ。

この本の中で、

ソフトウェアそのものを保護することはできない

と書かれている通り、もし、その気になれば、時間はかかるだろうけど、同じような機能を実現できるソフトウェアは複製されてしまう。

ということは、いずれ自分の手を離れてしまう、ということ。

だとするならば、最初から「所有」しようとせず、他の人にも自由に使ってもらうという考えでいた方がいい。

守るためにエネルギーを費やすのなら、その分を、機能アップに使った方が、有意義だ。

さて、この考えを人間に当てはめると?

ノウハウやアイディアも独占しようとせず、他の人に分け与える方がいいよ、ということ。

多くの仲間を得ることで、そのノウハウやアイディアそのものよりも、大きな価値を生み出すことができる。

確かに、研究開発にコストはかかるのだろうけど、その「コストがかかっていること」こそに価値が認められる。

他の人はかけたくないコストを、引き受けてあげる。

それが信頼を生み、信頼が仲間の数につながる。

仲間の数が多いと、ね、いいこといっぱいありそうな気がするでしょう?

4. すべてを自動化する

機械は疲れないで同じ作業を延々と続けてくれる。

特にコンピュータは、性能が上がれば、作業量も上がる。

いちいち、人が確認しなくてもいいように、よくデザインされていれば、それは勝手に動いて、勝手に成果を生み出す。

人間は、空いた時間を他のことに使えばいい。

ソフトウェアの梃子(テコ)ってのは、まさにこのこと。

じゃ、人間においては?

二種類あって、他人と自分の自動化。

わかりやすいのは、他人の自動化で、マニュアルというプログラムを書いて、それを何名か交代制でやってもらうようにすると、自分の時間は使わないまま、ある機能を提供できる。

あと、例えば、家庭でのルールなんてのも、自分自身をメンテナンスすると捉えれば、同じような効果が見込めるはず。

もう一つ、自分の自動化、ってのがキモ。

それは「習慣化」として知られていること。

例えば、早起きの習慣があれば、それはわざわざ「起きよう」と意識をしなくても、自動的に実行され、その分、時間という成果が得られる。

もし、定期的なファスティングの習慣があれば、これも健康に影響を及ぼして、費やされるであろう時間、お金についてセーブしてくれる。

そして、これらの習慣が全自動化(=習慣化)されていれば、その成果である時間、健康、お金などを新たな自動化に投資することができる。

これを繰り返すことで、人として変化し、成長していくことになる。

つまり、この定理

ソフトウェアの梃子を有効に活用する

ことこそが、人としての成長ということですよ、と。

「言うは易く行うは難し」ってのもあるから、すぐにできるってもんでもないけど、これを意識して日々生きていくといいでしょうね。

次の定理は

シェルスクリプトを使うことで梃子の効果と移植性を高める

です。

今回の定理を「移植」するって?というあたりで、この定理はただでさえテコの原理が働いているのに、さらにレバレッジをかけるような、そんなすごい定理です。

じゃ、また。

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

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