技術的なことはあまり含みません。Node.jsを始めましたが、プログラマとしてごく当たり前のことすら忘れかけていたことが分かったので、記事にしました。Node.jsを始めるNode.jsはじめました。正確には、Electronを使って便利ツールを作りたくなったので、前から気になってたElectronを触ってみました。「Rails触ったことあるし、Node.jsも日本語の記事を斜め読みすれば一日で使えるだろう」と、謎の動機で始めました。この時点でおかしいですね。RailsとNode.jsの共通点といえば、使うツール群が少し似ていることと、比較的新しい技術ということで、それ以外に目立った共通点は無いです。正解を探し始めてしまうNode.jsプロジェクト作成時にまず悩んだことが、ディレクトリ構造です。Electronを使ったプロジェクトではどこに何を配置するのが正解だろうと悩みました。次に悩んだのはビルドステップです。TypeScriptのビルドをGruntで書くかgulp.jsで書くかnpmのscriptsで書くか、何で書くのが正解だろうと悩みました。結論を書くと、どちらも正解は無いです。C++やシェルスクリプトでは自分でディレクトリ構造を設計して、ビルドスクリプトを自作して、という手順をごく当たり前のようにしてました。Railsだとディレクトリ構造やビルドスクリプトの記述場所は決まっていたため、Node.jsでも気づけば探していましたが、もちろんそれは間違いです。Electronを使っている二大プロジェクト(?)のatomとvscodeでも全然方針が違うのに。ディレクトリ構造もビルドステップも、依存ライブラリや目的などを元にプロジェクトの方針に委ねられますべきです。公式ドキュメントを避けるようになっていたRailsはインターネット上の情報が豊富で、公式ドキュメントを読む機会が少なかったです。Electronは日本語の紹介記事が少なく、Google検索のキーワードを工夫して日本語のページを探してました。欲しい情報は、公式ドキュメントに全て乗っています。思い返せばQtを使った開発をしてたとき公式ドキュメントを穴が開くほど読んでました。把握でき、コードでハマった時も迅速に解決できました。その感覚もすでに忘れてしまい、自然と公式ドキュメントを避け、読みやすい記事を探すようになっていました。一つ一つ解決してゆくまずNode.jsの知見も無ければ、Node.jsを使ったプロジェクトも数個しかまだ見たことが無いです。そのため今回の試みは少し無謀でした。Electronの全貌を知らないことには、プロジェクトに使うことができません。Electronの全貌を把握することで、Electronライブラリの思想や設計方針が把握でき、それを元にプロジェクトのディレクトリ構造が決定できます。必要な技術もわかり、ビルドステップも自然と決定できそうです。必要な情報は全て公式ドキュメントに記載されています。プログラマとしての基本的な知識・感覚も忘れつつ会ったので、これを機にNode.jsをじっくりと勉強を始めてみようかなと思います。(@ueokande)Webの会社のミドルウェアエンジニア。