diary日記2019-04-04なぜソフトウェアエンジニアの私が哲学をやるのかなぜなのか。それは、哲学が役に立つから。わけがわからないと思うので、順を追って説明します。ソフトウェアエンジニアは何をしているのでしょうか。ソフトウェアエンジニアは、計算機科学、つまりソフトウェアの設計と実装そして運用の技術で仕事をします。主な用途は自動化されスケールするシステムの構築です。このシステム、ソフトウェアエンジニアがつくるシステムは何のためのものなのか。実社会の問題を解決するために作られます。会計システムであれば、会計の効率化、自動で計算や仕分けをしてくれたり、ですよね。ソフトウェアエンジニアは実社会の問題をソフトウェアによる自動化の力を借りて解決します。ここまでは簡単ですね。それでは、彼らは何を作っているのかみていきましょう。実社会の問題を解決するシステムとは何なのか。これは具体化するときりがないものですが、いくつかの特徴があります。定型的な処理であること。ルールが決まっている性質のことです。税の計算や商品の購入のルールは短期的には一定ですよね。つぎに、たくさん行われる処理であること。税金の計算も買い物もたくさん行われますね。繰り返し行われる業務を自動化すると人間はほかのことをできてめでたいですね。柔軟性が要求されないものから自動化されてゆき、効率的になってゆきます。ルールが決まっていてたくさん行われる処理、これは何なのでしょうか。計算機が誕生する前からあったはずです。その頃は人間が計算して、処理していました。当時はシステムを人間が運用していたといえます。ソフトウェアエンジニアは社会のシステムを実装して自動化しているだけです。余談ですが、この自動化が資本主義と組み合わさると莫大な利益をもたらします。商売をするにあたり、利益はどうやって決まるのでしょうか。単純化すると利益率と売った数のかけ算ですね。利益率を上げるのは人件費などの難しい問題と限界がありますが、販売数は数十億人オーダーまでスケールする余地があります。どれだけスケールするかによっても利益の量が左右されます。コンピュータ誕生以前は、人間が商売のシステムを運用していました。ところが、このシステムが自動化されたことにより、スケーラビリティが桁違いに伸びたのです。これがサーバー屋さんでスケーラビリティが重視される理由です。根源的に、データベースでスケーラビリティが律速しやすいのですが、その限界は人間が運用するよりはよっぽど大きいのです。GAFAMが注目され、実際に莫大な利益を生み出しているのは、億オーダーまでスケールするシステムを構築したからですね。ソフトウェアで自動化されようとされまいと、システムはあるのです。会社にも役所にもシステムはありますし、法律だってシステムです。システムとは何なのか説明するのを忘れていました。これはルールの集合です。ここでは、実社会に適用されるルールを指しています。システムは数千年前にだってあります。人間が運用するシステムであれば、それは社会がある限り存在してきました。これを自動化することに、ソフトウェアの価値があるのです。ソフトウェアエンジニアとして賃金が得られているということは、何らかの必要とされるシステムを自動化していることになります。これは疑いようがありません。このシステムはソフトウェアがあろうとなかろうと存在します。システムの仕様、ルールそのものは計算機の外の世界にあります。ソフトウェアエンジニアが計算機科学および仲間内の知識に閉じこもっている限りは避けがたく仕様に襲われます。仕様変更にも苦しめられます。計算機の外の、実社会のことを知らなければよいシステムは実装できません。社会のことを知らないばかりにまずい設計をして、仕様変更も増えます。仕様を決める人がそこを説明しろやという話もありますが、これはおのおのの現場における政治の問題でもあるのでおいておきます。ソフトウェアエンジニア「も」社会を理解しておくことで、給与交渉としましょう。実社会は人間と慣習の集合でできています。よって研究されています。人間そのものは哲学や人類学が研究をしています。今までにないシステムを作っているという意見もあるでしょう。この新しいシステムも実社会プラットフォームのうえで動いています。実社会プラットフォームは自然プラットフォームおよび人間たちプラットフォームのうえで動いています。同様に、どんなシステムを構築してもそれは基盤側に左右されてしまいます。実社会および人間の理解は役に立ちます。自然プラットフォームもございますので、科学の基礎的な勉強も当然有用でしょう。これは私の経験則ですが、学習という投資では基本的な知識ほどリスクが低い特徴があります。古いものほど役に立つといってもよいですね。多くの人は新しいものに飛びつきますが、新しいものほどリスクは高く、たくさんの新しいもののうちどれが残っていくのかは誰にもわかりません。未来予知できた人はすごいですね。今後も未来予知にかけるのもありでしょう。古いのに今でも残っているものは社会変化に耐える安定性を持っています。破壊的イノベーションで、古いものが倒されることを指摘する人もいるでしょう。ところが、破壊的イノベーションは古い知識が倒されたのではなく、古い知識から脱することのできなかった人間たちが倒されただけです。イノベーションの文脈でなくとも、柔軟性がないものは淘汰されてゆきます。実社会の人間と慣習を研究する学問は人文科学だとか社会科学と言われます。人文科学の部分集合が社会科学だとか読んだことありますが、ジャンルの名前はどうでもいいです。重要なのは、社会の慣習と人間を知ることです。題では哲学をあげましたが、じっさいには社会学や法学をやるのもよいでしょう。私もいろいろ手を出しています。その中でも哲学は格別です。古典として残っている哲学書は思考が深くて、考えれば考えるほど発見がありますし、前提から疑いつづけ判断を留保する態度を得るのも有用です。前提や自明性を疑う態度は、デバッグやサーバー障害で役に立ちます。おもしろいことに哲学の内容は抜きにしても、思考様式が非常に実用的です。私にはまだまだわからないことだらけです。人間と言語について勉強すると答えに近づけるのは間違いないです。疲れてきたのでまとめます。ここまで読んだ人はお疲れ様でした。いいたいことは、「ソフトウェアエンジニアとしてお給料をもらっている人は、実社会のシステムを実装しているはずなので、社会の勉強にも投資するとスーパーエンジニアになれるよ」です。なれるかは知りません。よい設計ができるようになります。デバッグもかなり強くなります。私もそうです(そうでした)。読書は一人でできますよ。興味のわいたジャンルからどうぞ。20:04なぜソフトウェアエンジニアの私が哲学をやるのかTweet広告を非表示にする関連記事2019-03-27人間の失敗を記したドキュメントは陳腐化しないSRE本を読んでからポストモーテムについて考えている。後者の...2018-05-14さいきん読んだ本さいきん本をよく読むようになりました。Mode雑感イラスト、プログラミング、文章などは意図...redux-sagaのall([fork])パターンは、即座にfinallyに突入してしまうであること、できること、すること月別アーカイブはてなブログをはじめよう!non_117さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。