PHPプロジェクトなら今すぐ導入してほしいComposer
絶賛当ブログが炎上しております時に本記事を慌てて記載しております。
新しいサービスを作るときは自前フレームワークから作ってる暇はないですから、フレームワークを選定すると思います。その時は「ライブラリがどれだけあるか」というのが、非常に大きなキーポイントになると思います。あとは「デファクト・スタンダードであるか」なども。(保守性のために)
PHPでもライブラリはたくさんあるんだよっ!というのを簡単にだけ紹介します。
PHPでライブラリを使う、ライブラリに貢献する習慣をつけるためには、下記の3つがプラクティスとしてよいのじゃないかなと思います。
Composerを使う
ComposerはPHP言語用のライブラリ管理ツールです。RubyでいうところのBundler。Objective-CでいうところのCocoapods。Pythonでいうところのpip。
ライブラリおよびその依存性を管理してくれるツールです。ライブラリは依存関係があったりしますから、ツールでの管理が非常に楽です。また、ライブラリは頻繁にアップデートされるものなので、毎回1個ずつダウンロードして差し替えたりは大変時間の無駄だと思います。そもそも、ライブラリのコードを自分のプロジェクトのコードのバージョン管理に入れるのは個人的には変かなと思います。
Composerについては私よりも、優れたPHPエンジニアの方のほうが詳しいのは間違いないので、参考になりそうな記事へのリンクを張ることで、説明の代わりとさせていただきたいと思います。
コードを書く前にライブラリをPackagistから探す
PackagistはComposerで簡単にインストール可能なライブラリをまとめているサイトです。.orgドメインが素敵です。https://packagist.org/
ぜひこのブログを見るよりも、Packagistにアクセスして、「こんなライブラリないかなー」というのを検索してみてください。たとえば、AWS-APIのWrapperやFacebookAPIのWrapper、いろいろあります。あなたが書こうと思っているコードはすでに誰かの手によって書かれ、MITライセンスで公開されているかもしれないのです。
…ところで、Packagistのサイト検索がしづらいんですが、The Ruby ToolboxのPHP(Composer)版みたいなの知っている人いたら教えてくれませんか…?
PackagistになかったらGitHubなどから探す
まだまだComposerの知名度が圧倒的ではないので、GitHubからもライブラリを探すとよいと思います。これはどの言語でも同じくですが。余談ですが、ComposerはまだGitHubの公式レポジトリのリリースがAlphaなのですが、登場は2年以上前からです。
GitHubにアクセス、欲しい機能・ライブラリに関するキーワードを検索すると良いと思います。言語指定ができますので、PHP言語に指定、Star数などでソートすると、きっと良いライブラリが見つかるでしょう。
もちろん、ComposerはGitHubからのライブラリのインストールにも対応しています。使わない理由は見当たらないぐらい素敵ツールです。
ぜひ今すぐGitHubで何かを探してみましょう。
Ruby版で恐縮なのですが、とにかくライブラリを使ってみようよ!という記事を過去に書いたので、そちらへのリンクを記載いたします。
コードを書かずに実装しよう、ruby-toolbox.com
おわりに:駄文
個人的にはPHP言語は書き方があまり好きじゃないのと、PHPエンジニアですと名乗っているPHPエンジニアまがいが多いので好きではないのですが、PHP言語で既に動いているプロジェクトであったり、エンジニア構成による制約であったりもあると思いますので、PHP言語を使っている方や支えている方はすごいなーと思います。もちろん、そういった方は多言語も使えるのでしょうが。
そういった方々のおかげで、PHPの新しいFrameworkも多く出てきていますし、言語としても、PHP’s built-in development serverが用意されたり、オブジェクト指向がより強化されたり、進化していっているのは間違いないと思います。
規則が強力で学習コストが高いがそれによる高い生産性のあるframework、コミュニティのデファクトスタンダード化が待ち遠しいです。人数の多いプロジェクトだとframework自体の力よりも、チームとしての力が発揮できるframeworkが良いと思うのですが、たとえば3人ぐらいの小規模チームであれば、frameworkの恩恵を受けなければなかなか開発速度が向上しないと思うので。
最近私はあまりコードを書けていないのが残念なのですが、時間があれば、PHP系やPython系など、触ったことがない新しいFrameworkは触っていきたいなーと思います。RubyのSinatraは飽きました。(だってライブラリ足していったらほぼRailsみたいになっちゃいますし)。
Node.jsとかは明らかにWebSocketなどにおいて優位性があるのでガンガン使ってみたいのですが、Expressなど軽量フレームワークが今のところまだ主流なので、重量・デファクトなフレームワークが待ち遠しいです。
もう3年ぐらい前に使ったきりなんですが、JavaのPlay! Frameworkは楽しかったですね。Javaの可読性の高さやAntなどによりビルド作業が必須であるからすべてコードの中にプロジェクトを動かすのに必要な情報がそろっているとか、多くのPaaSに対応しているとか。Javaなのにビルドしている感なく使えるのが素敵です。テンプレートエンジンのGroovyもシンプルですしね。
言語やフレームワークなんて好きなの使えばいいじゃん!と思わなくもないですが、あとで塵も積もれば山となるで、生産性がどんどん落ちて行ったりするので、やはり最初の選定は重要で、楽しく、楽に、スピーディに開発できるものを選択しましょうよと思います。
そして、PHPを今なんとなく使っていて、まだComposerを使っていないという人は、たとえ時間があまりなくても、1人日以上かかるとしても、ぜひ使ってみる、導入してみることをお勧めします!