TL;DR;
- ファミコンエユレーターでHelloWorldやってみた
- 新しく言語を学ぶ or 久しぶりにやる言語のウォームアップに勧めたい
- ファミコンのHelloWorldは割と実装が必要なことがあってやりごたえがある
- ただ資料面を充実させるのが課題?
はじめに
以前@bokuweb氏の記事を参考にRustでファミコンのスプライトを書き出すツールを書いてみたんだけれども、そこで終わりにするのがもったいないんでサンプルROMのHelloWorldが動くくらいの最低限なエミュレーターをちょこちょこ書いてた。 これが割とボリューミーで時間はかかったけど、最近ようやっと出来上がった感じ。
ファミコンエミュでHelloWorld、PPUの実装終わったからついにレンダリング部分に到達した
— なっぱ@パーフェクトドブマスター (@b7472) 2018年7月6日
ファミコンエミュ、ようやっと画面にHELLO, WORLD!出せた#Rust pic.twitter.com/KHCtt9OsZ5
— なっぱ@パーフェクトドブマスター (@b7472) 2018年7月6日
HelloWorldが動く最低限のファミコンエミュレーターのリポジトリはこれ
GitHub - yamash723/nes-hello-world-rust: hello world for the nes by Rust
去年から勉強していたRustのトレーニングとしてなんとなーくやってみたんだけども、終わってみれば「これ勉強の題材にちょうどいいのでは?」と思ったのでこの記事書いてます。
そこそこのボリュームあるので新規言語習得時の課題としてはちょうど良いと思われる。仕様は定まってるし画面デザイン不要、DB使わないのでORMとか不要。基本的な言語機能に慣れるための課題という立ち位置?
— なっぱ@パーフェクトドブマスター (@b7472) 2018年7月6日
公式チュートリアルのその後
新しく何か言語を初めて見る時は、最初に公式のドキュメントに目を通す → そのままチュートリアルってのが誰しも最初にやることだと思うんだけれども、わりとここで手が止まっちゃうってのも多いのではないのかなと。
ちょうどQiitaのランキングにこのような記事が上がっていました。
何か新しい言語とかフレームワークを学ぶ時ってやっと構文や組み込み関数覚えたところで目的先行じゃない場合広い海原にほっぽりだされるわけですよ。次何すればいいんだろう?と。
うーんわかりみが深い・・・。 記事で紹介されている初学者用チュートリアルは鉄板メニューでこんな感じ。
うんうんこんな感じだよねー、というラインナップ。 公式チュートリアル卒業後に軽く嗜むには妥当な感じ。
ただ、このあたりを終わらせたあとって何作ったらいいか悩む停滞期に入ってしまうことが多いんじゃないかなーと(何度かそういった経験が・・・)
数時間でササッと終わってしまうほど軽くなく、かといって機能てんこ盛りのガッツリ系とまでは行かない。そんなちょうどいい選択肢としてファミコンエミュレーターのHelloWorldを提案してみたい。
新言語の習得時以外にも「昔やってた言語が気がついたら結構別物になっていた」みたいなときのリハビリとしてやってみるのもいいんじゃないかなと思う。
課題
ハードウェア仕様はWikiがあったりして充実しているし、GitHub上にファミコンエミュレータのソースはたくさんあるので参考資料は困らないけれども、最初の最初は結構噛み砕いた図解交えたチュートリアル的なものがないと挫折するパターンもあるんじゃないのかなぁ、とはちょっと思っている。
この辺はどうにか解説本みたいなのを作って技術書展デビューとかしてみたい(未定)
実装ガイドみたいなチュートリアル本的なのがあると課題としても使いやすいような。書いて技術書展出したい感
— なっぱ@パーフェクトドブマスター (@b7472) 2018年7月6日