コスト削減と品質を両立できる、信頼のベトナムオフショア開発企業TOP10をご紹介します。
特集コンテンツ
ベトナムオフショア開発会社トップ10
【ベトナムオフショア】日本法人を選ぶべき理由
日本法人を持つベトナムオフショア企業に依頼する際のメリット・デメリットを分かりやすく解説します。
21 Jan 2025
Admin
共有
Table of Contents
NTQからの情報を受け取る
Eメールアドレス *
Δ
当然のことではありますが、コーディング量と品質が一定で開発に係る時間が少なくなれば、生産性は向上します。
品質の維持と開発速度の向上を同時に実現するためには、コードの可読性をあげて開発、保守を容易にすることが非常に重要です。
可読性と聞くとリーダブルコードを想起する方もいるかと思いますが、もう一つクリーンコードという考え方があります。
クリーンコードは、メンテナンス、開発、機能拡張にかかるコストを削減するためにはルールに基づいてコードをシンプルで直接的な可読性の高いものにするべきだという考え方です。
今回はクリーンコードの解説とNTQのC#開発を担うチームを中心とした社内浸透の事例をお話いたします。
クリーンコードの明確な定義については様々な意見があります。
例えば、グラディ・ブーチ氏はクリーンコードを「シンプルで直接的で散文のようなコードだ」と述べています。
同氏以外にも世界中の専門家がクリーンコードについて、さまざまな意見を述べています。
自分のコードはエレガントで効率的であってほしい。そのためにも、バグを隠しにくくするためにロジックをシンプルにすべきだ。また、関係者が原則に基づかない個別最適でコードをめちゃくちゃにしないことでパフォーマンスを改善できるようにし、明確な戦略に従ってエラー処理を完了し、メンテナンスを容易にするためにも依存関係を最小限に抑えるべきだ。クリーンコードによって、これらは実現できる。
クリーンコードはシンプルで直接的で、上手く書かれた散文のようなものだ。クリーンコードは設計者の意図を曖昧にせず、鮮やかな抽象化とシンプルなコントロールで構成されている。
クリーンコードは、元々の開発者以外の人でも読み取りやすく、その改善を容易にする。単体テスト、受け入れテスト、意義のある名前付けを通してより良い開発を実現する。明示的に定義された最小限の依存関係を持ち、明確で最小限のAPIを提供する。そのためにも、コードは文学的である必要がある。開発言語に依存していてはすべての必要な情報をコードだけで明確に表現することはできないからだ。
クリーンコードの特徴としては様々なことが挙げられる。しかし、その中でも最も包括的な特徴は常に心を込めて書かれていることだろう。心を込めることで、それ以上の改善の余地がない域に達している。全ての改善について開発者が考えつくしており、改善をしようしても残されたコードとそれを創った開発者に対して畏敬の念を抱くだけだ。
近年、私はケント・ベック氏のシンプルなコードのルールをほぼ身に着けたと感じている。優先度の高いものから述べるとシンプルなコードとは、すべてのテストが実行され、重複を含まず、システムの全ての設計アイデアを表現し、クラスやメソッドや関数などのエンティティが最小限になっているものだ。
まとめるとクリーンコードは、原則に基づいて重複なくシンプルに記述することで、本人以外でも明確にコードを読み解くことができるコードであるといえます。
読みやすいコードで開発を進めることで、コードの検証、更なる開発や開発後の保守にかかる時間を減らすことができます。
こうした点から、クリーンコードは開発プロジェクトにおいて非常に重要なものであるということができます。
品質の観点ではどうでしょうか?
品質管理の世界では、日本の製造業で一般的な5Sの原則(整理、整頓、清掃、清潔、躾)がよく議論にあがります。
この5Sをアプリケーションの品質を既定するソースコードに適用すると以下のように整理できます。
これを実現するためには具体的に次のような考え方でルールを設定できます。
名前は、変数、関数、引数、クラス、ファイル、パッケージ、フォルダー等、ソフトウェア内の様々な場所に散在するため、検索可能なものにする必要があります。検索を容易にするために、名前は、存在理由は何か、何をするものか、どのように使用するものかを示し、発音可能で検索可能なものとするべきです。
可読性を上げるという観点では、メソッドは20~30行程度で1つのタスクだけを処理するものとし、引数は3つまでと上限を明確に設定するべきでしょう。また、メソッド内のエラー処理をスローする、テストを実現できる戻り値変数と上記のエラー処理を担当する別のクラスを持つ、nullを返さないようにするという特性を持たせることも必要だと考えます。
注意点としては、エラー処理は重要であるものの、それによってロジックが不明瞭になるならば、可読性が下がり、生産性に影響を与えます。そのため、盛り込みすぎには注意すべきです。
意味が十分に通る名前付けがされているのであれば、さらにコメントを付す必要はないでしょう。また、すでにSource Controlで管理している場合も、ファイルや変更点に関するコメントは不要です。ただし、業務上、コードを明確にする必要がある場合、追加する必要がありえます。
フォーマットの観点では、可読性を上げるために一つの画面上で簡単にコードの確認ができるように余分なコードは削除しておくことが必要となります。
外部ライブラリを使用する場合、後でアップグレードしたり、システムのビジネスに影響を与えることなくライブラリを交換したりできるように利用する関数をラップする必要があります。
テストファーストの考え方に基づいて開発を行う場合やコード設計時に使用する考え方です。SOLIDはオブジェクト指向デザインのためのルールで、コードを単一のタスクに分割し、コードの継承を強化し、レイヤーコードの相互依存性を低減するのに役立ちます。TDDは、品質を保証しながらアプリケーションを開発するための考え方であり、後に自動化テストに利用することができます。
この他にもクラス、システム、並行処理など、様々なルールが考えられますが、いずれも可読性を上げることで開発者間の負担を下げることを目指したものです。
シンプルなコードを作成するために上記のようなルールを設定することは、他の開発者の負担を下げるという観点で、前項のクリーンコードに繋がる部分があります。
以上より、クリーンコードは品質の観点でも非常に重要な考え方であることがわかります。
システムを開発する際、開発、保守、拡張を容易にするために可読性の観点でコード品質を高くしてほしいという要求は常にあります。
コード品質向上の要求を受け、クリーンコードとSOLIDの原則、システムのパフォーマンスを向上させるTipsに関するトレーニングをC#チームで試験的に実施しました。
トレーニングを経て、コードがよりシンプルになり、整理されたことで読みやすくなり、メンテナンスや新機能の開発がしやすくなりました。
また、コンポーネント間の相互依存性が低くなったことで交換も容易にできるようになりました。
しかし、改善が見られる中でも一部、質の悪いコードが依然として繰り返されていました。
分析の結果、メソッドやクラスの名前付けに問題があることがわかりました。
具体的には、メソッドはそれに対する単体テストが書けないような状態で名前付けされ、SOLIDの5原則の活用もまだ徹底されていなかったのです。
こうした問題の解決のため、コード品質管理プロセス適用の更なる強化はもちろん、経験が不足しがちなテストを見据えたトレーニングにするためにトレーニングの内容を改善していきました。
トレーニングを継続することで、コード品質の基本的な間違いがほとんどなくなり、散見されていた名前付けの問題もなくなり、特に単体テストに繋げる名前付けという観点で開発者のレベルが向上しました。
また、業務の分離、抽象クラスの開発など、SOLIDのルールもより正確になりました。
また、ミスが減少し、当時多くの工数をかけて実施していたミスの多い人に対する重点的なピアレビュー等の多くの工数を削減することができました。
工数が減って品質があがったことで生産性も向上し、システムの新機能の業務の分析と設計、新機能の開発、既存機能の修正やバグの修正を容易にするためのシステムの一部のリファクタリングなど、より多くの仕事に対応できるようになりました。
バグや古い機能の修正にかかる時間が半分になり、新機能の開発プロセスの速度もあがったことで、開発の工数において25%の余力が生まれました。
その後、C#のチームで優先的に始まったこのトレーニングは対象を拡大していき、現在ではNTQでご支援しているほとんどの開発プロジェクトでクリーンコードを導入することとなりました。
お客様に納品する際のみならず、開発中のレビューや将来のプロジェクトの保守、拡張の検討がやりやすくなったとお客様からコメントをいただいています。
クリーンコードの意義を時間の削減、品質の向上という観点で語ったうえでNTQのC#開発チームにおける生産性向上の事例をご紹介しました。
クリーンコードの浸透はNTQにおける生産性向上の一手です。
この他にも数々の施策を実施しながら、対日系システム開発企業での最大40%のコスト削減と日本レベルの品質を同時に実現するために尽力しています。
生産性向上を先導したC#チームが提供するNTQの新サービスC#_EXTENSION TEAMについては、下記のダウンロードページよりダウンロードいただけます。
・「ダウンロード」ページ
NTQは、10年以上にわたる日本での活動の中でC#を含め、大手企業様から新興のスタートアップ様にいたるまで数多くの企業様の600件を超える開発をご支援してまいりました。
モバイルアプリ、Webアプリ、デスクトップアプリ等の開発を検討中の皆様、開発人員が不足しているITベンダーの皆様は、ぜひ一度NTQにお問い合わせくださいませ。
・「お問合せ」ページ
株式会社NTQジャパンは、2026年6月17日(水)に無料オンラインセミナー『AI駆動開発 × マイグレーション実践論 〜速度と品質を両立する新しい進め方〜』を開催いたします。 「2025年の崖」問題が迫り、年間最大12兆円の経済損失リスクが懸念される昨今。多くの企業がシステムのモダナイゼーションやクラウド移行を急いでいますが、実際の移行現場では深刻な課題が浮き彫りになっています。 本ウェビナーの背景と概要 「設計書がない」「当時の開発者が退職し、残っているのはブラックボックス化したコードだけ」——。 このような過酷な状況下において、「AIを使えば移行が速くなる」という期待が高まっています。しかし、AIの出力をそのまま信じて本番適用できるほど、エンタープライズのマイグレーションは容易ではありません。 本ウェビナーでは、AIを単なる「コードを書くツール」として捉えるのではなく、数万行におよぶ複雑なコードを瞬時に読み解く「理解コスト削減の武器」として活用する、新たなアプローチについて解説します。 速度と品質を両立する新手法『Smart Rewrite』の具体的な進め方を、実例を交えて大公開いたします。 【ウェビナー プログラム内容】 課題の共有:従来手法の限界と、AIがもたらす「常識を覆す変化」とは 技術アプローチ:ハルシネーションを回避し、機械的検証で品質を担保する新手法 実践と展開:形だけの変換(Jabol)を防ぎ、PoCから本番へスケールさせる軌跡 【こんな方に特におすすめです】 「2025年の崖」やIT人材不足に危機感を抱くDX推進担当者様 既存のマイグレーション手法(工数とコスト)に限界を感じているPM・開発責任者様 AIによる形だけの言語変換(Jabol)を防ぎ、真のモダナイゼーションを実現したいエンジニアの方 【過去の受講者の声】 本ウェビナーの内容は、今年4月に開催された「Japan IT Week 春 2026」のセミナーでも発表し、受講者の皆様から大変高い評価をいただいた内容です。 「AI関連のセミナーの中で、最も実用的で面白い内容でした。」—— SIer様 「業務として本格的にプログラミングを行う立場ではありませんが、設計書がなく、管理者も不在となってしまったVBA・Excelプログラムの保守にも活用できそうだと感じました。」—— 製造・メーカー企業様 「非常に満足度の高い内容でした。」—— ソフトウェアベンダー・SI/情報サービス企業様 【開催概要】 ウェビナー名: AI駆動開発 × マイグレーション実践論 〜速度と品質を両立する新しい進め方〜 日時: 2026年6月17日(水)12:10 〜 12:50 開催形式: オンライン(Zoom) 参加費: 無料 登壇者: 石川 明(株式会社NTQコンサルティングジャパン 代表取締役) ▶ 無料お申し込みはこちら 【お問い合わせ先】 株式会社NTQジャパン Email:[email protected]…
By Admin , 29 May 2026
2026年5月開催の Japan IT Week 春 2026 にて、NTQコンサルティングジャパン 代表・石川 による「AI駆動開発×マイグレーション実践論」セミナーを開催。AI駆動開発によるシステムモダナイゼーションやレガシーシステム移行の実践的アプローチについて解説し、126名が参加した注目セミナーのレポートをお届けします。
By Admin , 18 May 2026
【NTQタワー着工】ベトナム・ハノイを拠点とするIT企業NTQが、次世代テクノロジーオフィスの起工式を開催。IPOやグローバル展開を見据え、セキュリティとイノベーションを強化する新本社の全容をご紹介します。
By Admin , 13 Apr 2026
ベトナムのIT企業NTQと、株式会社エムアップホールディングスが戦略的パートナーシップおよび投資契約を締結。新たなデジタル開発拠点の設立やAI技術の活用を通じ、次世代のデジタルソリューション共創とグローバル展開を加速させます。
By Admin , 07 Apr 2026