こんにちは!今回は当社代表の後藤がCTO石田の魅力をインタビュー形式でお伝えします!
エンジニアとして何か社会の役に立ちたい人、多様な働き方を求めている人へ、コードタクトではそれがどちらも実現可能であることをインタビュー内容から感じて頂ければと思います。
当社CTOの石田は、高校生からプログラミングをはじめ、これまで「U-20プログラミング・コンテスト」での最優秀賞受賞、「RubyKaigi2018」において5作品の入選経験など、様々な実績を持つエンジニアです。代表の後藤との出会いは、未踏スーパークリエータ(※1)であった後藤とその関連で共通の知り合いがいたため、その人を経由して出会いました。
コードタクト設立メンバーでもあり、”schoolTakt(スクールタクト)”の開発に設立当初から携わっている石田は、社内では「ペンさん」という愛称で呼ばれています。後藤と石田の会話を最後までお楽しみ頂ければと思います。
※1 未踏スーパークリエータ…IPAがソフトウェア関連分野で優れた能力を有する若い逸材を発掘・育成することを目的に行われている
◆働き方と趣味のプログラミングの関係性
後藤「今日はペンさん(石田)の働き方や趣味、スクールタクトについていろいろ聞いていきたいなと思います。早速だけど、今の働き方はどう?」
石田「週4日で働かせてもらえることは、とても有難い。平日休みの日は、妻と出かけることが多く、お店や美術館、博物館が週末より空いているのでゆっくり観ることができて、リフレッシュできているかなと。」
後藤「そうなんだ。ペンさんは沖縄に長く住んでいたもんね。東京だと現代美術館とかメディアアート、森ビルは現代アートが多いのでお勧めかな。あとは、東京都現代美術館、ICCとかもぜひ行くべき!ペンさん好きだと思う!休みの日にそういった現代アートから影響を受けて、趣味で何か作成したりするの?」
石田「そうだね。芸術的なものに触れることで、インスピレーションを受けることもあるよ。最近だと自己複製で線香花火をQuine(※2 文字でできた線香花火、下アニメーションGIF①)で作ってみた。それきっかけで、Quineではない、リアルな3Dの方(下アニメーションGIF②)の本気の線香花火を作ってみたんだよね。」
(※2) 自分が書いたソースコードと完全に同じ文字列を出力するプログラム
◆アニメーションGIF①
◆アニメーションGIF②
石田「この線香花火は形そのものよりも、レンズや人の目を通したときにできるピンボケ具合を出すことに力を入れてみた。点光源をぼかすことでキラキラと綺麗な玉ボケを作ることができて、それが移動したときに光がどれだけピクセルの影響を受けるのかなどの動きを表面と裏面で加算する。そうするとピンボケを計算できると気づいたんだよね。ピンポケした筒をいくつか作り、1つ1つのピクセルに注目して距離に応じたボケ具合を計算した上で筒の形を変形させて立体感を持たせたんだ。」
後藤「なるほどね。そもそもそういう作品を作ろうと思ったきっかけは何かあるの?」
石田「Quineが好きになったきっかけは、Rubyを使っていてよくわからない予想外の動きをするプログラムを書こうと思っていたんだよ。そしたらアニメーションとかコードを組み合わせて何かすごそうなことをすると、アスキーアートで動くQuineに辿りついていた。」
後藤「Quineは自分自身を出力するという自己再帰的な構造だから、関数型言語の方が作るのに向いている気がするけど、そうではないの?」
石田「いや、Rubyもmapとか関数型言語含めいろいろな言語の良い所どりしたところがあって、RubyがQuineを書くのにかなり向いている言語だと思う。スクリプト言語だと書きやすいし、Quineを書くために生まれていると思えるような言語機能がいろいろとあるんだよね。」
後藤「ペンさんはRuby好きだもんね!Rubyのどんなところが好きなの?」
石田「データとメソッドを1つのオブジェクトにまとめ隠蔽するカプセル化しているのを意図的に壊せるところ。型にはまったこともできるし、それを自由に作り出すこともできる。さらには、プログラマーが自分で壊したいと思ったのなら壊せるという思想も好き。意図して壊すのなら壊せるべきだとも思うし、実際に壊せてしまう自由度の高さも良い。それを利用して見た目と違った不思議なことができると気づいたのであれば、それを使って遊んでみたくなるんだよね。」
後藤「それを体現した代表的なものがペンさん的にはQuineなの?Quineを書き始めたきっかけは?」
石田「そうだね、きっかけは、うーん、特になく、昔からプログラミング言語の機能を想定外の使い方をして遊ぶのが好きだったからな~。例えば、僕が書いたとあるFizzBuzzのプログラムでは、一見、普通のFizzBuzzに見えているけど、全角の空白文字がいろいろなところにちりばめられた結果として、見た目と全然違うコードが埋め込まれていて、それを実行するときちんと動くところがおもしろい。そういうコードを書くのが楽しくて。」
後藤「過去には、TRICK(※3)というおもしろいプログラムを書く大会でペンさんの作品が3位と5位をはじめ5個入賞したんだよね。そういったペンさんの趣味コードの中で、1番衝撃を受けたのがマインクラフト(※4)。ある種のコンピュータを作るのがすごいなと思っていて。それは、Rubyとの関係はあるの?」
(※3)Ruby を使って「変」なプログラムを書き、その「変」度で競い合うプログラミングコンテスト。Transcendental Ruby Imbroglio Contest for rubyKaigi の略。日本語にすると「超絶技巧 Ruby 意味不明コンテスト」。
https://github.com/tric/trick2018/blob/master/README.ja.md
http://tompng.hatenablog.com/entry/2018/06/03/020238
(※4)https://www.youtube.com/watch?v=UmBkiT6eYYA
石田「Rubyでマインクラフトのセーブデータを直接生成したからRubyと関係があるよ。」
後藤「そうなんだね。数式で3Dを作るのと、プログラミングも関係があるの?」
石田「あるよ。数式が0になるように画面上に打っていくと形になり、数式1つで形を定義できるからレンダリングするコードが短く書ける。そうすると、Quineの元になるデータになっていてアスキアートのアニメーションにはとてもQuineを作るのに便利なんだよね。これまでにカロリーメートやクリスマスツリーを数式で形状を表して作ったよ。」
◆スクールタクト開発の中で活きる趣味コード
後藤「趣味コードと仕事で書いているコードで接点はある?」
石田「趣味がプログラミングだから、プログラミングを通して何かを創ることも好きだし、楽しい。今の仕事もプログラミングで作ったものをサービスとして提供することにやりがいを感じているよ。スクールタクトでは、学校で言う黒板のように、複数人で文字や線を描いて協働学習ができるキャンバスの開発にいろいろ工夫をしているかな。頑張ったところは、ベジェ曲線を消しゴムで消せるようにしたところ。端だけでなく真中を消せるようにしたことで、ベジェ曲線と円と消しゴムが通って重なっているあたりをカットしたり、新しいベジェ曲線を再計算して当て込めているんだよね。」
後藤「キャンバス上で指で線を描くとぶれて歪んでしまい、綺麗な線を描けなかったりするんだけど、余計なぶれた点を消して滑らかにするのはこれまではなかった機能ですごく使いやすくなっていいなと思う。手を離した時に自動で補正するのをキャンバスでやるのは凄いよ。それによってデータ量も減るし!既存のライブラリを使わずに自前で実装することも、エンジニア的にもすごいなと思うポイントだよね。」
石田「キャンバスを1人でただ書くのではなく、複数人が同じキャンバスで書く性質上、自分側で書いた順序と“誰が線を書くか”や“誰が先に書いたか”等の順序が異なるから、そのコンフリクトをきちんと管理する関係上、自分でオブジェクトを管理する必要があったから1からライブラリを書いたんだよね。」
後藤「複数人が同時に書き込むシチュエーションのライブラリはあんまりないよね。既存のライブラリは、履歴をちゃんと追うということはしていないことが多いし。僕もエンジニアとして初期の頃はペンさんと一緒にコードを書いていたけど、その時に思ったのが、ペンさんのコードはきれい過ぎて読めない(笑)。なんでこれがこう動いているのかわからなくて感動したことがあった。これがきっかけで“もっと勉強したいな”“一緒に働きたいな”と思ったし、こんなコードを書ける人は、世の中にたくさんいるわけではないし、本当に稀有な存在だと思ってる。普通の人には不可能なことを可能にすることがペンさんの特徴だと思うし、そこをメンバーも尊敬している。発想力があるコードだから非常にクリエイティビティを感じるんだよね。それは普段から趣味でQuineをかいていることが関係していると思うし、探求する心があるんだろうなと思う。職業プログラマーであれば、ある目的のために特化した勉強と必要最低限のことしかやらないだろうけど、普段からプログラミングで遊んでいるからこそ他の人が発想しないことが思いつくんだろうなと思うよ。」
石田「1週間ずっとプログラミングしていると疲れてしまうけど、そこで活きてくるのが水曜の休みであって。芸術的なものに触れ、ストレス発散として趣味のプログラミングで遊びリフレッシュしているかな。」
後藤「プログラマーは人によって生産性が全然違うと言われていて、ビジネス系だと力業でできてしまうところもあるからね。専門性が高い問題になると、解けない人が100人いても意味がないし、他の職種よりもプログラマーはそれができるかできないかという判断になるけど、ペンさんはできることが多い。そういった意味でもペンさんの技術を学びたい、一緒に仕事をしたいと人が集まってくるんだろうなと思うよ。」
日々息をするかのようにプログラミングしている天才的な才能を持っている石田がコードタクトで働く理由は、代表の後藤と出会ったから。後藤の人を巻き込む力に惹かれ、一緒に働くメンバーにも恵まれていると感じている。また、これまで開発し育ててきたスクールタクトへの愛着がある。そんな想いを持ちつつ、仕事に趣味に遊び心溢れる作品をこれからも作り続けるだろう。
*石田の他の作品について気になる方は以下もご覧ください。
https://twitter.com/tompng/media
コードタクトには熱い想いをもっている人、ユニークなメンバーがいます!
フィロソフィーへの共感していただける方、未来の教育を考えて主体的に動ける方、コードタクトの想いに共感いただける方のご応募をお待ちしております!