学生時代に未踏ソフトウェアエンジニアとして「Noah」というシステムを開発

ーーまず佐伯さんのご経歴や現在の取り組みなどをおうかがいできますでしょうか。

佐伯学哉氏(以下、佐伯):自分は佐伯学哉という名前で、インターネットというかオンラインではけっこう@nullpo_headという名前で活動していることが多いです。都内の大手外資ITでソフトウェアエンジニアをしています。

ソフトウェアエンジニアのキャリアとしては、まず大学生時代にエウレカさんでアルバイトを3年ぐらいしていて、「Pairs」の開発を「Pairs」がまだ業界トップじゃなかった頃からやっていました。

エウレカさんの後は、今はもうないんですが、5人ぐらいのスタートアップのTomboというところで、Objective-Cで書かれた普通のiOSアプリをJavaScriptにコンパイルするコンパイラみたいなものを作るという、ちょっとマニアックなことのお手伝いをしていました。

あとは学生時代に未踏事業の未踏ソフトウェアエンジニアとして、最終的にはVEEというけっこう大きな国際学会に通った成果になる「Noah」というシステムを開発していました。

それも技術的にはマニアックなもので、仮想化技術を使ってLinuxのアプリケーションをWindowsとかmacOSとか、いろいろなOSにシステムコール変換して動かせるようにする。技術的にはおもしろいですが、何言っているかわからないようなプロダクト開発をやっていました。

未踏事業のちょっと前のことですが、大学の講義の一環で実習みたいなものがあって。そこでFPGAという、ある人はCPUを書き、ある人はCPUのためのコンパイラを書き、ある人はCPUのシミュレータを書くような感じで、みんなが集まってゼロからCPUを作るという、東京大学の情報科学科で名物講義があるんですね。

その講義で課題を解いたあとに、さらに数人で集まって「OSを動かそうぜ」と。何人かで集まって、自分たちで勝手にオペレーティングシステムを移植して。ただ、課題を解いただけのものではそのオペレーティングシステムを動かすいろいろな機能が足りないので、Cコンパイラをゼロから書いたり、ゼロから書いたCコンパイラを使ってxv6というOSを移植するようなことを、ただ楽しむためだけに数人でやるようなことをしていましたね。

そういうことをやって、それをブログに書いて、みなさんに読んでもらう。もしかしたらCPU実験の記事は読んだことがある方がけっこういるかもしれないなと個人的には思っています。

プログラミングを始めたきっかけは「ゲーム」

ーーありがとうございます。大学生時代の頃からのお話はありましたが、そもそも佐伯さんがプログラミングを始めたきっかけは何だったのでしょうか。

佐伯:これはけっこうあるあるだと思うんですけど、子どもってゲームが好きなんですよ。僕もゲームが好きだったので一般的に人気のゲームをやっていて。「ゲームを作れたらおもしろいな」と思った時に、『RPGツクール』という、ゲームなんだけどその中でゲームを作れるものがあって、それでRPGを作るのにハマっていた時期があるんですよ。それが小学校高学年とかかな。

当たり前ですが、『RPGツクール』は『RPGツクール』でできることしかできないんですね。「これ以上のことをするにはどうしたらいいの?」となった時に、インターネットで調べたら、「DirectXというものを使えばゲームが出来上がるらしい」と。当時の僕はまったく意味がわかっていなくて、なんなら今もわかっていないんですけど。

とりあえず当時DirectXのことは「ゲームを作るのに使えるプログラミング系のワード」だと思いました。でも実際はDirectXはゲームを作るフレームワークですらなくて、一要素ぐらいのものでしかないんですけど。

ただ小学生の時はそれがどれくらいのものかわからなかったから「わからない、わからない」と調べるうちに、「DirectXの前に、まずはプログラミングというのを学ばなければいけないらしい」という話になって。それでプログラミングの入門とかを始めたら、ゲーム作りのことは忘れてプログラミングにハマっちゃったみたいな。こういった流れは、自分のまわりではけっこうあるあるな気がします。

ーー調べていったらプログラミングが必要で、気がついたらプログラミングにハマってしまったと。

佐伯:そうなんです。幸いなことに家にパソコンがあったので、そのパソコンでRPGを作るだけでなくてプログラミング入門もやってみて。「OK」のダイアログが出て、「OK」を押したら無限に「OK」が出続けるみたいなものを作って笑い転げる小学生でした。

本格的にプログラミングを始めたのが中学生ぐらいで、地道にプログラミングのことを学んでいきました。真面目なプログラムを作ったのは高校生の頃です。

個人的におもしろいと思っているのは、自分は高校生の頃、高校の寮にいたんですね。その寮は、本とかは良いんですけど、パソコンが持ち込めなくて。プログラミングの続きをやりたかったんですが、パソコンはダメ。でも携帯はOKだったんですよ。ちょっと不思議ですけど(笑)。

携帯上でプログラミングできるプログラミング言語みたいなものがあったので、それをダウンロードしてみてやってみていたんですが、バグがあったり、自分がほしいと思った機能がその携帯用のプログラミング言語にはない。

だから、寮から近くのネットカフェに自転車で行って。そのプログラミング言語がたまたまオープンソース、いわゆるソースコードが公開されていて誰でも開発に参加できるみたいなかたちだったので、その言語をフォークして、自分用の改良版みたいなプログラミング言語を作って。そしてそれをコミュニティに公開して、みたいなことを高校生の時にやりました。

「プログラミング言語を作る」という経験から、けっこう本格的にプログラミングの世界が好きになったというか。

もともと寮でもやりたいと思っていたぐらいだからハマってはいたんですが、(それまで書いていた)しょうもないプログラムじゃないものを初めて書いたというか。高校生の頃に寮にパソコンが持ち込めなかったら、近くのネットカフェに通って、1時間100円で書いたので、有償労働と言うか(笑)。

モノをつくるきっかけは「不満」と「学び」

ーー学生時代から主体的に動かれていたことが今までのお話で伝わってくるのですが、その原動力がけっこう気になっていて。やはり「プログラミングが好きだから」でしょうか?

佐伯:そうですね。プログラミングが好きだからだし、もっと一般化しちゃえば単に「趣味だから」というのが一番言えそうです。

例えば自分の高校の友だちは楽器を弾いている人が多かったんですが、楽器は持ち込みOKだったので、その人たちは自分の部屋でも練習するし、お金を払ってスタジオで練習もする。

自分もその感覚で、寮だったら持ち込みOKの携帯でプログラミングをするし、もっと改良したくなったらネットカフェに行って、100円でプログラミング言語自体を改良するし。変わった趣味という感じですかね。

ーーちなみにプログラミングで「モノを作りたい」と思うきっかけは、どのようなものなのでしょうか。例えば人に必要とされているものを作るのか、「世の中にはこれが必要かも」と思いつくのかとか。

佐伯:一番多いケースは、自分がいると思ったモノ。つまり自分が日常的に困っていて、「なんでこんなものがないんだ」と思っていろいろ考えてるモノです。自分にとっての不満や友人の不満とかでタネを作って、あとはそれを作る中で、技術的な学びがあるか。

「このアイデアはみんなほしいはずだ」と思うものを優先的に作り始めたりはします。僕はどれでもいいんですよ。どれも作りたいから。その中で「これをやるとみんなもハッピーだから、極端な話でいえば、バズってフィードバックをもらえるかな」みたいなものからやっていますね。

今はただ単に目的ベースじゃなくて、「これでできる、おもしろいことはなんだろう」と考えることも多いですね。ただそれでやると意味のあるモノはできないことが多くて、だいたいはKernel/VMとかで発表して、マニアックな人たちがただ喜ぶだけのことになることが多いですけどね。「なんでそんなことを?」みたいな喜び方はしてもらえます(笑)。

ーー作成している途中で心が折れる時はありますか?

佐伯:飽きるという意味でもあるし、技術的に「これはできないな」みたいになることもあります。プログラミング言語を作った高校生の時も、当時はあまり技術に強いわけではないので、「やりたいけどできない」と思って僕は諦めちゃったんですけど。でも、数年後に振り返ってみたらできることもある。

戻るケースはあまりないですが、できなかったことをベースにして、似たようなもっとおもしろいことを思いついて。その時の経験を活かしてできることもある感じですかね。

YouTubeチャンネル「ゆるぽいんたーfm」について

ーー最近ではYouTubeチャンネルで動画を投稿されていますが、始めた経緯はどのようなものだったのでしょうか。

佐伯:「ゆるぽいんたーfm」というYouTubeチャンネルをちょっと前に開設しました。1本目の動画では、今の高校生は「情報」が必修になって、しかも基本情報技術者試験とか応用情報技術者試験のレベルのことをやるという話を聞いて、「みんなで教科書を見て驚こうぜ」という企画をやったんですね。

まだ公開されている動画が1本しかないので、話すのが若干難しいところがありますが、始めた理由は単純に趣味というか、「YouTuber楽しそうじゃない?」みたいな。

「やってみない?」みたいなことを大学の同期に相談して、みんなも「楽しそうじゃん」ということで始めて。ただ「僕らはYouTuberみたいにしゃべりがうまくないから、コンピュータ系のことをネチネチやるか」みたいな感じで始まったのがアレですね。

ーーあの動画を見て、「今の高校生はすごいな」と思いました。

佐伯:見ていただきありがとうございます。本当にすごいですよね。すでに共通テストが1回ありましたが、僕ら3人中2人はボロボロでした。でも1人は満点を取っていて、その人は大学時代からすごく成績が良かったから、やはり勉強が大事なんですね。AIもすごいですけど、今の高校生もすごいです。

いつもあるのは「新しいことに挑戦したい」気持ち

ーー佐伯さんは今までいろいろな場所に身を置かれてきたかと思いますが、環境選びや異動のタイミングで、何か意識していたことはありましたか。

佐伯:社会人になってからの経歴という意味では、新卒で入ったのがマイクロソフトです。日本のマイクロソフトにソフトウェアエンジニアとして入って、Bingの日本語の検索エンジンの改善、あとはBingの広告とかをいろいろやっていました。

3年ぐらいいたあと、次にテトレートというUSのスタートアップにフルリモートで1年くらい参加しました。今はまた転職して、別の大手外資系IT企業にいます。

移った時は深く考えていないわけではないんですが、説明が難しくて。タイミングですかね。

1社目から移った理由にネガティブなものはあまりなくて、やはりふだんから「新しいことに挑戦したいな」と思っているんですよ。僕だけじゃなく、「今のことを学び終えたら、コンフォートゾーンを抜け出して次の挑戦をしよう」みたいな。そういうきれいな言葉があるんですけど。

(一同笑)

そのとおりだとも捉えられるし、一方でたまたま知り合いの方がテトレートという会社で働いていて「こっちに来ないか?」みたいな話をされて。BingはWeb開発でしたが、システムレイヤーの開発も好きで、テトレートからはシステムレイヤーの中間みたいな開発に携わる仕事の話もいただいて、「おもしろそうだな」と思ってジョインしたんですよね。

だから必然的なタイミングだったわけではなくて。ただふだんからアンテナを伸ばしていたらおもしろそうな話をもらえて、自分のまわりを見渡した時に「3年目は新しい分野に挑戦するには良いタイミングかな」と思って2社目に移りましたね。

AIの進歩は恐れずに楽しむ

ーー佐伯さんは2年前にTwitterで「マジで大学時代から言ってる現代でプログラミングと呼ばれるものは自分らが40になるころには消滅してるから、流行は追おうな、できればアーリーリタイアしようなというの正しそう」といった投稿されていましたが、現在のAIの発展とエンジニアのこれからのキャリアについては、どうお考えですか。

佐伯:そうですね。当時は半分冗談・半分本気でした。いわゆる「AIがプログラマーの仕事をなくすんじゃないか」みたいな話ですけど。今は半分冗談・半分本気じゃなくて、70パーセント本気・30パーセント冗談みたいになってきましたよね。そう考えると、「40歳ぐらい」と言っていましたが、「思ったより早かったな」というのが最近の感想です。

僕はAIの専門家ではないので、ただのイチ労働者というか生活者としての意見になってしまいますが、最近は「ChatGPT」が流行っていて、ちょっと前には「GitHub Copilot」も流行りましたよね。

僕も触ってみたんですが、いわゆるGitHub Copilot以降に出てきたAI系の技術は、実際にかなり実用性が高いです。「ついにやってきた本物のAI」という感じがしています。

今できることは、技術に触れてみること。僕は詳しくないですが、知り合いも含め、TwitterにいるAI系の人たちは、どんどん先のことを呟いてくれています。考察とかもしているし、技術的な限界とか現状も呟いてくれている。僕は(表面を)触るだけですが、彼らは内部を実際にいじったりしているんですね。

それで「何ができるか」とかを見ていると、雰囲気がわかってきます。技術はもちろん僕も見ますが、さらにアンテナが高い人がその技術をどう受容しているかみたいな雰囲気がわかってくる。

今までの例でいえば、ノーコード、ローコードの話で「プログラマーがいらなくなる」と言われることは何回もあったんですよ。でも反応はずっと同じで「これは現場ではうまく行かないよね」みたいな。

ただ、今回のAIの反応はぜんぜん違うんですね。みんな絶句するんですよ。「これはマジだ」みたいな。「それで何が起こるのか」といっても、やはりみんな先はわからないんですよね。みんなこれからどうなるかはわからないですが、逆説的に「これが本物だな」というのはわかる。

だから今せいぜいできることは、この発展を楽しむぐらい。もちろん会社で成果を出して、一生懸命上司の話を聞いてプロジェクトをどうにかして評価をなんとかすることをやりつつ、「外の世界のことはどうしようもないから、これから行く場所をみんなで楽しもうね」と。

その条件はみんな変わらないと思うので、「今これをしたから、その波に自分だけうまく乗れる」みたいな人は、そんなにいないと思うんですよ。できることと言ったら、すごい金持ちになって株を買うぐらいなので。

(一同笑)

だから1人のエンジニアとしては、行く末を見守りつつ、ChatGPTの使い方が出てきたら、自分で何かそういったおもしろいことができないかを考える。これは意識的にじゃないですが、今一番考えていることかもしれない。

ーー先が見えないからこそ、恐れても仕方ないと。

佐伯:そうですね。話が脱線するかもしれませんが、最近すごくおもしろかったのが、Neuro-samaというVTuberがいるんですけど。VTuberなんですけど、中身の人間はいなくて。僕もこの前知ったばかりなので構成技術をちゃんとわかっていませんが、たぶんChatGPTとかGPT-3似のチャットモデルを使っていて、ストリームのコメントに、AIとはわからないくらい流暢な返信をしているんです。

しかもけっこう冗談とかがおもしろいんですよ。それもテキストで返すんじゃなくて、ニューラルベースの音声合成で流暢な英語を話して。ゲームプレイ学習で『Minecraft』もプレイしているんです。

ーーゲームまでするんですか!?

佐伯:ゲームもする上に、歌枠もあって、歌うんですよ。裏は取っていませんが、いわゆる音程と音素を合成して切り貼りするベースの形式じゃなくて、時々間違った発音をしていているから、たぶんニューラルネットワークベースなんですよね。しかもすごいのは、これを作っているエンジニアが1人なんですよ。

ーーそれこそ絶句ですね。

佐伯:絶句なんですよね。僕も昨日その話をして「すごい」としか言えなくて。何が起こっているかわからないから(笑)。その人はもしかしたらものすごく機械学習のプロフェッショナルな場合もあるし、「すごい」と言っているけど、GPT-3ベースのテキストモデルは既存のAPIとかもあるので、実は既存のパブリックなAPIサービスの組み合わせでできたりするかもしれないんですよね。

今ある技術を使ってそれをおもしろくする。そういうことができたらいいなとは個人的に思っています。恐れずに楽しむというか、単純に自分の遊び道具が増えたと思ってやるのがいいのかなと思っていますね。

これからもモノを作り続けていく

ーーNeuro-samaのお話は衝撃的でした。これまで過去・現在のお話をうかがってきましたが、これからの目標は何かありますか。

佐伯:ロングタームで何かあるというわけではありませんが、ライフワークみたいなものは続けたいなと思っていますね。もとから何かを作って発表したり、何かを調べて発表したりするのも好きなので、基本的には何かプログラムを作っているんですよ。

GitHubとかにも載せていますが、最近もWindowsの指紋認証とか顔認証をWSLのsudoで使えるようにするとか、systemdをWSLで動かせるようにするものを作っていて。「何かを作って誰かに見せる」ということはもともと好きなので、基本的にそれはずっと続けていく。

あとは、先ほどお話したYouTubeと、あとはブログ記事も最近書いているし。「こういうプロダクトを作ったらおもしろいんじゃないか」みたいなアイデアはあるので、それをやっていくことは続けていきたいですね。

ーーモノを作り続けると。

佐伯:趣味と実益を兼ねた方面というか。あとは当然ですが、1人のソフトウェアエンジニアというか労働者なので、単純な腕力というか技術力というか。きれいなデザインをするとか、そういった細かい技術力みたいなものも、主に仕事中に上げていければな程度に思っているものですが、趣味と絡めてやっていければなとは、もちろん思っていますね。

(次回に続く)