に便乗して書いてみる。
まあ、
って言い切ってしまうと、ちょっと語弊と言うか意味が変ってしまうんですが、僕が 開発 や デプロイ といった作業を行う上で、或る種の理想として思っている事の一つに、
『 人力作業 』に頼ってはならない
と言う不文律が有ります。
これ、どういう事かって言うと、一言で言えば、
自力に頼るな、自動化せよ!
って話なのですが、基本的に、僕は自身の病症 (統合失調症やらうつ病やら) の経験から、
- 人間の認知能力 (≒ ヒトの現実認識能力) は実は多分に脳に依存しており
- その脳が、病症や体調不良、あるいは飲酒等によって機能障害を引き起されると
- 人格のレンダリングや、自分が体感している現実がバグり出す
と言う現実を、無情にもこの 12 年ぐらい味わい続けたので、基本的に自分自身の行為も含め、人間の行い、というモノをほぼ信用も信頼もしていません。
そのため、例えば、
- 暖かみのある手作業なデプロイ、とか
- あるいは、目 grep によるバグ修正、とか
- もしくは、人力目視テスト、など
と言う行為について、僕は、
それらはすべて、可能な限り自動化すべし
という考えを持っています。
ただし、これは 他人の人格を信じたり頼ったりをまったくしない とはちょっと違っていて、実際には、
- 人間はその時々の体調や精神状態から、うっかりミスやヒヤリハットなミスをし得る
- そのため、人間が正常な行為を常に行う、と言う前提に立つのは、危険寄りなリスクである
- よって、そのリスクを緩和すべく、自動テストや継続的なテストを行うべき
と言う考え方なので、まあ、ちょっとマイルドに言い直すと、
人力に頼るとスケールしないし、またトラブルの元だよ
と言う感じの話です。はい。
ところで話は変わって、僕の開発者としてのもう一つの考え方の一つに、
自分に何か有ったとき、自分の作ったモノを道連れにしたくない
と言う考えが有ります。
これ、僕は今まであまり表立っては言って来なかった、と思ってるんですが、基本的に僕は、
自分 (達) の作ったソフトウェア等は、自分 (達) とは別個の存在である
と言う考え方をしていて、それ故なのか、
自分 (達) が何かの理由で開発継続が出来無くなった=そのソフトウェアの死に直結する
と言うのは流石に不味いんじゃないの? とか思ってます。
まあ、ビジネスが絡むソフトウェアやサービスなんかの場合だと、
ビジネスが成り立たなくなる=その プロダクト の死
と成るのは、まあ許容範囲だとして、これが例えば、個人の開発者の方が、純粋に趣味的に作ってるソフトウェアでかつクロースドソースだったりすると、もしその開発者の方が、何かしらの理由で開発の継続が出来無くなった場合、そのソフトウェアの開発が途絶えてしまう、という事になります。
そして、そのクローズドソースなソフトウェアが、例えば誰得なソフトウェアならいざしらず、大変便利で広く使われているソフトウェアだったりすると、まあ、皆困ってしまうし、また、脆弱性が有ったりすると、こう、システムの秘孔を突かれて色々と死す、みたくなる訳ですよ。
それで、まあ僕は 流石にそれは不味いんじゃないの? と思うので、大体、何かを作って公開しよう! と考える時には、基本、 オープンソース にする事を前提として行動しています。ただまあ、例え オープンソース であろうと、メンテナが居なくなってしまうと基本的に更新が途絶えるのは一緒ですけども。ま、それでも非公開よりマシかな、なんて個人的には思っています。
と言うことで、取り敢えず 僕の エンジニアとして立ち振舞いについては以上です。……なんか微妙にお題との関連がズレてる気がしないでも無いですが、それはキニシナイ 方向でお願いします。