プラグイン開発とスクラッチ開発

「BlogはTwitterより強し」と、大昔の偉人は言ったとか言わなかったとか。ということで、Blog書いてます。

マジメな話、Twitterは気軽に発信できるけど気軽過ぎて後から参照しづらいんですよね。自分の生きてきた証、とは言い過ぎかもだけど、当時の考えとかをある程度まとまった形で残して置くにはBlog(とかTwitterとは別手段)の方が確実です。


一口にプログラムを開発するといっても、色々な形態がありますよね。ここでは、大きく「プラグイン開発」「スクラッチ開発」の2つに分けて考えてみようと思います。それぞれの定義*1と比較は以下の通り。

プラグイン開発
既存のアプリケーションに、拡張機能を追加する開発
スクラッチ開発
アプリケーションを一から設計・実装する開発
メリット デメリット
プラグイン 既存の枠に沿うことで、小コストで作れる
多くのユーザにリーチできる
様々なアプリケーションの思想に触れることができる
習得できるスキルが中途半端になりがち
既存アプリケーションの制約に制限される
スクラッチ 自分で作った感をより実感できる
包括的な知識・スキルが習得できる
開発に時間がかかりがち

プラグイン開発

プラグイン開発のメリットは、(すでにアプリケーションとしての大枠はあるので)実現したい機能を低コストで作れることが多いということがあげられるでしょう。また、多くのユーザにリーチできるという利点があります。特に、何かと何かを連携する*2ようなものでは、両方のユーザにアプローチできる可能性があります。既存のアプリを見ている内に、自分では考え付かないような設計・実装を学ぶことができるかもしれません。

デメリットとしては、必要なところだけかいつまむ形で開発するため、中途半端・場当たり的なスキルしか身につかない恐れがあります。0から考えることが少ないので、そのような力が身につきにくいというのもあるでしょう。また、既存のアプリケーションでアーキテクチャ的に無理なことは、プラグイン開発でも実装は無理かもしれません。

スクラッチ開発

対して、スクラッチ開発では、自分が作った・一から育てたアプリという感覚をより強く感じることができます。アプリ全体を作っていく過程で、包括的な知識やスキルを習得できることも大きなメリットでしょう。

デメリットは、一から全部考える必要があるため、どうしても時間がかかりがちになることがあげられます。本質的に提供したい機能は一部分だったとしても、全体を実装しないといけません。


私はというと、一から作るよりプラグイン的なものを考えたり作ったりする方が好きなタイプ。結構アイデアも出てくるのですが、スキル足らずによって企画倒れであまりできていないのが難点・・・。新しい環境や技術の調査のときに、一つ一つに時間がかかり過ぎるんですよね。これも、技術調査の経験を重ねることによって、(以前に直接は触ってなくても)勘所みたいなのが身についてくるのかもしれませんが。

どちらにせよ、この業界に居座る以上は新しい技術要素に触れ合っていくのは避けることができない事実です。ならば、その勘所を早く身につけて、強みと変えていくぐらいになるよう精進していきたいですね。

*1:いい言葉が浮かびませんでした。スクラッチ開発と対になる言葉はパッケージ開発だよなとは思ったのですが。より適切な言葉がある方は、教えてください><

*2:例えば、TracとHudsonを連携するプラグインとか