Every day is a new day.

webエンジニアになりたい55歳の私の記録

npmを作成・公開しました!

f:id:Paru871:20211125231725p:plain

生まれて初めて自作プログラムを世に送り出す

現在勉強中のフィヨルドブートキャンプJavascriptを学ぶプラクティス数段階のうちの一つ、「npmの作成」のOKをいただくことができました。
自分がゼロから書いたコードを一つのプログラムとして世の中に公開する時が来るなんて!本当にうれしいです。

npmとは?

JavaScriptで書いた小さいプログラム、という感じでしょうか。

どんなnpmを作ったのか

このプラクティスでは受講生皆さんの作品を見ることができるのですが、ざっと見た感じでは、実用系・ゲームパズル系・面白系といった感じが多い印象です。
私が作ったのも「8-sliding-puzzle」という名前のパズルのnpmです。
3列3段の9マスの中で8枚のタイルを動かして順番に並べ替えるこのパズル、子供向けパズルの簡易版ですが、「50手以内」という制限をつけてありますので大人でも少々難しくなりました。(私も3回に1回くらいしかクリアできず、テストがとても大変でした!)

⇩起動後のイメージ

Let's complete this puzzle within 50 moves.

  ---+---+---
   3   1   2
  ---+---+---
   7   4   5
  ---+---+---
   8   6
  ---+---+---


? [Select a number you want to move:] 1/50 …
❯ 5
  6

⇩この完成形を目指してタイルをどんどん動かしましょう!

  ---+---+---
   1   2   3
  ---+---+---
   4   5   6
  ---+---+---
   7   8
  ---+---+---

制作時のエピソード、苦労した点など

いつもRubyに慣れ親しんでいるためとにかくJavaScriptが難しく感じてしまって、初めは何もできずパタっと手が止まってしまいました。
落ち込んだ気持ちの中、フィヨルドブートキャンプでの日報に辛い気持ちを書いたところメンターさんからアドバイス(「そんなにRubyがいいと思うなら、まずそのプログラムをRubyで書いてみれば?」・・・かなり要約ですが)をいただき、ハッ!と目から鱗が落ちました。
結局新しいものにチャレンジ・一歩を踏み出す覚悟ができてなかったのかなと思います。
じゃあRubyだったらどう書くかな?などを考えていたら、JavaScriptだったらこう書くなーと頭の中で組み立てがはじまり、コードを書き始めてから2日ほどで完成しました。
コードを書く中で苦労したのは、やはり非同期処理。止まってほしいところでざーーーっとプログラムが進んでしまったり、入力した値を受け取ってくれなかったり。
それから空白のタイル部分に動かすことのできる数字の候補リストを表示することが難しく、試行錯誤を繰り返して何とか形がまとまりました。

npmを作成・公開してみて・・・

これからもう少しプラクティスが進むと、最後の大きな山である「自作サービス」を作成することになります。
その準備運動として今回小さなプログラムを公開できたことは、自分にとってこれからまた学びを進めていくための大きな自信になりました。

よかったら私のパズルで遊んでくださーい!

node.jsの環境がある方はぜひインストールしてお楽しみください。

⇩世界中のnpmが公開されているサイトです。インストール方法やソースコードの情報もこちらのページでご覧いただけます。
8-sliding-puzzle - npm

自分が作ったプログラムで楽しんだり気分転換してもらえるなんて、最高に幸せだなー😊. 今後も頑張りまーす!