0
0

More than 1 year has passed since last update.

一周年記念に"THE FIRST CODE"を完走した感想

Last updated at Posted at 2023-02-08

THE FIRST CODE ってなあに?

THE FIRST CODE という遊びを皆様ご存知でしょうか?

「一度だけの実行しかできない条件で、指定のプログラムコードを開発する」という、プログラミング系Youtuberの間で流行っている遊びです。
音楽系Youtubeチャンネルの THE FIRST TAKE をモジったタイトルになっています。

YoutubeやTwitterで #thefirstcode というタグで検索するといろいろな方がUploadしている動画を見ることができます。

ゆにるユニ一周年記念でやってみた!

ところで私はゆにるユニ、IT TechLeadのVTuberです。はじめましての方ははじめまして!
普段は プログラミング言語を作った り、Yuniru's HackerNews Summaryとして、ハッカーなニュースを毎週まとめてお伝えしています。。。!

実は2月5日に一周年を迎えたので、その日の遊びとして THE FIRST CODE を私も実際にやってみました……!

お題は3つ: FizzBuzz, BubbleSort, CellularAutomaton

動画アーカイブ → https://youtu.be/cgDPtcRO0O0

この記事には THE FIRST CODE を完走した感想、もとい反省とか気づいたTipsを書こうと思います!

完走した感想

事前準備で気をつけるべき点

やる前に準備をするフェイズで結構手間がかかりました。
まずあまり強いコード支援が効いてる状態だと興ざめになっちゃうので、VisualStudioCodeなどのエディタでは各種Extensionを無効化しておくことが必要になると思います。
私は設定を戻せなくならないよう、プロファイルを分割&この遊び専用のワークスペースを作ってから、ワークスペース設定としてExtensionの無効化作業を行いました。この方針は結構うまく機能したように思います。
またVisualStudioCodeを撮影に入れるので.envなどが展開されないように一般に配信上注意が必要です

便利な文法を正しく思い出せないなら、より安い文法を使うことで回避できる

あえて便利な文法ではなく、もう間違いなく思い出せる文法を使って組み合わせて書いちゃうことでコンパイルしやすくできたシーンがありました。(具体的にはgolangで配列内の2要素を交換したかったときに tmp 変数に一度退避しています。実際はgolangは a, b = b, a が通るので、そのほうがきれいです)
この作戦はうまく成功してBubbleSort実装は通すことができました。

また(ちょっと情けないことに)boolとintの相互変換について、あまり自信がなかったので最初から変数をintで定義したりしています。

添字、もしかしたら1文字は避けたほうがいいかもしれない

途中で ij を間違えて打っていました。
ビルド前にすごくガッツリレビューをして目視で見つけているのですが、これはかなり危なかったです。
THE FIRST CODEの場合、こういったミスが致命傷なので、ループの添字だとしても1文字じゃなくてもっと明瞭な名前をつけてあげたほうがいい可能性を感じました。

作るべきコードの仕様は明確化したほうがいい

見てくれる人もそうだけど自分自身悩んでしまうので、作るべきコードの仕様は割と明確化したほうがよいです。また曖昧なままだと結果の成否も確認しづらくなるので良くないです

今回の場合は有限長の一次元セルオートマトンを開発する気だったんですが、明白に一次元と言ってなかったのでコンウェイのライフゲームのほうを想像する方もいました。
また有限長ではなく自動的に左右に広がっていく無限長の一次元セルオートマトンを想像された方もいました。
私自身、無限長のサイズに拡張したほうがいいかもなあと途中で思ったりしてます。。

ちなみにもしかしたら、テストは事前準備で定義しておいて、それの上で当日書いたコードが動くことを確認してもいいかもしれないです。

文法理解の曖昧な部分が、すごく明瞭になる

この遊びを通じて、正しく記憶できている文法と、そうでない文法がすごく明確になります。
なので意外と訓練としても、いいかもしれません。

よかったら皆様もお試しください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0