SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Data Tech 2024

2024年11月21日(木)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine(エンタープライズジン)

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年秋号(EnterpriseZine Press 2024 Autumn)特集「生成AI時代に考える“真のDX人材育成”──『スキル策定』『実践』2つの観点で紐解く」

ユーザーとSlerをつなげる「美しいコード」の物語

コードの美しさがもたらすもの

 前回に引き続き、SIerにおけるソースコードの扱われ方について話しています。Deliveryが優先されるSIの開発現場では、コードはどのようにして生まれ、変化していくのでしょうか。

SIにおけるソースコードのライフサイクル

小野 ソースコードの美しさを考える上で大事なのが、どれくらいの期間メンテナンスしていくソースコードなのか、というライフサイクルなんですよ。パッケージとかWebのサービスっていうのは、基本的にそのソフトウェアがなくなるまでの間、維持・改修し続けるもの。SIは個別のお客さん向けに作ってカットオーバーして…と、ひとつの区切りがあるわけだけれど、それは作り切りみたいな形なのか、メンテナンスされ続けるものなのか?SIにおける1つのソースコードの旅路、どこまで、何年くらい生きてくのか?どうやって変化していくのか?どういうふうに流れていくのか?そういう、SIにおけるソースコードのライフサイクルの話を有馬さんからしてもらおうかと。

有馬  SIerのコードも1度出したら使い捨てというわけでは当然ないです。たくさんの人が関わって、すごくコストをかけて開発しているので当然ながら使い捨てません。実際には5年、10年と使い続けます。じゃあそのソースコード、必ずしも美しいとは言えないかもしれないソースコードは、どうやって10年間、改修・保持されていくのか。やっぱりだんだんと苦行になってきます。1度作られたソースコードが次に人の目に触れるのは、そのシステムを使っているユーザーから「新しい機能を作りたい、今の機能を変えたい」というような要求が発生した時です。そこで初めて過去のソースコードが、ソースコードとして陽の目を見ます。まず機能を変えたいという要望をもとに、改修を担当するベンダーが見積もり作業を行いますが、ソースコードが美しいか美しくないかの違いによって、見積もりの額が大きく変わってきます。

小野 美しいコードは見積もりが違うという話でしたよね。ケースによるだろうけど、何倍くらい変わる感じ?

有馬 規模によりますが、5倍以上になることもあります。プログラムは修正したら終わりじゃなくて、大量のテストをしなければいけないからです。美しくないコードは、テストの量が非常に大きくなる傾向にあります。たとえば、ユーザーはたった1つ、A機能の修正しか要望してないのに「いやいや今回のコードを直すと、僕らが見たところ、A、B、C、D、Eの 5機能を直さなければいけません」となる。ですので、「ここの部分のテストの費用を頂かないと改修はできません」という形になってしまう。その後、ユーザーにその見積もりが許容され、開発工程に進んでいくんですけど、その開発でも多くの苦労が待っています。正しいデザインパターンやオブジェクト指向に基づいた美しいコードであれば、追加機能を簡単に差し込むことができる。しかし美しくないコードは、if文などの処理分岐がたくさんはいっているので、どうしてもそこに対して新たな分岐を追加していくことになってしまう。そうすると分岐の入れ間違いとか、その分岐をいろんなところに入れなければいけないっていうような状況が生まれます。その結果、フラストレーションが溜まって、プログラマーの口から思わず「このクソコードが!」と汚い言葉等が飛び交ってしまいます。ただし、そこで全体を改善する時間はとることができないので、同じように分岐追加で対応することになります。分岐を加えられたクソコードは、更なるクソコードになり……これは記事にはできない(笑)。

小野 こんな丁寧な口調でクソコードって(笑)。

有馬 クソコードがクソコードを生む。それの繰り返しが10年間溜まると、やっぱり大量のif文がまたそこに生まれて「もう、もう無理だね…」というところで、更改が始まる。

小野 最初カットオーバーまでまず作るよね。作って、次のシステム更改までの間に機能追加の要望とかがなければそのままだけども、機能追加とか変更の要望があれば、その時、該当箇所およびその影響範囲の箇所については手が入っていくと。…という意味においては、メンテナンスが入っていく。ただ何もなければ手が入らないと。システム更改になりました、要するにシステムバージョン2で、大型のリニューアルがありますってなった時に、その時代のフレームワークだとか新しい技術っていろいろ変わってるから、基本もう1回作るんだけども、その新しいシステムの中でもバージョン1のコードは部分的には生きていく。完全に捨てるケースってある?

有馬 完全に捨てるケースはほとんど見たことはないですね。移行対象外機能として認められれば捨てますけど。よく言われる「設計書がない問題」っていうのがやっぱり出てきます。設計書自体はあるのですが、新規開発時から年月が経ち、設計書と実際のコードに乖離があって役に立たないという問題です。そういった時は既存のソースコードをそのまま持ってくる、もしくはそこで表現されている分岐をそのまま持ってくるのはやっぱり多いですね。

小野 形を変えて生きてくわけだよね。だからやっぱりSIも、一見、システム更改が終わったら変わるよねとか、変更がなければそのままだよねっていうふうに、メンテナンスされ続ける期間、実はパッケージとあんまり変わらないくらい生きてくわけですよね。パッケージのほうは常に手が入り続けるから、入る頻度とかっていうのは、確率は違うかもしれないけども、基本的に生き続けてメンテナンスされ続けるわけだよね。そしたら変わらないよね。同じくらい大事ですよね。メンテナンスのしやすさ、メンテナビリティが。

有馬 メンテナビリティは、SIにおいてもとっても大事です。

次のページ
コードの美しさと量産性

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
ユーザーとSlerをつなげる「美しいコード」の物語連載記事一覧

もっと読む

この記事の著者

小野 和俊(オノ カズトシ)

セゾン情報システムズ常務取締役CTO 兼 アプレッソ代表取締役社長。大学卒業後サン・マイクロシステムズに就職し、シリコンバレー本社での開発を経験。その後24歳でアプレッソを起業し、DataSpid...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

有馬三郎(アリマサブロウ)

セゾン情報システムズ2009年にセゾン情報システムズ入社。これまで金融、運輸業界などのSIを17年間担当。2016年より当社内でモダン開発を推進する組織であるモダン開発推進チーム、通称「モダ推」のリーダーとして、「楽しい開発」を社内に展開中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/9354 2017/06/19 06:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング