たとえるなら

このサイトのマスコット、帽子をかぶった青い小鳥のルートンが旗を振っている

家づくりでいう「工事」の段階です。間取り図(設計)が決まったら、大工さんが実際に柱を立てて壁を作ります。プログラムの世界では、設計をもとにソースコードを書いて機能を組み立てる作業が実装です。

要件定義 設計 実装 テスト リリース
開発の流れの中で「作る」を受け持つのが実装。設計をもとにコードで形にする。

もう少しくわしく

実装は、設計で決めた内容を、実際にソースコードとして書いて動く形にする作業です。システム開発は大きく「何を作るか決める(要件定義)」「どう作るか決める(設計)」「作る(実装)」「確かめる(テスト)」という流れで進みます。実装はその中の「作る」にあたる、いわば開発の本体で、頭の中の計画が初めて動くものになる工程です。

ひとくちに実装といっても、中身はコードを書く時間だけではありません。設計書を読んで足りない点を洗い出す、既存のコードのどこに手を入れるか探す、少しずつ動かしながら組み立てる、自分で動作を確かめる、レビューでの指摘を直す——ここまでがひとまとまりの実装作業です。「コードを書き終えた」と「実装が終わった」の間には、まだいくつも工程が挟まっています。

似た言葉との線引きも整理しておきましょう。設計は「どう作るか」を決めるところまで、実装はそれを実際に動く形にするところです。「コーディング」はコードを書く行為そのものを指しますが、実装はテストできる状態まで機能を仕上げることまでを含みます。状態を表す言い方として、すでに作られていれば「実装済み」、まだ作られていなければ「未実装」と呼びます。

現場の流れはおおむねこうです。設計が固まると、機能ごとに担当者と工数が割りふられます。担当者は自分の手元の環境でコードを書き、動くところまで作ったらレビューを依頼します。指摘を直してからチームの本体のコードに合流させ、テスト環境で確かめる。ここまで通って、ようやく完了と報告できます。どこまでを実装完了と呼ぶかは現場によって違うので、入ったばかりのころに確認しておくと安心です。

落とし穴でいちばん多いのは、あいまいな部分を自分の想像で埋めてしまうことです。設計書に書かれていない動きに出会ったとき、「たぶんこうだろう」と決めて作り込むと、あとで作り直しになります。もうひとつは、全部でき上がってから一度にまとめて確認しようとして、どこで間違えたのかが分からなくなる進め方です。小さく作って小さく確かめるほうが、結局は速く終わります。

働きはじめたばかりの人は、手が止まった時間を抱え込まないことを心がけてください。悩んでいる時間は、たいていスケジュールに入っていません。「ここまでできていて、ここで詰まっています」と早めに言えれば、まわりはすぐ助けられます。エンジニアではない立場の人は、「実装中です」と言われたらまだ画面として触れない段階だと受け取り、動くものを見たいときはいつごろ触れるかを聞くのがおすすめです。

同じ設計からでも、実装のやり方はエンジニアによって差が出ます。速く動くように書くか、後から読みやすいように書くか、どこまで先の変更を見越しておくか——こうした判断の連続が実装という仕事で、ここにエンジニアの個性と実力が表れます。読みやすさを軽く見て書いたコードは、数か月後に自分やチームの足を引っぱります。あとから手を入れる人の顔を思い浮かべながら書けるかどうかが、腕の分かれ目です。

現場での使われ方

「その機能、来週から実装に入ります」

設計が固まったので、来週からソースコードを書く工程を始める、というスケジュールの報告です。ここから先は、仕様の変更が入ると作り直しが発生しやすくなります。

「それはまだ未実装です」

仕様や画面案としては存在するが、プログラムとしてはまだ作られていない、という状態の説明です。設計に書いてあることと、動く状態になっていることは別だという意味でもあります。

「実装は終わっていますが、レビュー待ちです」

コードは書き上がったものの、まだ他の人の確認を受けていない段階だという報告。この状態ではチーム本体のコードに入っていないため、テスト環境でも試せません。

「そこは実装が重いので、先に相談させてください」

見た目は小さな要望でも、作るとなると手間が大きい場合の一言です。断っているのではなく、工数と優先度を確かめたいという意味で使われます。理由を聞くと、たいてい納得できる事情があります。

よくある質問

実装とコーディングは同じ意味ですか?

ほぼ同じ場面で使われますが、コーディングは「コードを書く行為」そのもの、実装は「機能を動く形に仕上げること」という少し広い意味で使われます。そのため、コードを書き終えていても、動作確認やレビューが残っていれば「まだ実装中です」と言うことがあります。

実装と設計は何が違うのですか?

設計は「どう作るか」を決める工程、実装はその決めごとを実際のソースコードにする工程です。家づくりでいえば、間取り図を描くのが設計、その図をもとに柱を立てて壁を作るのが実装にあたります。ふつうは設計が固まってから実装に入りますが、実装を進めるうちに設計の抜けが見つかることも珍しくありません。

「実装済み」と聞いたのに、まだ画面で使えないのはなぜですか?

実装が終わってからも、テストと、サーバーへの配置(デプロイ)という段階が残っているためです。現場によっては、配置だけ先に済ませて、公開の日まで機能を隠しておくこともあります。いつから使えるかは、実装の進み具合ではなくリリースの予定を見るのが確実です。

実装にはどれくらい時間がかかるものですか?

作るものの大きさと、既存のシステムの複雑さによってまったく変わるため、一概には言えません。同じ「ボタンを1つ足す」でも、影響する箇所が多ければ何日もかかります。だからこそ現場では、作業を細かく分けて工数を見積もる作業に時間をかけます。見込みを聞かれて自信がないときは、調べる時間をもらうのが安全です。

実装が終わったら次は何をするのですか?

ふつうはレビューを受け、指摘を直したうえでテストに進みます。仕様どおりに動くかを確かめ、問題がなければサーバーに配置(デプロイ)して、利用者に公開(リリース)という流れです。実装はゴールではなく、後半の工程への入口だと考えるとわかりやすくなります。

関連用語

関連する記事

エンジニア職種図鑑

この言葉を使って働く人たちの仕事を、7つの職種で

ITの学び方ガイド

もっと知りたくなったら。教材の選び方を3ステップで