PHPの開発仕事を続けてきて割と長くなるが、いまだにvimで書いてSyntasticによるシンタックスハイライトを使った程度の環境であった。先日あることをきっかけに、その思いを打開することとなったのだ。その初動となるものが、Composerのインストールであった。
いまさらながらの環境整備
PHPの開発自体は長らくやってきたし、vimでの開発も長くやってきた。
もっとも厳密に言うと、私の場合はこの25年近くはプログラマに限らずインフララ屋から調達仕事やシステム導入の仕切りまでと、おおよそいろんなことをやってきた。
よって、PHP開発については「ま〜かせて!」と胸を張れるほどでは全くない。
ということでこれまでの開発についても、実はvimでだらだら書いていただけだった。
インストールお急ぎの方へ
本ページ最後に、コマンドだけ列挙したものがあるので、そちらをご確認の上インストールを試みてください。
なんで急に?
これを書く数日前に、PHP開発のベテランと周囲から称される人に「PHPでは(switch〜case文の)caseはswitchから1つインデントを下げて書くのが通例です」というPRレビューを受けた。
このレビュアーはイマイチ(直感的に)信用できなかったので調べてみたら、PSR-2(infinite loopさんが技術ブログに日本語訳を書かれている)というPHPのコーディング規約によって、それは定められていたことを知った。
これはこれで勉強になってよかったのだが、PSR-2自体は(当然コーディング規約なので)caseのインデントの掘り下げに以外についてもいくつか記述されている。なおPSR自体は複数のナンバリングされたカテゴリ別の規約が存在している。これについては本編から外れるので、いずれ余力があれば別口で書いてみたい。
余談:いろいろ調べたらPEARのコーディング規約だとcaseのインデントについては何も言っておらず、PEARの規約でチェックを通すとswitchとcaseのインデントレベルが同じであっても警告・エラーも修正もされないことを知った。つまり、くだんのPHPベテランさんのいう「通例である」は、自分の経験の範疇でしか言っていなかったことが理解できた。アヤシイと思って調べておいてよかった。
さてそのPSR-2を読んだ上で、改めて我らベテラン率いるチームのソースコードや他のPRをみてみると…。
ま…何も言うまい…。
ただ、この事実を知って、私自身はPSRになるべく準拠したコード記述をするべきだという認識に至ったのである。
ということで、いまさらながらではあるが、PSR-2対応コーディング規約チェッカーや静的解析ツールなどを導入することに決めたのだ。
ツール類のインストールについては、別途記載予定である。
インストール環境
今回インストールするにあたって使用する環境を記載しておく。
私はMacBook Proを使っているが(私がなぜMacを使っているかはここを読まれたい)、Linux/FreeBSDなどのUNIX系OSにも通じるところがある(macOSは優れたGUI環境を持つUNIXシステムだと思っている)ので、インストール方法自体は、ほとんど変わらないはずだ。
Windowsについては本家サイト(英語)、Windowsのツワモノの方々のブログなどがあるので、そちらを参考にしていただきたい(ていうかWindows環境がもう手元にないのよね…Win10はないし)。
- macOS High Sierra (10.13)
- Terminal (OS標準)
- 他のUNIX系OSならお気に入りのターミナルエミュレータを使用すればよいだろう。
- ちなみにFreeBSDを日々使っていた時代の私は(xterm(kterm) –> rxvt –> target=”_blank”>mltermと乗り換えてきた。
- cURLもしくはwget (cURLはデフォルトでシステムインストール済み、wgetはHomeBrewかMacPortsで要インストール)。ただし、今回は必要ない(PHPプログラミング開発ツール系を入れる場合に必要になる場合がある)
- curl 7.56.1 (x86_64-apple-darwin17.0.0) libcurl/7.56.1 OpenSSL/1.0.2l zlib/1.2.11
- GNU Wget 1.19.2 built on darwin17.0.0.
- vim (これも今回は必要ない)
- プログラミングやテキストファイルの編集に使うエディタがあれば問題はないが、vim使いならvimプラグインをインストールするのでvimは欠かせない。
- PHP7系。Phanをインストールされる予定なら、PHP7必須なので、5系ではなく7系をインストール済みであること。私は7.1系をインストールしている。HomeBrewやMacPortsからインストールされたい。
- PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
あと使っても使わなくても問題はないが、私はTerminalで必ずtmuxを動かしている。以前はscreenを使っていたが、tmuxのほうがはるかに便利なので数年前に乗り換えた。
tmuxのインストールはHomeBrewかMacPortsで可能だ。おそらく本家サイトからソースのtarballをダウンロードして手動インストールもできるだろう。ただしlibeventなど依存関係のあるライブラリがインストールされているかどうかを確認する必要がある。
Linuxならyumやapt-get、FreeBSDならports、NetBSDならpkgsrcなどでインストールできるだろう。
- tmux 2.6
Composerのインストール
公式サイトに「Getting Started」があり、そこにインストール方法が書かれている。
なお、composerのインストール先を/usr/local/binなどのシステムグローバルにしたいか、ホームディレクトリ配下の~/binなどのローカルにしたいかは、先に決めておく必要がある。
ここではcomposerについては/usr/local/bin(私は/opt/local/bin)配下、すなわちグローバルにインストールすることにする。
- Composer公式サイト(英語)
Composerは、もともとPHPプログラミング環境向けのパッケージ管理システムという目的で開発されているため、当然ながらその導入にはPHPが欠かせない。
さきほどPHP7系をと書いたが、Composerもしくはそのインストーラー自体は7系を要求するものではないので5系でも問題はないと思われる。ただ、今後導入予定のパッケージが7系を要求している場合があるので、そのあたりの「棲み分け」はしっかりしておく必要があるだろう。
さて本家サイトの「Download Composer」には、以下のコマンドを実行するようか書かれているので、これを実行してみることにする。
1 2 3 4 5 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" |
1行目はダウンロード、2行目はチェックサムを比較して正当性チェックをしているだけである。
先に4行目の話をしておくが、これは単に3行目のファイルを削除しているだけだ。rm composer-setup.phpでも何ら問題はない。
さて3行目でセットアップを実行してcomposerのインストールを実施している。
–install-dirオプションが使えるので、今回は/usr/local/binディレクトリ配下にインストールを試みる(私は/opt/local/binなので読み替えてもらいたい)。
実行すると、以下のようなメッセージが表示される。
1 2 3 4 5 6 7 |
% sudo php composer-setup.php --install-dir=/opt/local/bin --filename=composer All settings correct for using Composer Downloading... Composer (version 1.5.2) successfully installed to: /opt/local/bin/composer Use it: php /opt/local/bin/composer |
whichコマンドでインストール先を確認されたい。
rehashコマンドはcsh系のコマンドハッシュのリフレッシュなので、sh/bash系の人は不要である。
1 2 3 4 |
% rehash % which composer /opt/local/bin/composer |
さて、インストール完了時の最後のメッセージに「Use it:」とある通り、こう使えとなっている。
このファイルはPHPスクリプトではあるが、fileコマンドで内容を確認すると、「php script executable (binary data)」となっているため、そのまま実行可能である。
なお、「なんだPHPなのか」とうっかりcatするとムスカ大尉のように「ターミナルがぁ!ターミナルがぁ!」となる可能性があるので注意すること。
1 2 3 |
% file `which composer` /opt/local/bin/composer: a /usr/bin/env php script executable (binary data) |
インストール時にcomposerコマンドはchmodで実行可能である。
1 2 3 4 5 6 7 8 9 10 |
% composer ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.5.2 2017-09-11 16:59:25 (以下省略) |
執筆時点でバージョン1.5.2は最新ぽいが、一応selfupdateをかけておこう。
1 2 3 |
% composer selfupdate You are already using composer version 1.5.2 (stable channel). |
最新版なので、大丈夫そうである。
お急ぎ版
とにかくコマンド連打で速攻入れるから頼む!という人向けに、コマンド列挙だけしておく。
システム的な調整は各自で適宜行ってもらいたい。
1 2 3 4 5 6 7 8 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php sudo php composer-setup.php --install-dir=/opt/local/bin --filename=composer php -r "unlink('composer-setup.php');" # rehash ←このコマンドはcsh系のみ composer selfupdate |
vimプラグイン
こちらに記事をアップしたので、参考にしていただきたい。