なっぱ箱

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

新しく言語を学んだ時の課題として「ファミコンエミュレーターで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上にファミコンエミュレータのソースはたくさんあるので参考資料は困らないけれども、最初の最初は結構噛み砕いた図解交えたチュートリアル的なものがないと挫折するパターンもあるんじゃないのかなぁ、とはちょっと思っている。

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

読了: SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

技術者向けおすすめ本のなかでちょろちょろ名前を見かけていた本。通勤時間に読むのにちょうどいいかと思ってなんとなく買ってみたけどなかなか良書だった。

どんな本なのか

一言でいえばエンジニア向けライフハック本。

「良いコードを書くための本」ではなく、「良いソフトウェアエンジニア」になるための本である

という本の目的のとおり、実務的な「良いコードの書き方」や「より良い設計の仕方」は一切ない。 あるのはひたすら「エンジニアとしてより良い生き方をする」ためにどうすべきか、といったライフハックの解説。

  • 書いてない事
  • 書いてあること
    • キャリアの選択肢
    • 学ぶ力をどう鍛えるか
    • 給与アップの交渉方法
    • 資産運用
    • 筋トレの仕方

これらのライフハックがそれぞれ章立てして独立されているので、興味がないものや知っているものがあれば飛ばしてしまえるのがいい所。読むときの区切りがつきやすくて気が楽。

ちなみに本のタイトルである「Soft Skill」とはコーディング能力といったものではなく、コミュニケーション能力だったり問題解決力といったものを指すらしい。対義語は「Hard Skill」で弁護士資格とかIT技術とか。

読むのを勧める人

エンジニアとしてある程度働いてきけど将来設計がぼんやりしてる人にはいい刺激になると思う。 なんとなく停滞感を感じる人であれば本の内容が直接刺さらなくても考えを変えるきっかけにはなるのではないかな、と。

個人的に面白かったところ

全体的に面白くてためになったのだけれど、その中からいくつか抜粋

履歴書作成は専門家に任せてしまえ


履歴書は自分で書くってイメージしかなかったので、言われてみれば確かにぶん投げてもいいよね。本当にやるかは別として。

自分自身の管理システムを作る


自己管理を「自分をキャラクターとして、毎日の行動を管理するゲーム」として考えるとよい、というテクニック。 普通に考えるより、自分の行動原理を考えつつ効果的な自己管理ができそうな気がする。

学ぶための10ステップ


新しいことを効果的に学ぶ方法。具体的でとても良い。 最初に本を読むことから始めるのは愚行とのこと。まずは触ってみて、そのあと本を読み込むほうが効率が良い(最初に本を読むのはやりがち・・・)

  1. 全体像をつかむ
    • まずは全体像をつかまねばプランは立てられない
    • ブログなどの情報をざっと眺めて全体像を把握する
  2. スコープを決める
    • 「簡単なコンソールアプリを作れるようになる」といった学ぶスコープを決める
    • 自分の充てられるリソースと乖離しないようにするべき
  3. 成功の基準を決める
    • 「基礎を習得する」といったのは曖昧過ぎる。愚行
    • 「基礎機能をすべて使いったコンソールアプリを作れるようになる」といった具体的なものにするべき
  4. 参考資料(リソース)を見つける
    • ブログ、書籍、カンファレンスなど資料をひたすら集める
  5. 学習プランを作る
    • 定めた基準をクリアするための道筋を立てる
  6. リソースをフィルターにかける
    • 集めた資料から学習プランに必要なもののみに絞り込む
  7. 使い始められるようにする方法を学ぶ
  8. 遊びまわる
    • 覚えたことで実際になにかをしてみる。
  9. 役に立つことができるまで学ぶ
    • 遊びまわった時に出てきた疑問を参考資料を使って解決する
  10. 教える
    • 学んだことをブログにまとめたり、発表をするなり、何かしらのアウトプットをする
    • このステップを省いてはいけない

ポモドーロテクニック


短期間の集中と細かい休憩を挟むことによって生産性を上げる手法。 なおポモドーロとはイタリア語でトマト。このテクニックの発案者がトマト型のキッチンタイマーを使っていたのが由来だとか。

「25分集中して5分休憩」の短期集中と小休止を1ポモドーロとし、1日でどれくらいのポモドーロを完了できるかが生産性の指標になる。1日8時間労働として最大16ポモドーロ。実際にやってみるといろいろな邪魔が入って10ポモドーロも行けばいいほうとのこと。

すぐ始められそうでよさげなテクニック。ほかにも生産性向上についての話は色々と載っている。

まとめ

言語、分野にかかわらず読んで楽しい本じゃないだろうか。気になる章だけつまみ食いできるので気が楽だし、お試しで買ってみてもいいと思う。 なお、筋トレについても語ってる(というか筋トレの仕方まで解説してる技術本て初めて見た)のでマッスルエンジニアリングに興味がある人もぜひ。

次はこの前セールで買った「エリック・エヴァンスのドメイン駆動設計」を読んでるけど、読み終わるのはしばらく先になりそう。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

読書を強制させることによるモチベーションへのデバフ

最近、なんだか本を読むのが楽しい。

少し前までは技術書であっても読み始めるまでに精神的な壁がなんとなーくあって本棚に積んじゃうことが多かったのだけれど、ここ最近は毎日何かしら本を読んでいる。 なんというかめっちゃ楽しい。蜘蛛の巣が張っていた脳みそに情報がもりもりインプットされていくのを感じる。

こうなった原因の1つは転職によって自転車通勤から電車通勤になったことによる暇な時間の増加なんだけども、気持ち的な変化もわりと見逃せないレベルだよなー、と思ったのでちょっとまとめておこうと思う。

強制読書による地獄

以前の職場では読書に関してこんな2つの制度があった。

  • 図書購入補助制度
    • 純粋な福利厚生
    • 業務に関連する物(技術書)とかであれば月5000円までの補助がでる
    • 会社ではなく個人の所有物になる(非常にありがたい)
  • 課題図書制度
    • 全社員への義務(業務時間外)
    • 会社指定リストの中から上長が選んだ本を毎月1冊読み、レポートを提出(全社展開)
    • 期限までに提出しなかったら昇給停止
    • 提出の遅れも賞与/昇給評価に影響

2つめがヤバい。何がヤバいって全部ヤバい。
指定リストの内容もさることながら、罰則がめちゃくちゃモチベーションを下げる。

お判りいただけるだろうか?この数年たっても苦しめられてる感。 そして実際に評価に影響でた時はこんな感じの会話が。

上司「んー、業務内容は評価高いんだけどね、課題図書提出遅れたから評価1段階落としね」

俺「(マジで評価下げやがっ・・・た・・・)」

こうかはばつぐんだ!モチベーションががくっと下がった・・・!! モチベーションへのデバフとしては非常に効果的!読ませる本も自己啓発本だったり社畜の鑑みたいな内容の本だと倍率ドン!

なお、いろいろな制度が乱立してすぐに廃れていくこの会社においてこの制度、なんと4年くらい続いてしまったのだ。これほど悲しいことはない。 最初は「どうせすぐになぁなぁになって終わるやろ」と思っていたがまさかの長寿制度化。その結果根付いた読書への忌避感は心の中から読書熱を消し去るには十分すぎた。

地獄からの解放

転職 → 電車通勤で時間あるな → 本読みてぇな!!!

てな具合で転職後3ヵ月くらいで自然に読書熱が帰ってきた。 特に「本を読むようにならなきゃだめだ・・・」とかそういった自己意識を頑張って変えたわけでもなく、なんとなーく自然にそんな感じになっていったのである。

やっぱり「本を読むことを強制されている」状態からの解放が大きかったんだろう。

「強制でも読書させられてたおかげで読書が習慣づいてるんじゃないの??むしろ感謝したら??」

とか誰かが言いだしたらガンジーパンチレベルなんだけれど、それな事実はないとここで断言しておく。と言うのも・・・・

なんと後半2年くらいは課題図書を読んでいなかったのである・・・・!!

あまりのくだらなさにある日「もうレポート全部でっちあげでいいや」と決めたのだ。そして課題図書を読まなくなった状態でも他の本はなかなか読む気にならなかったので、そのころにはもう「読書 = 苦痛」だと脳が覚えてしまったのかもしれない。

実際に本を読んでいたころの本の内容は一切覚えてないし、結局身についたのは目次とあとがきとAmazonのレビューを見てそれっぽくレポートをまとめ上げるダメな学生みたいな能力だけ。こんな誰も幸せにできない悲しい力なんて・・・・

まとめ

社員の知識レベルの底上げ、平均化を図るといったある程度納得できる理由はあるし、インプットすることの重要さもわかる。思い返してみれば「割と面白そうかもしれない」というものもリストには入っていた。お金を出して社員の教育をするという姿勢は一定の評価をしてもいいのだろう。(業務時間外であることとマイナス評価はどう考えてもNG)

けれども罰則で縛るのは良くなかったのだ。きっとあのころの自分は電気ショックでお仕置きされて萎縮する猿状態だったに違いない。猿に本当に必要だったのはきっとバナナという報酬。褒めてやらねばなんとやらと山本五十六の名言もあるし、もっとポジティブな制度だったら成功していたのかもしれない。せめてエンジニアは技術書とか「おもしろそう!読みたい!」と思えるようなラインナップだったなら・・・・いや提言して却下されたけどね。

もしかしたら今の読書熱も猿時代のただの反動かもしれないので、火を絶やさないようにガンガン本を読んでいこうと思う。 なにかおすすめの技術書なり文庫なりあったら誰か教えて。

今日はこんな所で。

前職版「ブラック企業チェックリスト」

delete-all.hatenablog.com

なかなか破壊力のある記事を発見。

おもしろそうなので試しに前職バージョンで作ってみる。


  • 「暦上で連休の場合はつなげて有給を使用してはいけない」という有給取得の謎ルールが存在する
    • 例: 金土日の連休あるから月曜も有給にしよう -> NG
  • 頻繁に組織改革がおこなわれる
  • トップが「社員一人一人が経営者」と言い出す
  • 社員旅行の費用は会社が半分出してくれるがもう半分は自己負担
  • 「社員旅行は自由参加」という名目だが、不参加にしようとすると圧力をかけてくる
    • 例: 「みんな行くんだから参加しないと」
  • 交通費自己負担の強制参加運動会が存在する(休日に開催)
    • これは後年自由参加になった
  • 毎日ラジオ体操をさせられる
  • 始業30分以上前に出勤するように強要される
    • 「せめて30分前までには出社しろ。俺は1時間前くらいにはきている」
    • 後年そう言ってくる人は少なくなった
  • 海外長期出張した際、保険の効かない交通手段での通勤を強要される
    • 問題起きても自己責任、みたいな念書へのサインを迫られる
  • 「台風だろうが人身事故だろうが業務に支障が出ないように出勤しなさい。どのような理由であれ遅刻/欠勤です」
  • さらに遅刻3回で欠勤扱い
  • 基本給は徐々に上がっていくが賞与がどんどんと減っていく
    • 最終的に6年たってもほぼ年収が変わっていないミラクルが起こる
  • 毎月会社に指定された本(自己啓発本など)の読書感想文提出を義務づけられる
    • 読書は業務時間外
  • 提出しない場合は昇給停止
  • 未経験の中途をどんどん入れてどんどん現場に入れてどんどん辞める
  • 退職後に恨みつらみを垂れ流すSNSアカウントを作る人が存在する
  • 朝礼時に体調不良で意識が飛んで倒れる人が出ても周りは苦笑
    • なお意識取り戻した後そのまま仕事を続行

いやこれ42個も出てこないわ

Monster Hunter: Workd βテストやってみた

なんだかんだでひっさびさな据置モンハン。

発表から楽しみにしてたのでβ版一通りプレイしてみた。

モンハン経験

  • 据置機は村クエのみ
  • 携帯機は1-3は死ぬほどプレイ
    • 4以降ははそこそこ程度。一応やってた

学生時代にみんなで家に集まってコタツ入りながら気絶するまでモンハンやったのが懐かしい・・・ コンビニで食料そろえてモンハンやってバイト行ってまたモンハンやってとか充実した狩人生活してた気がする

携帯機のほうはそんな感じだったけど、据置機のほうはなんとなくオンライン集会場やる気がしなくて村クエだけ消化して放置ってパターンだった。 多分みんなで集まってプレイすることに慣れちゃってたからオンラインで知らない人とやるのが億劫だったんだと思う。

最近のモンハンはなんだかちょっとマンネリ気味で、一応買ってはいたけどあんまりやりこみはしなかった。そっとゲーム棚に埋葬。 もしも「ちょっとアクション変わりました!」「新モンスター追加!」のいつもの新作モンハンが3DSとかで出ても買わないだろうなぁ、くらいのマンネリ感。Switchだったら流れで買ってたかもしれん。

そんな感じのところに色々なところが変わった(と思われる)モンハンワールドが発表されたので消えかけてた狩人魂が再燃してきた感じ。

ベータ版の感想

今までのストレス要因が色々と改善されてる

  • アイテム使用時/取得時の改善
    • 動きながら回復薬を飲むようになった。しかも途中キャンセル可能
      • もう「さっさと飲めやオラァン!」て叫ばなくて済む
    • そのへんのアイテム拾うのも一瞬
    • 鉱石とかの採取もスピーディ
  • ペイントボールいらない
  • キャンプが複数あってファストトラベル可能

フィールドの探索が楽しい

  • シームレスで動き回れる&広いので探索してる感が強い
  • グラフィックもきれいだし見てるだけでも楽しい
    • 虫、動物とかいて自然を感じる

演出が細かくて楽しい

  • ザコを倒すとハゲタカが寄ってくる
  • 敵を罠にかけた時にメラルーがつたを引っ張って抑え込んでるのかわいい
  • 大型モンスター同士のバトル
  • オトモがザコ敵と仲良くなって共闘
    • 背中に乗って戦ったりしててかわいい
  • 武器のモーションがかっこいい
    • 条件を満たすと特殊な演出があるっぽい
      • スラックス -> 敵に剣を突き刺してしがみつきながら属性解放
      • 双剣 -> 敵の上を転がりながら切りつける(某兵長の技)

まとめ

色々なところが良くなってて非常に楽しめた。 ただ「いつものモンハンだなぁ」、という感じは思ったより強め。

スキルシステムが変わっていたりとか大幅に変更されてるとは思うんだけど、モンスターと戦ってるときは「モンハンだわこれ」という感じが強めなのは否めない。 多分モンスターのモーションとかが大きな原因になってる気はする。なんとなく動きが想定内というか。モンハンらしいリズムの動きするなぁ、みたいな。

ただそれを差し引いても非常にいい出来だと思う。「待ち望んでいたモンハンの正統進化版がついに出た!」という感じ。 モンハンは昔やってたけど最近のはやってないわ、って人にはぜひプレイしていただきたい。

購入決定なのでさっさと予約してしまおうと思うが・・・それまでにマリオデとDQ11をクリアせねば・・・・

おれ、はてブロ、はじめる

なんだかんだでアウトプット先をもっていなかったので、とりあえずはてブロデビューをしてみることにする。 技術系の話もあるけど、それ以外にゲームやった後の感想とか適当なのをダラダラ書いておく場所としてみよう。

ただ問題はブログとQiitaの使い分けだな・・・

  • ブログ
    • やってみた系の所感とか
    • 勉強会行ってみた系
  • Qiita
    • やってみた系の手順等
    • 技術系TIPS
    • コード内容をメインにするもの

あたりと思っておこう。とりあえず続けるの優先。

始めてみようと思ってログインしてみたらなぜかアカウントが存在。 恐る恐る見てみたら限定公開にした状態の記事0件の大昔のブログがあるというひどい状態だったからなぁ・・・・