会社のとある同期との会話。技術畑の違いを実感したときのお話です。大したことではありません。

私「スクリプト言語とかコマンドって便利すぎると言うか、使ってて不安になるよね。こんな簡単に実装できていいものなのかって」
S君「分かる。俺もOS出身だからシェルとか便利すぎてもうw」

私の畑はハード。特に電子工作が中心で、ユニバーサル基板で配線した自作マイコンボードにプログラムを書きこむというのが標準スタイルです。S君はOSの開発から入ったソフト寄りの方。最近電子工作を始めたとのことで、ちょくちょく参考情報を聞きに来ます。双方それなりに開発の経験はあるものの、低レベル(というと齟齬が生まれるので低レイヤーと呼ぶべきか)の開発を始めに触れたので、高級言語には少し戸惑った経験があります。

センサやマイコンの話に華を咲かせているとあるとき、

S君「CPUを実装してフルスタックエンジニアを名乗ろう」

フルスタックエンジニアとは、幅広い技術分野に精通した何でもできるスーパーマンだよーっていうエンジニアのことです。ときどきいます。何を聞いても答えてくれるスーパーマン。きっと脳にはWi-Fiモジュールが載っていて、いつでもWikipediaとQitaを参照できるのでしょう。

この言葉を聞いて、

私「考えたことあるけど、死ぬほど部品点数が多くなるんだよな。ICがズラーーーと並んだ基板が、何十枚と重なるみたいな」
S君「そうか、畑が違うからそう解釈されるのか」
私「?」
S君「(とある書籍の画像を見せてくくる)」

スマホの画面には、「CPU自作入門!HDLによる論理設計」と書かれていました。

なるほど。FPGAで論理を組んでいってCPUを作るってことか!

確かにそれも「CPUを実装する」と表現できるなーと思いました。

「CPUを実装」と聞いて、私ははんだ付けのことしか思い浮かびませんでした。レジスタ付けて、加算器付けて、配線して・・・確かに、プログラミングでも機能を実現することを「実装」と呼びます。でも、この時は「CPU」という言葉がチップであるという固定観念に捕らわれていました。

結果的に完成される機能は同じでも、携わってきた分野で実現方法の発想が異なることを実感できたのは、とても面白い体験でした。一昔前に、「一見関係のない分野の人たちを繋げてイノベーションを起こす」みたいなCMを見た記憶がありますが、今回みたいに刺激しあうことで、新しいアイディアが生まれるんだなーと思いました。一つの分野に没頭するのもいいけれど、たまには普段関わりのない分野の人たちと話してみるのも、いいアイディア得られるきっかけになるかもしれませんね。