オフショア開発のソースコードの品質

2020.02.28

オフショア開発

オフショア開発で聞く「ソースコードの品質」、どうして必要なの?改善方法は?

オフショア開発にてよく聞くデメリットの一つが、「品質が悪い」ではないでしょうか?
仕様通りに出来上がって来なかった、デザインがイマイチ、などもありますが、やはりソフトウェアの開発に重要なのは「ソースコード」。

ベトナムのオフショア開発のエンジニアたちは、クライアントやPMが作成した仕様書を見て、それを実現するためにコードを書きます。
それがソースコードです。

エンジニアの人であればその重要性はわかると思いますが、非エンジニアの人にとっては「なぜソースコードの品質が必要なの?動けばいいじゃん」と思う人もいるかもしれません。
今回は、ソースコードの重要性について、そしてオフショア開発でどうやってソースコードの品質を上げていくかを解説します。
まずは、ソースコードが綺麗だと何が良いのかを見ていきましょう。

1. メンテナンス性が上がる

ソースコードは、プログラム言語によっても多少違いますが基本的には英語のような形で処理が書いてあるものです。
ソースコードを綺麗に書くということは、日本語を綺麗に文法が整った形で書くのと同じようなことです。

基本的にオフショア開発でのソフトウェア開発は、中規模〜大規模になるかと思いますので、複数人のエンジニアで開発を行うことになります。
複数人での開発プロジェクトでは、オフショア開発に限らず、誰にでも読みやすく、長すぎず、簡潔に書いてあるものが好まれます。

プログラミング言語によっては、誰が書いても同じようになるようきっちりとルールが決められている言語もありますが、自由度が高く個人差がでるプログラミング言語もあります。

特に自由度が高くなるようなプログラミング言語では、後々見た人がわかるような処理を書くことが非常大事になります
そうでないと、改修などをする場合に解読に時間がかかりメンテナンスにかかる時間が大幅に増えるからです。

また、メンテナンスのためには可読性だけではなく、拡張性なども担保しておく必要があります。
後ほど変えるかもしれない、という前提で書いておくことで、仕様の変更があった時にも一部分を変えるだけで対応できるなどのメリットがあります。

綺麗なソースコードを書いておくことは、後々誰が見返してもわかりやすく、すぐに改修を行うことができるという高いメンテナンス性を担保するということなのです。

2. セキュリティが強化される

ソフトウェア開発を行う時には、ある程度セキュリティを担保するためのルールというものがあります。例えば、前にFaceBookがパスワードを平文で保存していた、などのニュースがありましたが、これもセキュアなコードを書くための規則があれば避けられた話です。

コードを書く時には、「これはやってはダメ」という一定のルールがあり、多くはセキュリティに関わるものになります。
「この処理をすると脆弱性が発生してしまう」というのは多くのエンジニアに共有されており、知識があればほとんどのセキュリティインシデントは避けられます。

コードの品質が高い、というのは、セキュリティもしっかりしているということを意味しています。

3. 製品のパフォーマンスが上がる

ソースコードによっては、非常にパフォーマンスを落とす書き方というものがあります。
例えば、ループ処理を多くする、データベースからデータを取得するときの処理方法が非常に効率が悪い、などです。

パフォーマンスが落ちるということは、ユーザーに直接悪影響を及ぼしうるものになります。
ページの読み込みが遅い、ボタンを押した後にずっと処理が完了するまで待っていないといけないなどのプロダクトは、使っていて気持ちのいいプロダクトではありませんね。

簡潔で早く処理ができるソースコードを書くというのも、エンジニアが目指すことの一つです。

4. なぜオフショア開発ではソースコードの品質が落ちるの?

オフショア開発においてはソースコードの品質が悪いと言われますが、なぜそれが起こってしまうのでしょうか?
もちろん、この問題はオフショア開発だけではなく、どの開発チームにも発生しうるものです。
多くのプロダクトチームで「リファクタリング」と言われるソースコードの書き直しが行われていますし、オフショア開発に限ったことでは決してありません。

原因は主に下記の3つです。

・開発チームの知識不足
・プロジェクト期間が短すぎる
・品質担保の体制ができていない

それぞれの問題と対策について見ていきましょう。

4-1. オフショア開発チームの知識不足

例えばエンジニアリングチームにジュニアエンジニアしかいないなどの、単純な経験、知識不足から起こる問題です。
コストを安く抑えたいからとオフショア開発先のジュニアのエンジニアに発注したら、確かにプロダクトは動いているけれどバグが多い、などの例はよく聞きます。

経験不足のエンジニアを投入したがためにソースコードの品質が悪く、後からやり直しに…ということも少なくはないため、長い目で見ると全くコスト削減にならないこともあります。

この場合、開発経験が十分なシニアエンジニアを投入するか、勉強期間も含めて見積もりに入れ、なんとかエンジニア自身で品質の高いソースコードについて知ってもらうしかありません。

後者はあまり現実的ではないと思いますので、やはりオフショア開発においては、ジュニアエンジニアとシニアエンジニアはセットで動いてもらうのが良いでしょう。

4-2. オフショア開発のプロジェクト期間が短すぎる

多くの場合、これがソースコードの品質が悪化してしまう原因です。
スタートアップなどでもよく見られますが、早く開発したいという状況においてプロジェクトの期間を十分に取らずに開発を進めると、一番最初に犠牲になるのは品質ということが多いです。

これはエンジニアが「とにかく動くものを出さなければいけない」という状況になるからであり、顧客は「動く」=「ソースコードの品質が良い」ではない、ということを頭に置いておく必要があります。

品質の高いものを作ろうとすると、仕様確認の時間やテストの時間も多く取る必要が出てくるのでプロジェクトの期間は必然的に長くなります。

なんでもいいから早くプロダクトを世に出したい、リファクタリングは後でする、という場合はこの動き方でも構わないと思いますが、きちんと品質を担保したいという場合は、オフショア開発先にその旨を伝え、プロジェクトの期間を調節していくと良いでしょう。

4-3. オフショア開発先で品質担保の体制ができていない

オフショア開発でコスト削減を一番の目的においている場合、そもそもコードのレビューもしない、テストもあまりちゃんとしない、というプロジェクトが生まれてしまうことがあります。

コストを削減したいあまり、品質担保の体制が0のまま開発を進めてしまうパターンです。

小規模なプロダクトであれば、経験豊富なシニアエンジニアが1人である程度品質の担保されたものを作れる場合もありますが、オフショア開発はほとんどが中規模〜大規模になると思いますので、品質担保ができるような組織体制ができていないと厳しいです。

ではどんな組織を作ればいいのかというと、必ずエンジニア同士でコードレビューをしっかりやり、テストも正常系、エラー系含めてできる体制である必要があります。

オフショア開発では多くの場合テスターがアサインされますが、私も経験からテスターがいた方が品質の高いものが出来上がることを実感しているため、テスターは1人は絶対に入れておくことをオススメしています。

5. まとめ

適切なプロジェクト体制を敷くことで、オフショア開発でもしっかりと品質の高いソースコードを書いてもらうことが十分に可能です。
オフショア開発先と相談し、どのような体制ならば品質が担保できるか、プロジェクトの期間は十分かなどを話し合ってくださいね。

ベトナムでオフショア開発をするなら+αのサービスとメリットがあるバイタリフィへ

Offshore_1280x720

バイタリフィ並びにベトナム子会社のバイタリフィアジアでは、ベトナムでのオフショア開発を行っております。
品質担保の為にチーム内で相互コードレビューを行ったり、RedmineやJiraなどプロジェクトに合わせてタスクをチケット化して管理しています。

また、低リスクでベトナム進出を試せる拠点開設プランなど、13年以上に及ぶベトナムでのオフショア開発経験を活かした+αのサービスとメリットを提供しております。無料でご相談頂けますので、ぜひ一度お気軽にお問合せいただけましたら幸いです。

ベトナムオフショアならバイタリフィへ