• リフト株式会社
    • マーケティング部
    • 関根謙志郎

    好きな技術書で知るエンジニアの判定法①『ハッカーと画家』

    目次

    好きな技術書で知るエンジニアの志向性 『ハッカーと画家』 -1

    先日公開した、『海外戦略のための外国人エンジニア面接術』の中で、

    「ITエンジニアと言っても、いろんなスタンスがあります。慣れ親しんだ言語やコミュニティによって性格や適正が違うので注意しましょう。」

    と記述しました。当然の疑問として

    「じゃあ、どんな種類のエンジニアがいるの?」

    「どうやって、判断すればいいの?」

    と思われたかと思います。

    実際、言語ごとの特色は非エンジニアの場合が多い人事担当者からすればわかりにくいものです。

    例えば、

    「行儀が良い。」

    「表現力がある。」

    「人間を信頼する。」

    という表現があっても、普段からコードを書かない人からすれば、何のことなんだろうと更に疑問が増えてしまった経験があるかと思います。

    そこで、これから、技術書やエンジニア向けエッセイに焦点を絞って、こんな本に影響を受けた人はこんな考え方をする人が多いということを挙げていきます。堅苦しい言語仕様を列挙するようなコテコテの技術書から、ちょっとしたエッセイなどの読み物まで幅広く扱っていきます。

    記念すべきシリーズ第一回はポール・グレアム『ハッカーと画家』です。ここでいうハッカーとはサイバー攻撃を仕掛ける犯罪者のことではなく、高い美意識を持った優秀なプログラマのことを指します。本記事では簡単にご紹介しますが、ポール・グレアムのいうハッカーを一言で言い表して理解した気になってしまうのはもったいないので、実際に読んでみることもおすすめします。

    『ハッカーと画家』とは?

    『ハッカーと画家』はプログラマの間で名著と呼び声が高く、ハッカーたちが社会に対して感じている理不尽や、価値観のすれ違いなどを言語化してくれると言われています。同時に、この本の内容は尖ったことも多く書かれているため、極端過ぎると賛否両論を巻き起こしてきた本でもあります。

    この本に書かれていることがすべてのハッカーに成り立つわけではありません。妄信的に正しいものとして見るのではなく、

    「こんな視点でハッカーは世界を見ているのか」

    という世界観を把握するために読んでみると、プログラマと会話するときに理解が深まるかと思います。

    著者は画家でプログラマのポール・グレアムです。彼はYahoo!Storeの全身であるViawebの開発者で、同時に画家でもあります。

    本書は、

    「プログラマとはどういう人種か」

    「いいプログラミング言語とは何か」

    「金持ちになるにはどうすればいいか」

    「いいデザインとは何か」

    「ものを作るとはどういうことか」

    「ハッカーと画家の共通点は何か」

    「ハッカーが価値を置くのは何か」

    「土木工事とソフトウェア開発の違い」

    と言ったプログラミングに限定されない話題まで幅広く言及しています。

    また、グレアムはまだインターネットが今みたいに発達する前から

    「これからはブラウザ上で動くWebアプリケーションの時代だ。プログラムをサーバー上で動かし、そのインターフェイスにブラウザを用いる。そんな状況で勝ち残るには、好きな言語で素早く開発することが重要だ」

    と主張していました。

    なぜなら、ブラウザで動くということは、その実行環境をサーバーと言われる開発者が手元に置いておける環境にすることができ、プログラマがイメージしたことをすぐに反映させることができるからです。それまでのアプリケーションはデスクトップアプリケーションと呼ばれ、実行環境をユーザーのローカル環境に用意する必要がありました。そのため、アプリケーションのアップデートがユーザーの意志に委ねられていたり、Windowsアップデートのようにユーザーにとって不快で作業を中断させるようなものだったのです。実際に、ポール・グレアムの考えたことは現実のものになり、様々なアプリケーションがブラウザ上で完結するようなりました。

    例えば、TeXを書くために少し前まではローカルで環境構築しなければなりませんでしたが、今ではOverleafを使えば、複雑怪奇な環境構築をすっ飛ばして直接書き始めることができます。

    Google翻訳を使えば、ブラウザ上で翻訳を行ってくれます。

    WolframAlphaなら、高度な計算はもちろん、複雑な数式をグラフにしてくれます。

    Netflixは特別なアプリやDVDを用意しなくてもブラウザ上で映画を楽しむことができます。

    しかし、Webが急成長したあとに、スマートフォンが急成長する時代が来ました。スマホ向けアプリでは、従来のデスクトップアプリケーションのように、実行環境をユーザーのローカル環境に置いてるものが多くあります。もちろん、サーバーと接続して、サーバーの処理をスマホ上で表示させるなどのブラウザアプリと近いものではありますが、個々のアプリは特定の目的を持ったもので、汎用的なものではありません。これは、サンドボックスと言われるアプリごとに完結した処理を行う方針によるところが大きく、ユーザーはサンドボックスによってセキュリティを意識せずにスマホを使うことができます。

    以上にように、汎用的なブラウザアプリと、個別具体的なデスクトップアプリとスマホアプリの二つの潮流は交互に、そしてお互いのいいとこどりしながら発展してきました。

    『ハッカーと画家』を盲信するのは危険ですが、普段何気なく便利だなぁと思ってるソフトウェアの潮流を理解し、次の時代を予測する上で有用な視点を知ることできるのが本書の魅力です。

     

    また、ポール・グレアムは、アプリ開発において重要なものに共感力を挙げています。

    「絵を描くプログラマは、独りよがりで自分だけで完結した美しさに固執しそうだ」

    と思うかもしれませんが、いかにユーザーに使ってもらうかということの大切さを同時に説いています。

    更に、アプリ開発はビジネスである以上、他社と比較してスピードで勝ってる必要があります。生き馬の目を抜くIT業界でやっていくためには、どうすればいいのか、という競争に勝ち抜くヒントも多く載っています。

    その一つに素早くアプリ開発するために、強力な言語を選ぶべきという持論を展開します。多くの言語の中でポール・グレアムが選んだ言語はCommon Lispです。

    Common Lispとは?

    ※この箇所はやや専門的なので読み飛ばしてもらっても構いません!

    Common LispはLISPと言われるプログラミング言語の一つです。実際に実装された高級言語としてはFORTRANの次に生まれたため、非常に歴史が古い言語です。新しい言語を開発するときにプロトタイピングするのに適した言語で、その表現力から昔は人工知能の研究や3Dの実装、ミサイルの軌道計算など多くの場面で使われてきた実績があります。LISPの魅力はなんと言ってもプログラマの思考を自由に表現できるところにあります。

    なぜでしょう?

    LISPの特徴にS式と言われるリスト構造を表す記法があります。S式とはSymbol Expressionの訳語で、括弧を多用することで非常に柔軟にハッカーが思い描いている論理構造を描くことができます。ざっくり言うと、リストというシンプルな構造を用いて統一的に記述していくのがS式ということになります。

    S式やCommon Lispの厳密な説明は『Practical Common Lisp』などを読んでもらうとして、ここではなぜ、S式と呼ばれるものは表現力があるのかを概説します。

    元々LISPは、データを扱うS式と、プログラムを扱うM式の二つで記述する言語を構想していました。しかし、M式は結局ほとんどのLISPで実装されず、専らS式のみで表現されることになりました。つまり、データを扱う構造で操作そのものを表せるようにしたのです。つまり、関数もデータ型の一種として扱えます。これによって、プログラムによって行われるすべての計算を記述する単一のモデルを持つことが可能になりました。

    ちょっと難しくなってきたので、一般論から説明してみましょう。プログラミングでは、大きく分けて二つのものを記述します。操作(命令)と対象です。

    関数型言語であれば、関数と引数

    オブジェクト指向型言語では、オブジェクトとメソッド

    などと呼ばれていますが、大きな枠組みで言えば、操作とその対象を記述しているに過ぎません。

    現在のLISPでは、関数による操作対象であるデータを表すはずだったS式だけで、すべてを記述してしまいます。これによって、関数それ自体をデータとして扱うことができるため、

    「プログラムをプログラムするプログラム」

    と呼ばれるような、命令自体を命令の中に組み込めるような記法が可能になります。

    これは英語で例えるなら、英語話者がその場で話しながら英文法自体を作り変えて自分の考えを自由に表現するようなものです。

    人間同士の会話では、そんな自由な発想では意思疎通ができませんが、コンピュータ相手ならプログラマの意図を汲み取って解釈してくれます。

    このように、シンプルで統一的なS式を導入することで、プログラマがかんたんに言語を拡張し、思いついたことをまるで粘土みたいに自由に追加することができるのです。

    『ハッカーと画家』を影響を受けた本に挙げる人はこんな人

    では、『ハッカーと画家』に影響を受けた人はどんな人でしょうか?

    1.これからのエンジニアリングのトレンドについて考えることが多い人

    『ハッカーと画家』は今から見たら古いと思うようなことが書かれていますが、それは当時から見たら革新的で意欲的なことでした。つまり、そういった内容を確認することで、

    「これからの時代はどう変わっていくか」

    「プログラマはどんなことに着目して技術的なトレンドを追っているのか」

    というのを知ることができます。新しい技術が生まれようとも、生粋のハッカーのスタンスやメンタリティは今後も廃れることはないでしょう。非常に頭の切れるハッカーがどんなことを考えているのかを知るきっかけになります。

    2.不合理なものを憎み、美しい解決策を考えるのが好きな人

    ポール・グレアムは『ハッカーと画家』の中で、良いデザインとは何かついて述べています。ソフトウェアはユーザーがいて初めて意義があります。『ハッカーと画家』はデザインの教科書ではありませんが、使う人のことを考えることで、よりシンプルで、より強力な解決策としてのデザインが生まれることを思い出させてくれます。

    また、不合理で旧態依然なものに対して、どうすればより業務の効率化できるのかを考えるきっかけになります。無駄を削ぎ落とし、パフォーマンスを向上させ、革新的なアイデアを出せる人を雇いたいときは、この本の話を振ってみるといいかもしれません。正しい回答を暗記するのではなく、この本についてどう思うかをロジカルに表現し、未来を予測する力を見ることができます。

    3.生粋のLisper

    LISPは非常に表現力の言語であると同時に、非常に癖の強い言語です。Common Lispは二十年前に規格が決まったまま変化していません。日進月歩で言語仕様が変化するIT業界では異例なことです。では、既に古びた言語なのかと言えば、今でも一部のハイスペエンジニアに根強い人気を誇っています。言語仕様が変わらないのは時代に取り残されているからではなく、プログラマが自由自在に言語自体に機能を追加できるために、わざわざ言語事態を新しくする必要がないのです。

    そのため、プログラミング初心者が手っ取り早く見栄えのするものを作るのには向いていないと言えます。実装しようとする対象を深く理解した上で素早くプロトタイピングできる技術力があれば、これ以上になりぐらいのスピードと自由度でアプリ開発が行えますが、そうでなければ一から自分で作らなければならないという重圧と壁の高さに挫折してしまうでしょう。それでもLISPを愛するということは柔軟に対応する思考力と技術力を持っていることになります。

    また、LISPのS式は構文木と言われる、他の言語が隠蔽しているものをプログラマが直接書くため、LISPに書き慣れると新しい言語に出会ったとき

    「あぁ、これはLISPならこう書けるな」

    というように、言語ごとの差異を俯瞰的に眺めて柔軟に対応することができます。

    まとめ

    『ハッカーと画家』はエッセイ集です。非エンジニアが読んでも面白く、ビジネスマンがIT業界やハッカーという人種を知れる名著です。影響を受けた本にこの本を挙げるエンジニアは、広い視野でこれからのIT業界を見れたり、メタ的な視点で言語を理解している人が多く、頼りになる存在です。また、不合理で旧態依然なものを憎んでいることが多く、業務の効率化などを率先して行ってくれることでしょう。

     
    無料Ebook: 外国人雇用は難しくない!
    外国人雇用は難しくない

    外国人雇用の必要性は理解している。だけど始め方が分からない。

    そんなお悩みをお持ちではありませんか?

    本書は弊社が初めて外国人雇用をされる企業様をサポートする中でよく質問に上がる項目を参考に、外国人雇用の7ステップ毎の実務と注意点をまとめたものです。

    • ・自社に合った人材を採用する方法
    •  
    • ・違法就労を防ぐ方法
    •  
    • ・外国人を雇用する企業が利用できる可能性が高い助成金

    など、全37ページに渡って詳細に解説しています。

    ぜひ、外国人雇用の初めの一歩にご活用ください。

    Ebookをダウンロードする
     

    マーケティング部

    福島県内の高校卒業後、東北大学に入学。在学中は硬式野球部に所属。英語学、心理学、英語教育学を専攻。卒業後は社会を構成する『ヒト・モノ・カネ・情報』が遍在することで生じる歪み(社会問題)をビジネスを通して適正化するというミッションに共感しリフト株式会社に入社。現在はマーケティングを担当。