Cookpad Spring 1day Internship 2018 超絶技巧プログラミングコース 参加記
クックパッドさんの 1day インターンシップに参加しました. 「技巧を駆使した実用性のないプログラムを作成する『超絶技巧プログラミング』を習得する」という,インターンシップらしからぬテーマ (偏見) に惹かれて参加を決めました.
はじめに軽く自己紹介を済ませ,あなたの知らない超絶技巧プログラミングの世界の著者である遠藤さんの講義へ.
(自己紹介をやるとは思わなかったのでとても緊張してしまった.話す内容に「好きなエディタ」という案が出たときは「戦争がおこる……!」と勝手に戦慄していましたが,蓋を開けてみれば平和に終わりました.ちなみに私も使っているVSCodeは意外と多数派だった)
講義内容はRubyを用いた超絶技巧プログラミングの基礎的テクニックの数々を手を動かしつつ学ぶというものです.遠藤さんの作品の数々に圧倒されつつも,講義の中身は「Rubyはこの日のためにちょっと文法を予習しただけ」という私も分かった気になれる分かりやすい講義でした.
主な講義項目は
- Rubyのソースコードをアスキーアート化するためのテクニック
- CUI上でのアニメーションの作り方
- 標準出力への色の付け方
- 自分自身を出力するプログラム「Quine」の作り方
- データの圧縮等コードゴルフっぽいテクニック
などなど.
講義は午前中までで,美味しいお弁当を食べた後はいよいよ自分の作品を作る時間.3時間という短い時間でしたが,遠藤さんに質問したりしながらなんとか完成させることができました.全員が自分の作品のデモをしたのですが,どの参加者も個性的で面白い作品を作っていました.
ちなみに私は机の上にあったペットボトルのお茶をヒントに,「実行するたびにお茶が減っていくQuineもどき」を作りました. gist.github.com
(妙な形のプログラムですが,最後の10分でペットボトルっぽい形に成形したつもりです.これはペットボトルです.)
このプログラムをruby quine-like.rbみたいな感じに実行すると,標準エラー出力にペットボトルのお茶のアスキーアート,標準出力には元のプログラムとよく似たプログラムが出力されます.
標準出力に出力されたプログラムを (例えばruby quine-like.rb | rubyみたいな感じに) さらに実行すると,
お茶がちょっと減ります.ちなみに6回以上実行した時の動作は未定義です.
QuineもQuineもどきも全く書いたことがありませんでしたが,普通に生活していたら出会えない制約でプログラムを書くのが非常に新鮮で楽しかったです.今回の作品も,まだまだ改良したい点がたくさんあるので時間を見つけていじっていきたいです.
たぶん,このテーマでの1day インターンシップはまた開催してくださると思うので (?) ,機会と興味のある方は是非参加してみてください!
P.S.
最後のじゃんけんに勝って,あなたの知らない超絶技巧プログラミングの世界を遠藤さんのサインつきでいただきました!! ありがとうございます!!