近年WordPressのテーマ作成くらいしかコードを書いていなかったので、もう一度きちんとプログラミングをやってみようとと思った。
まずWordPress以外にもCakePHPなどをやったことのあるPHPを検討した。 しかし、Laravelというフレームワークの本を半分くらい読んでみたり、Goutteでスクレイピングしてみたりしたが、なんかやっぱり好きになれんなという感じだった。
パッケージ管理についてはComposerがあり、昔触ったときに比べると格段に楽に、安全になっている。 フレームワークを選べばオブジェクト指向もできそう。 だけど、それでもなんか間違った使い方をしそうな(しかも気づかなそうな)部分があって怖い。特にself::と$this->とstatic::。
この点について、マニュアルには、
クラスメソッドから静的でないプロパティにアクセスするには -> (オブジェクト演算子) を使って $this->property のようにします (property のところにプロパティ名を指定します)。 静的なプロパティへのアクセスには :: (ダブルコロン) を使って self::$property のようにします。 静的なプロパティとそうでないプロパティの違いについては、 static キーワード を参照ください。 PHP: プロパティ - Manual
と書かれていて、クラスに属するもの(静的な変数やメソッド)と、インタンスに属する変数やメソッドでそれらを使い分けるらしいのだが、俺の頭では管理できそうな気がしないないのだ。
俺はJava頭なの!
……と、うだうだ言っていないで、別の言語を使ってみることにした。
せっかくなので、触ったことがないものから選ぶことにした。Node.js(JavaScript)である。
そういえばPythonというものもあり、これも触ったことないけど、マルチバイト文字の扱いにコツがあるらしく、めんどくさいなあ、と。数値計算や機械学習の分野では、ライブラリがそろっているらしく、なんか名前をよく聞く。
こういうと多分怒られそうだが、俺の学習レベルだとNode.jsはJavaScriptのインタープリタである。というか、そのように使える。他のLL言語のインタープリタのように、JSの文法で書いたプログラム(プレーンテキスト)をコマンドラインから実行できる。
世間一般には、JavaScriptという言語を使用して、これまで(ブラウザ内)とは異なる、サーバよりの用途のプログラムが書けて、しかも性能上のメリットがあるということで注目されたようだ。 *1
この界隈は固有名詞の数が多く、よく考えてみれば楽なのだが、最初は大変混乱する。
上記の他にも、Node.jsをインストールするにあたって、バージョンによる差異が大きいため、複数のバージョンをインストールしておき、プロジェクトごとにどのバージョンで開発するか設定するツールがある。これがnodebrewとNVM。どちらかをまずインストーラして、それを利用してNodeをインストールする。もちろん、素のNode.jsインストーラで1つだけ導入するなら必要ない。Rubyのrbenv、RVM。
NPMは第三者が書いたライブラリの依存関係を解決し、まとめてインストールをしてくれるそうだ。まあ、今はPHPでさえもComposerがある。
Node.jsの本を買おうかと思ったのだが、なんか、すげー初心者寄りか、JavaScriptが書ける前提のやつしかなく、なんかいいのがなかったので、JavaScriptの本を買って読んでいる。
初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発
- 作者: Ethan Brown,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/01/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
*1:公式には「Node はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境」(https://nodejs.org/ja/about/)とされている。本当はサーバとサーバサイドの色々を1つのプログラムとして書いたりするためのものらしい。が、JavaScriptの入門書のCUIプログラムを書いているレベルでは、ブラウザでも動かせるようなリクエストを受け付けないプログラムなので、あんまり関係ないと思う。