Folioscope

プログラミング/Unix系/デザイン/CG などのメモがもりもり

Rails脳でNode.jsに足を踏み込んだら、いろいろと思い出した

技術的なことはあまり含みません。 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を使っている二大プロジェクト(?)のatomvscodeでも全然方針が違うのに。 ディレクトリ構造もビルドステップも、依存ライブラリや目的などを元にプロジェクトの方針に委ねられますべきです。

公式ドキュメントを避けるようになっていた

Railsはインターネット上の情報が豊富で、公式ドキュメントを読む機会が少なかったです。 いっぽうElectronは日本語の紹介記事が少なく、Google検索のキーワードを工夫して日本語のページを探してました。 しかし欲しい情報は、公式ドキュメントに全て乗っています。

思い返せばQtを使った開発をしてたとき公式ドキュメントを穴が開くほど読んでました。 おかげでクラス間の継承関係・依存関係などが把握でき、コードでハマった時も迅速に解決できました。 その感覚もすでに忘れてしまい、自然と公式ドキュメントを避け、読みやすい記事を探すようになっていました。

一つ一つ解決してゆく

まずNode.jsの知見も無ければ、Node.jsを使ったプロジェクトも数個しかまだ見たことが無いです。 そのため今回の試みは少し無謀でした。 またElectronの全貌を知らないことには、プロジェクトに使うことができません。 Electronの全貌を把握することで、Electronライブラリの思想や設計方針が把握でき、それを元にプロジェクトのディレクトリ構造が決定できます。 そして必要な技術もわかり、ビルドステップも自然と決定できそうです。 必要な情報は全て公式ドキュメントに記載されています。

プログラマとしての基本的な知識・感覚も忘れつつ会ったので、これを機にNode.jsをじっくりと勉強を始めてみようかなと思います。