ソフトウェア開発の効率と品質を向上する『部品とひな型』


ソフトウェア開発の効率と品質を向上する『部品とひな型』

今回は、ソフトウェア開発には必須のソフトウェアの部品とひな型についてお話します。

現在、webサイトやアプリの開発において、すべての機能を自分で作る(ソースコードを書く)ことは、まずありません。 すでに公開されているプログラムの部品やひな型を使って開発するのが当たり前になっています。

このプログラムの部品を『ライブラリ』や『モジュール』と呼び、ひな型を『フレームワーク』と呼びます。 本記事では『ライブラリ』と『モジュール』をまとめて『ライブラリ』と呼ぶことにしましょう。

これらの言葉、プログラミング初学者のかたには馴染みが薄いかもしれませんね。 仕事としてプログラミングをする上で「どのライブラリやフレームワークを使うか?」は「どの言語をやるか?」と同じかそれ以上に重要といっても差しつかえありません。

目次
  1. ライブラリとは
  2. フレームワークとは
  3. ライブラリとフレームワークの使い分け
  4. 開発を効率化してくれるその他のもの
  5. SDK(Software Development Kit)
  6. CMS(Contents Management System)
  7. ライブラリやフレームワークを作る人のメリット
  8. 最後に

ライブラリとは

ライブラリとは、多くの開発で使われるであろう共通的な機能を実装し、有償もしくは無償で提供、公開している再利用可能なプログラム群のことで、ソフトウェアの部品が集まったものといえます。
PythonやNode.jsのように言語によっては『モジュール』と呼んでいる場合もありますが、基本的には同じものだと考えてください。

たとえば、指定のURLからデータをダウンロードするプログラムを作る場合を考えてみます。
ゼロから自分で作るためには、インターネットのプロトコル(通信手順)を理解するところから始まって、膨大な量のプログラムを書かなければなりません。
それをテストして不具合を修正し…となるとあっという間に数週間が経つでしょう。
しかし、公開されているインターネットアクセスのライブラリを使えば、数行のコードを書くだけでものの10分もあれば目的のプログラムができあがります。

ライブラリはあくまでも部品の集まりなので、その中のどの部品を使うか、どのように使うかは開発者が決めます。
この点が、あとに説明する『フレームワーク』との違いです。

フレームワークとは

フレームワークとは、ソフトウェアを開発する際の手順やルールをあらかじめ決めたもので、これに沿って開発することで開発の効率が圧倒的に向上します。
フレームワークには独自のライブラリが含まれていることも多く、ルールに沿った開発がしやすいようになっています。

ソフトウェアを開発する時に考えなければならないのは、「目的の機能をどうやって実現するか?」だけではありません。
「どうしたらバグを出さないようにできるか?」「どうしたら機能拡張しやすくできるか?」など、機能以外の部分も考えなければなりません。
これらは開発経験が少ないプログラミング初心者には難しいものですが、フレームワークを使えば経験豊富なエンジニアのノウハウを活用できるのです。

フレームワークはライブラリと違って、ソースコードの書き方のルール(場合によってはファイル名やファイルの置き場所も)を決めているので開発者はそのルールに従わなければなりません。
これは開発ノウハウを活用するために必要なことなのです。

ライブラリとフレームワークの使い分け

では、ライブラリとフレームワークはどのように使い分ければよいのでしょう。

基準のひとつとして、開発の規模があります。
新規のwebアプリケーションを作るのであればフレームワークを使った方が良い、逆に規模の小さな開発(ちょっとしたツールを作りたい時など)にはライブラリを使った方が良い場合が多いです。

フレームワークは便利な反面、規模の小さい開発の場合は冗長になることがあります。
「コードは書かなくてもいいけどルールで決まっているのでファイルだけ用意しないといけない」といったムダな作業を発生させるため、規模の小さな開発には向かないのです。

また、2つ以上のフレームワークを同じ開発で使うことはありませんが、フレームワークの中で提供されていない機能はライブラリを追加して使う形でフレームワークとライブラリを組み合わせるケースはあります。

開発を効率化してくれるその他のもの

ライブラリやフレームワーク以外にも開発効率や品質向上に役立つものがあります、これらについても頭の片隅に置いておいてください。

SDK(Software Development Kit)

ライブラリやフレームワークと似ているものに『SDK(Software Development Kit)』があります。
特定の製品向けのソフトウェアを開発しやすくするために、製品のメーカーが提供するものです。
ライブラリとして提供するものやフレームワークとして提供するものがあり、どちらの形式で提供するかは対象となる製品の性質やメーカーの方針によって異なります。

たとえばAppleがiPhone用アプリの開発者向けに提供しているSDKは『iOS SDK』です。

CMS(Contents Management System)

『WordPress』に代表されるCMS(Contents Management System)も、webサイト開発を効率化してくれる仕組みであり、フレームワークのひとつといえます。
CMSが利用者(webサイトを運用する側)にとって運営しやすさというメリットがあることは広く認識されていると思いますが、開発者にとっても効率化と品質向上のメリットがあります。

ライブラリやフレームワークを作る人のメリット

ライブラリやフレームワークは、それを使う人にメリットがあることをわかっていただけたと思います。

こんな便利なライブラリ、作るのは大変だと思うのですが作る人にはどんなメリットがあるのでしょうか。

こちらは大きく2種類があります、ひとつはオープンソースの開発者などが作ったものを無償で公開するケース。
無償での公開であれば金銭的な報酬を得ることはありませんが、自分が作ったものを多くの方に使ってもらえるという精神的な報酬があります。
また、作ったライブラリが多くの人に使われるとそれをきっかけとして有名になり、企業からスカウトされるようなケースも。 ライブラリを広く提供することが自分のポートフォリオ(開発実績)になるのです。

もうひとつは、製品やサービスを提供する企業が公開しているケースです。
こちらの場合、第一に自社の製品やサービスに対応した開発者を増やすメリットがあり、開発しやすくすることで問い合わせなどを減らし、サポートコストを下げる効果もあります。
とくにハードウェア製品に対応したソフトウェアを開発する場合には、ハードウェア個体の微妙な違いをライブラリやフレームワークで吸収することで、開発者が意識しなくても良くなります。

Webサイト担当者としてのスキルが身に付く

CodeCampの無料体験はこちら

最後に

現在のソフトウェアの開発においてゼロから自前で作ることはほぼありません。
ライブラリやフレームワークの利用は必須で、目的にあったライブラリやフレームワークを選択し駆使できるかが重要になります。

とはいえ、無数に公開されているものをすべて自分で試すのは無理があります
。まずは、自分の得意なライブラリやフレームワークを持つことを目標にしてみましょう。
そして、あなたが何かのエキスパートになった時、初心者の良いメンターになってあげてください。


関連記事

若林健一
この記事を書いた人
若林健一
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp