Skip to content →

パッケージで管理するということ

#なんだか長いのでKindleで読める.mobiを用意しました(package-management.mobi)。iPhoneの人は、Kindleアプリ入れてSafariでリンク先を開いてくださいな。


これからのWeb制作をより効率的にこなしていくためには、「パッケージ管理」という概念を覚えておくと良い気がします。たとえば、世の中にはいろいろなサービスや商品が存在します。そのひとつひとつはパッケージであるとも言えるでしょう。幕の内弁当だっていろんなものが詰め込まれたパッケージだし、おにぎりやサンドウィッチ、いろいろな清涼飲料水だってひとつのパッケージですね。まぁ、それです。それを管理しましょうか、と。

例えば、その幕の内弁当。幕の内弁当は、いろいろな味覚をひとつのお弁当にまとめることによってひとつのパッケージとして機能します。でも、たまに苦手な食材が入っていたり、ちょっと量が多かったり足りなかったりとか不満もあったりするものです。これをWeb制作のツールに置き換えるとすると、Dreamweaverのような統合オーサリングツールが該当します。一通りの機能が揃っていて大変便利なんだけど、そこでできることしかできないし使わない機能も多い。

それがあらかじめわかっている人は、幕の内弁当を食べるのはいいけど足りなそうだから、おにぎりも買っておこうということになります。わかっていれば。でも、幕の内弁当だけで満足すると思いこんで後から足りなかったことに気付いたら、あらためてコンビニに買いに行こうという気はなかなか起きないものです。まぁ、今日のところはいいかって話になりがちです。我慢しようと。我慢はほどほどにしないと、ストレスで爆発するかもしれませんw

では、一方の個別のパッケージ。おにぎりやサンドウィッチを考えてみましょう。個々のパッケージだから自分のその時の体調やお腹の空き加減にあわせて購入する量を調整できます。今日は頭使ってがんばらなきゃだからチョコも追加しよう、なんてことは自分の判断でおこなうことができますね。まぁ、お弁当売り場に直行して幕の内弁当を買うのとは違って、各商品の売り場をまわって買い物かごを一杯にしないといけません。でも、思ったように満たされます。

オールインワンだけでは済まされない

IT業界というのは日進月歩で進化する世界です。さまざまな作業が省力化、効率化されていっています。ホスティングのようなサービスにしても同じことが言えます。これまでは、Webサイトをすぐに開設できるオールインワンのパッケージが主流でした。契約さえしてファイルをアップロードすれば、Webサイトは見れるしメールだって使えます。でも、実際には使わない機能まで含まれていてその分のコストも支払っています。それすらも今は変わろうとしています。

それはそれとして問題はないのですが、いざ時代の波にあわせて新しい技術を使ったサイトにしようと思うと「バージョンの関係でできません」ということも多々ありますよね。オールインワンであることは楽です。でも、それ以上のことをやる時、それだけでは完結しない作業になると途端に困ります。オプション的にプラグインのような仕組みで機能追加できるのならまだしも、そうでなければ解決策を考えなければなりません。もちろんなかったことにして忘れるというのもひとつの方法ですね(笑)。

個々のパッケージを組み合わせるということ

いまの自分に必要な個々のパッケージを集めてまわるのは大変です。サイト制作に必要なjQueryをダウンロードし、それに加えて必要なプラグインのファイルをダウンロードして解凍し、所定のディレクトリに放り込む。Webサイト制作に携わる人なら、誰もが経験のあることでしょう。あれがない、これが足りない、あっちいってこっちいってようやく作業開始。それって結構無駄な労力や時間だったりします。それら個々のパッケージが「依存を解消してワンセットでひとつにまとまってたら…」と考えると楽ですね。それか、後から必要なものだけ簡単に追加できたとしたら。

サーバなどを構築・管理する人たちにはおなじみのコンパイルといった作業があります。プログラムのコードが書かれているソースファイル一式を手元に用意して、自分自身の環境に合わせてアプリケーション(実行ファイル)などを作ります。その実行ファイルを作ったり動作させるには、あらかじめインストールしておかなければならないファイルもあって、それから確認して揃えていくとなると大変な作業になります。古い話でなんですが、「昔MovableTypeをインストールする時にPerlのモジュールが足りなくて困った」なんて経験もあるでしょう。それと似たようなことです。

そういった作業を完結にするために、依存するファイルの関係性などをまとめておき一度の手間でインストールできる「パッケージインストール」という方法が存在します。「鮭おにぎりと梅おにぎり、それに銘柄指定でお茶を」ってのがひとつにまとまっていれば、それをリクエストすれば自動的に手元に用意される仕組みです。これだと買い物にいってそれぞれの売り場を探し回る必要はありません。だって、場所もわかって勝手に持ってきてくれるんですから。

最近話題のツールはパッケージでインストール

最近話題になる多くのツールは、通称「黒い画面」と呼ばれるターミナルを使って実行するものがほとんどです。「今のこのGUI全盛のご時世になってこったい」って話なんですが、現実はそうなんです。そういった便利なツールを多くの人が使えるように、GUIのインターフェイスを被せるだけのアプリケーションなんかも出ないこともないのですが、まぁ確率的にはだいぶ低いんです。

実際そのようなツールがどうなっているかというと、実は前述したパッケージインストールの手法を採っているものが多く、インストールには1行程度の指定されたコマンドを実行すれば、それの実行に必要なもろもろのファイルを含め自動的にインストールされるものがほとんどです。これをソースからインストールとなったら、売り場を歩き回って場所がわからずに途方にくれることにもなりますが、今となっては売り場を歩き回る必要はまるでないのです。良かった。

何はなくとも手元にパッケージマネージャ

このようなパッケージを管理するツールを「パッケージマネージャ」と呼んでいます。これを使う利点は、個々のツールやアプリケーションのインストールはもちろん、バージョンアップですら自動でおこなえることです。さすがにOSレベルでの通知はないので、そこは自分でアップデートのためのコマンドを入力しなければなりませんが、「おーいお茶 update」ぐらい誰でも打てるでしょう。「新製品が出てたら手元に持ってきてよ」ってな話です。簡単(笑)。

この仕組みがあるおかげで、最近は構築前の下準備や作業途中の処理が簡単になりました。例えば、「Twitter Bootstrapを使いたいな」と思ったら、「bower install bootstrap」と入力すればTwitter Boootstrapの最新ファイル一式とjQueryが手元にダウンロードされます。Bootstrapのディレクトリで「npm install」を入力すれば、BootstrapのテンプレートやLESSなどをコンパイルするのに必要なファイル一式がダウンロードされるのです。

編集が終わったら、そのディレクトリで「make」って打てばLESSがCSSになるし、Mustasheで書かれたテンプレートの変更も反映されます(テンプレート使う人がどれだけいるか知らないけど、実はそういう仕組みって知らない人も多いんじゃ?)。最後に「make bootstrap」ってやれば、CSSがMinifyされたりして必要なファイル一式「bootstrap」ディレクトリに格納されます。

先の例は、Twitter社が公開してる「Bower」というパッケージマネージャなのですが、このようなパッケージをマネジメントしてくれるものはいろいろな言語別にほぼ標準とされているものがあります。Rubyなら「RubyGems」、話題のNode.jsなら「NPM(Node Packaged Modules)」、サーバサイドならCentOSの「yum」、Debianなんかの「apt-get」がおなじみでしょうか。まぁ使われてます、いろんなとこで。

※ちなみにBowerでインストールできるものの一覧があります。よく見るヤツとか一杯あると思いますよ(Git使えれば、別にGitHubから持ってくれば良いという話でもあるんですがw)。でも「bower install jquery html5shiv」みたいに要るものだけ複数指定すれば一発で全部揃います。

食わず嫌いをやめると、幸せが待っているかも

きっとそのうちボタン一つで何もかもできるって時代になるのでしょうが、変化の激しい世の中でそこに行きつくまでにどれほどの時間がかかるかはわかりません。そろそろ「難しそう…」とか食わず嫌いはやめて、一回パッと飛び込んでみると知らなかった世界が見えるでしょう。

Windowsをメインにしている人はいろいろ下準備が大変かもしれませんが、OS XならシステムそのものがUNIXであること、世界中の多くのWeb制作者がOS Xを使ってるので環境準備のためのTipsや手法は広く公開されています。どういうのが必要かはこのページに書いておきました。

オールインワンのパッケージが悪いといっているのではありません。もうひとつ別の食材を簡単に手元に用意する方法を身につけておくともっと楽になるよって話です。正直、いまどき「npm install ホニャララ」ばっかりなんですから。

Published in articles