はじめまして、まさくにです。
先月、バックエンドエンジニアとしてLIGに入社しました。
直近の悩みとしては、取締役のづやさんが旧知の友人にすごく似ていることです。雰囲気、たまんなく似てる。この強烈で一方的なシンパシーは抗いがたく、気を抜くと「おーい、づやー、野球しようぜー」と声をかけてしまいそうです。ですが相手は取締役ですので、そこそこ自重しています。よろしくお願いします。
人物紹介:づや LIGの取締役にしてバックエンドユニットの長。 いろんなことを知ってる。 初めて会ったときのTシャツはとてもくたびれていた。 |
さて、本稿ではPHPのデプロイツールについてお話したいと思います。
みなさん、デプロイはどうしてる?
本稿では「デプロイ」について、下記のような処理を行い、Webアプリケーションを実行可能な状態とすることとさせていただきます。みなさんもデプロイ時には、このような処理を行っているのではないでしょうか。
- ソースコードを対象となるリモートサーバーに設置したりする
- composer installやnode installを行ったりする
- DBのスキーマを変えたりデータを入れ込んだりする
- 実行に必要なファイルをダウンロードしたり設置したりする
- ミドルウェアやサーバーの再起動を行ったりする
言語やプロジェクトによっては、デプロイ時にすることはまだまだ増えると思います。多いですね。頭が痛いです。みなさんはPHPアプリケーションができあがったというとき、このような一連のデプロイ処理をどのように行うのでしょうか。
イメージからサーバーごと作り直すというような、ダイナミックなデプロイで上記手順をまるごと省けることも多くなってきたかと思いますが、まだまだFTPやrsync、git cloneでソースコードを設置して、百戦錬磨の俺の指が記憶した100のコマンドを乱れ打つ……といった、人力のデプロイをしている方も多いかと思われます。
規模によってはその方法でも全然問題はないのですが、アプリケーションのデプロイも複雑化して、いよいよ人力では辛くなってきた――。そこで検討をするのが、決められたタスクを順次実行してくれるデプロイツールですね。
PHPはPHPでデプロイしたい
私の場合、Webアプリケーションのデプロイはこれまで主にCapistranoで行ってきました。
Ruby製のCapistranoはデプロイツールの決定版として疑いなく、誰もが使用できる優れたツールだと思いますが、一方でちょっとしたPHPアプリケーションをデプロイするために使用するには少し学習コストもかかりますし、何よりRubyのインストールが必要となるので、PHPをメインにしているプロジェクトだと二の足を踏んでしまいます。
僕らはPHPでアプリケーションを作った――!
そこもPHP何とかならんか――!
これまで何度となくそう思ったものですが、プロジェクトで特に意味もなく新しいツールを使用するには敷居が高く、チャレンジできずにいました。今回、ちょうど良い機会を得たので、本稿ではPHPのPHPによるPHPのためのデプロイツールを調べたいと思います。
PHPのデプロイツールについて
PHP製のデプロイツールを調べてみました。次回以降、こちらのデプロイツールの動作を順次記載したいと思いますが、お使いのPHPやサーバーのバージョンによっては動作しない可能性があることをご理解ください。
Deployer
Capistranoライクなデプロイツールです。gitでpullしてきたり、composerのinstallを行ったりする一連のタスクがインストールした時点で用意されており、またリモートサーバーで実行するタスクを自分で作成して任意のタイミングで実行することもできます。必要十分を取り揃えたちょうどいいデプロイツールだと感じました。
Rocketeer
http://rocketeer.autopergamene.eu/
こちらもCapistranoを意識した作りのデプロイツール。イントロダクションには「Why not Capistrano?」という項目があり、自らその理由を言及しているのでそちらをご覧ください。フレームワークのLaravelにインスパイアされただけあって、非常にLaravelと親和性が高く、そして手間なくデプロイできます。
Capistranoを非常に意識していると見えるので、前述のDeployerよりは少し複雑かと個人的には思いましたが、Capistranoで行いたいことはだいたいRocketeerでできます。
Magallanes
おそらく今回ご紹介する4つのツールのなかでもっともシンプルですが、一方でもっとも独自の路線を走っています。初期状態ではカレントにあるディレクトリやファイルをリモートサーバーへアップロードするようで、gitを操作するためのいくつかのタスクが最初から用意されていますが、基本的に実行されるタスクは自分で作る必要があります。
日本語だと「マゼラン」という読み方で正しいのでしょうか。あの大航海時代の。誰か教えてください。
Altax
http://kohkimakimoto.github.io/altax/ja/
こちらは日本語LOVEなあなたにおすすめ、日本発のデプロイツールです。日本語であることが大きく作用しているのか、シンプルで分かりやすい印象です。こちらもCapistranoライクに作られているものの、あらかじめ決められたタスクに沿うというよりは、実行されるコマンドを書いていくようにできています。
まとめ
これらのツールはずいぶん以前から存在するものばかりですが、PHPも7が出て久しいということで、そのデプロイツールも熟してきたように思いました。実際のプロジェクトに取り入れることを念頭に、次回以降、これらのツールをインストールして順次実行してみたいと思います。
それでは今回はこの辺で!
おーい、づやー! 野球しようぜー!