試行錯誤で分かったスパゲッティコード撃退法:システム開発プロジェクトの現場から(1)(2/2 ページ)
開発現場は日々の仕事の場であるとともに、学びの場でもある。先輩エンジニアが過去に直面した困難の数々、そこから学んだスキルや考え方を紹介する。
鍵はエレガントさ
「WindowsのアプリケーションならVisual Basicだろう」という安直な発想で開発環境を決め、本とヘルプを片手にいざ作り始めてはみたものの、ソースコードはどうしてもスパゲッティコード(複雑に絡み合って整理されていないソースコード。バグの温床)に……。たった数日前に自分の手で書いたはずのコードなのに、なぜか読み返しても意味不明という状態なのです。
失敗の大きな一因は、開発環境の理解不足でした。私は環境がどんな機能を提供しているかを十分に把握しないまま、コーディングに入っていました。結果として、意味もなく複雑なコードになってしまっていたのです。
数百行のコードを書き終え、後になってよくよくヘルプを読み返してみると、同じことがたった1行のコマンドで実現できることに気付いたりするわけです。「早くいってよ!」と誰もいない空間に向かって叫びつつ、苦労して書き上げたコードを自ら消すという悲しい瞬間を何度か経験しました。
そんな失敗を繰り返すうち、シンプルで無駄のないソースコードほど可読性やメンテナンス性が高く、バグも出にくいことが実感として分かってきました。数学の問題を解くとき、解答がエレガント(この場合、無駄がなく洗練されているというニュアンス)であればあるほど、論理的な誤りを生みにくいといわれるのと同じです。
「ユーザーにとって必要なのはシステムであり、ソースコードではない」。極論すれば、ソースコードを1ステップ増やすことは、その分品質を下げることにつながるということに気が付いたのです。
「いま」やるべきこと……とにかく引き出しを増やす
エレガントなソースコードを書くためには、開発環境が持つ機能を十分に把握し、それらを使いこなすノウハウが必要です。とにかく自分の中に、知識とノウハウの引き出しをたくさん増やさなければということに思い至りました。
その後私は何かを調べるとき、調べようとしている事柄そのものだけでなく、周辺の情報も含めて網羅的に覚えるようにしました。また、新しく分かったことはすぐに実機で挙動を確かめ、理解を深めるようにしました。幸い、当時はそんな時間的なゆとりがあったのです。
そんなふうに試行錯誤を重ねていった結果、だんだんと知識が身に付き、開発方針も見えてきました。
- 開発環境はVisual Basicではなく、Accessとする
- レポートはExcel形式で、Accessから自動作成する
- Access、Excelの持つ標準機能を活用し、コーディングは極力行わない
途中いろいろと苦労はあったものの、このシステムは数カ月でどうにか完成し、運用にこぎつけることができました。
このままではいけない
簡単なものとはいえ、とにかく1つの仕組みを作り上げたということで、周囲から「開発ができる人」と見なされ、次々と案件を依頼されるようになりました。会社の仕事以外のちょっとした開発を手伝い、感謝されたこともありました。
苦労しながらも自分で考えた仕組みを作り上げるという達成感を何度か味わい、周囲からも評価されたことから、今後もこの仕事を続けていく自信がついた1年間でした。何もない環境からの開発を経験したことから、足りない知識を自発的に収集するという姿勢と、ITにかかわる者として基本的・汎用的な知識を身に付けることができました。
しかし、いくつかの開発案件をこなしたとはいっても、あくまでも自己流で、1人で仕事をしているにすぎません。プロジェクトという組織があり、開発工程が確立されている環境で仕事の進め方を覚えていかなければ、スキルの発展だけでなく社会人としての成長にも限界があります。
「このままではいけない。現状に満足していたら今後の進歩はない」。社会人生活が2年目に入ろうとするころ、私は早くもキャリアを考えるうえでの分岐点にいたのです……。
筆者紹介
アクセンチュア・テクノロジー・ソリューションズ
稲井紀茂
1972年生まれ。神戸生まれの大阪育ち。大阪でプログラマ、システムエンジニアとして約7年を過ごした後、2003年にアクセンチュア・テクノロジー・ソリューションズに入社し上京。主に流通業・製造業の販売管理・SCM系システムの構築に携わり、現在に至る。
- 文書ドリブン開発 テスト文書編
- 文書ドリブン開発 詳細設計文書編
- 文書ドリブン開発 DB設計文書編
- 基本設計文書の質を下げる「4つの心理バイアス」
- 本当は楽しいドキュメント作成
- 新人(3年目)、プロジェクトで「忍耐」を学ぶ
- 新人、集合研修で「伝説」を作る
- 新人(3年目)、先輩デビューで「最悪の振る舞い」
- 新人、アーキテクチャチームで「運命の出会い」
- 1人チームで悩む新人。「この作業って意味あるの?」
- 現場デビューのお供はビジュアル多用の報告書
- 大規模プロジェクトでは「同じ言葉を、同じ意味で」
- 「バッファ込み」の工数がスケジュール遅延の原因
- 運用って、あまりいいイメージはなかったけれど
- 最強チームで挑んだ、「40時間でデータ移行」の壁
- 障害対応とチューニングの危うい関係
- オフショアなんて、怖くない
- 3プロジェクト同時にリード! どう乗り切る?
- この案件、ぜひ新しいテクノロジでやりましょう!
- 初めてのトラブル対応。これで直ると思ったのに!
- 「できるか!」な設計書に、どう立ち向かう?
- 専門用語で「カッコよく」話すのは簡単だけど
- メンバーとの仕様打ち合わせは海を越えて
- 定まらない要件、ユーザーからのむちゃな要求
- 未経験のデータベース構築に挑戦
- セットアップ全国行脚で九州弁に大苦戦
- 試行錯誤で分かったスパゲッティコード撃退法
Copyright © ITmedia, Inc. All Rights Reserved.