なっぱ箱

ゲームとか読書の感想とか時々技術系の話とか

新しく言語を学んだ時の課題として「ファミコンエミュレーターでHello, World!」を推したい話

TL;DR;

  • ファミコンエユレーターでHelloWorldやってみた
  • 新しく言語を学ぶ or 久しぶりにやる言語のウォームアップに勧めたい
  • ファミコンのHelloWorldは割と実装が必要なことがあってやりごたえがある
  • ただ資料面を充実させるのが課題?

はじめに

以前@bokuweb氏の記事を参考にRustでファミコンのスプライトを書き出すツールを書いてみたんだけれども、そこで終わりにするのがもったいないんでサンプルROMのHelloWorldが動くくらいの最低限なエミュレーターをちょこちょこ書いてた。 これが割とボリューミーで時間はかかったけど、最近ようやっと出来上がった感じ。

HelloWorldが動く最低限のファミコンエミュレーターリポジトリはこれ

GitHub - yamash723/nes-hello-world-rust: hello world for the nes by Rust

去年から勉強していたRustのトレーニングとしてなんとなーくやってみたんだけども、終わってみれば「これ勉強の題材にちょうどいいのでは?」と思ったのでこの記事書いてます。

公式チュートリアルのその後

新しく何か言語を初めて見る時は、最初に公式のドキュメントに目を通す → そのままチュートリアルってのが誰しも最初にやることだと思うんだけれども、わりとここで手が止まっちゃうってのも多いのではないのかなと。

ちょうどQiitaのランキングにこのような記事が上がっていました。

初学者用チュートリアルの選択肢を探ってみた

何か新しい言語とかフレームワークを学ぶ時ってやっと構文や組み込み関数覚えたところで目的先行じゃない場合広い海原にほっぽりだされるわけですよ。次何すればいいんだろう?と。

うーんわかりみが深い・・・。 記事で紹介されている初学者用チュートリアルは鉄板メニューでこんな感じ。

うんうんこんな感じだよねー、というラインナップ。 公式チュートリアル卒業後に軽く嗜むには妥当な感じ。

ただ、このあたりを終わらせたあとって何作ったらいいか悩む停滞期に入ってしまうことが多いんじゃないかなーと(何度かそういった経験が・・・)

数時間でササッと終わってしまうほど軽くなく、かといって機能てんこ盛りのガッツリ系とまでは行かない。そんなちょうどいい選択肢としてファミコンエミュレーターのHelloWorldを提案してみたい。

新言語の習得時以外にも「昔やってた言語が気がついたら結構別物になっていた」みたいなときのリハビリとしてやってみるのもいいんじゃないかなと思う。

課題

ハードウェア仕様はWikiがあったりして充実しているし、GitHub上にファミコンエミュレータのソースはたくさんあるので参考資料は困らないけれども、最初の最初は結構噛み砕いた図解交えたチュートリアル的なものがないと挫折するパターンもあるんじゃないのかなぁ、とはちょっと思っている。

この辺はどうにか解説本みたいなのを作って技術書展デビューとかしてみたい(未定)