【エンジニア決起】情報を集めろ。武器を取れ。技術的負債に立ち向かうために。

まさくに


【エンジニア決起】情報を集めろ。武器を取れ。技術的負債に立ち向かうために。

まさくに(右)だ。
LIGでバックエンドエンジニアとして日々、世の中にシステムを作り、そして “ヤツ” と戦っている。ニット帽はづや。俺が背中を預けられる戦友であり、弊社のトップランカーエンジニアだ。頼りにしてくれ。あと役員だ。

02_づやさんがMac打ってる姿

どうやら貴方もかなりの手練れとお見受けするが、ここを訪れたということは、“ヤツ”の手強さを知ってしまったということだろうか?

初めは小気味よく動くシステムの中で、見過ごしてしまうような “ヤツ”は、まるで小さな染みに見える。ところがそれを日常的に看過していると大変なことになる。気づかぬまま大きくなった“ヤツ”は、システム自体を大きく軋ませ、最悪、全てを台無しにする。

そんな恐ろしい“ヤツ”とは何か。

技術的負債」のことさ。

技術的負債に対するエンジニアのイベントがおこなわれた

03_開場全体 or 開場入り口_A

そんな技術的負債と日常的に戦っている戦士達のイベントが先日、LIGのいいオフィス上野で行われたインテグラ社の先導により、ケアくる社と弊社LIG社によって行われたパネルディスカッションのイベント名はこうだ。

「技術的負債とどう戦うか!?」

実に気概に溢れている。既に世の中のほとんどのものは、もうシステムなしには動かない。よってシステムに内包される技術的負債はその絶対量も増えてしまっている。有事下である。

そんな技術的負債にどう立ち向かうか、今最前線で戦っているCTOやディレクターやエンジニアを交えて語らうイベントだった。とても意義のあるものだったため、そこで得られた知見を後述したい。

そもそも技術的負債とは?

DSC00235

まずは、そもそも技術的負債とは何だろうか?

エンジニアは、種々の問題に対して技術的な解決をもたらすために従事している。Webエンジニアは、やはり解決策としてWebシステムの力を借りることが多いわけだが、システムは華々しい効果とは裏腹に、開発時点から多くの問題点を孕んでいる。

例えば下記の通り。

  • 極端にテストが少ないコード
  • バラバラの記法が用いられたコード
  • 古いOS、ミドルウェア、フレームワークが使用されている
  • データ量によってパフォーマンスが下がる設計
  • 誰かによって導入されてはいるが仕様不明なライブラリ

これらのことを「技術的負債」といい、一時的に使われるシステムであればあまり問題にならない場合もあるが、「継続的な開発」をおこなうシーンにおいて、下記のような問題点をもたらすことが多い。

  • システムの無駄な複雑化により障害発生率が上がる
  • 開発難度や障害難度が上がり開発スピードを滞らせる
  • 属人化が進み、種々のリスク回避が難しくなる
  • パフォーマンスの劣化によるユーザー離脱
  • コードを見たくなくなる

これらの技術的負債への対応を、「返済」と言ったりする。リリースされたサービスは当然スケールさせていきたいので、ある時点で「とりあえず動いているコード」を見直さざるをえないタイミングはどうしてもやってくる。

そのときの返済方法もプロジェクトやメンバーごとで多岐にわたるが、今回のイベントでは下記の4人が、その豊富な経験から技術的負債と立ち向かうエッセンスをパネルディスカッションを通して教えてくれた。

satou 人物紹介:佐藤卓也
国立東京工業高等専門学校卒業後、新卒にて富士通入社、主に物流基幹システム、官公庁電子申請システムの開発プロジェクトに従事、その後、株式会社ウィルゲート入社。取締役CTOとして、SEO事業の拡大、インターネットサービスの新規事業立ち上げから事業拡大まで経験し、ウィルゲートベトナム現地法人代表に就任後退任し、インターネットサービス提供事業者の新規事業立ち上げ支援、拡大支援を手掛け、現在に至る。
hashimoto 人物紹介:橋本将崇
大学在学時からフリーランスとしてWebサービスの受託開発を経験。 スタートアップで自社サービス開発を初めて経験し、その後ベンチャー企業のCTOとして、ソーシャルゲーム、メディアなど自社サービスを統括しながら、人材の採用から評価までをおこなう。 組織拡大に伴い、ベトナムオフショアの開発拠点の立ち上げも経験。 その経験を生かし、株式会社リクルートキャリアに入社し、エンジニア向けのHR領域のプロデューサーとして新規サービスの立ち上げをおこなう。 現在は技術アドバイザーとしても活動しながら大手からスタートアップまで技術的な支援などもおこなっている。
zuya 人物紹介:づや
大学卒業後、JAVAプログラマとしてシステム開発に従事後、2007年株式会社アストロデオを創業。システム開発全般を統括。2012年1月に創業した株式会社アストロデオが株式会社LIGと合併し、現職。取締役CTOとして社内の技術全般を統括。現在は、取締役兼監査役として経営に従事。また、経営に携わりながらもエンジニアとしてシステム開発もおこなっている。
jack 人物紹介:ジャック
新卒で楽天株式会社に入社し、アプリケーションエンジニアとしてキャリアのスタートを切る。その後、博報堂DYグループに勤務後、2015年4月に株式会社LIGにジョイン。Web事業部マネージャーとしてWeb制作・サービス開発全般のプロジェクトマネジメント、ディレクション業務に従事。

ではディスカッションの要点をまとめよう。

技術負債(苦労話、問題点、課題点)とその乗り越え方

04_パネラー_A

まずは技術的負債の乗り越え方が、過去の経験に照らし合わせて話された。四人四様で異なるバックボーンから紡がれる経験談はそれだけで聞いておく価値があるものだった。

その中でも闇雲に技術負債に対応するのではなく、計画性や指標、周囲の理解をもって進めることが重要であるということが共通した意見であるようだ。

負債への戦術 その1

  • 負債にフォーカスしすぎるとプロダクトのリリースが遠のくので、状況把握を行ってから順次対応すること。
  • お客様や上司には返済が理解されづらいのは前提として、負債を抱えるリスクを継続的に伝えて対応していくこと。
  • 抱えきれない負債があったとしても、問題の切り分けと交渉をおこない、落とし所を持つこと。

海外連携時の技術負債の影響、考慮点

04_パネラー_D

最近では、費用対効果を見込んで海外への発注も頻繁におこなわれるようになった企業も多いのではないだろうか。だが、その実、文化的な考え方の違い、クオリティの担保などで頭を悩ますことも多くなり、コミュニケーションミスなどによる負債も抱えるようになってきた。

それらに対してどう立ち向かっているのか、また立ち向かっていくべきなのか、歴戦の勘所が発表された。多くの問題はコミュニケーションによって改善できるという手応えを得ていることが感じられ、そのことが現場で働く一人としては非常に心強い。

負債への戦術 その2

  • 海外連携ではコミュニケーションの難度が上がり、当然負債を抱え込む可能性は上がる。齟齬が起きないようにドキュメントや適正なメンバーアサインなどで仕様のブレをなくすこと。
  • 海外への発注という立場ではなく、同じチームとして親密なコミュニケーションを取っていくことが大切。
  • 納期を守ることは前提として、メンバー育成の意味も込めてコードレビューは厳しくおこなうこと。

開発 組織体制

04_パネラー_B

負債を生みにくい組織体制、組織づくりとして留意していることが話された。弊社の場合、職能が異なるメンバーでチームを形成し、売上目標を持って案件をこなしていく。事業を主軸とした組織分けということになる。

組織によっては、職能やチームの目的に基づいて、機能性で分けることもあるだろう。どちらにせよ、情報の伝達、蓄積という方法を工夫していくことが大切だということが述べられた。

負債への戦術 その3

  • エンジニアの体制を機能性で分けるか、事業性で分けるか試行錯誤する必要がある。機能性で分けるとクオリティは高くなるが、納期やビジネス要件への動機付けが難しく、事業性で分けると技術負債が多くなる傾向にある。
  • 体制の構築はもとより、問題のエスカレーションをするルートまでちゃんと決めておくこと。
  • 結局、人の入れ替えは発生するため、ドキュメントを作成すること自体も含めて、仕組み化をすること。

活用しているコミュニケーション方法、ツールとその選択方法

04_パネラー_C

コミュニケーションをどう取っていくかは、戦局を分ける大きな要因と言える。ここは満場一致で「まずはSlackを使っている」ということが語られた。気軽なデプロイ方法が構築できたこと、メンバーと緩く対話をおこなえることから、開発におけるコミュニケーションに大きな役割を果たしているようだ。

他にも事業に対するツール導入で発生するコストをどう考えるかという議題には4人ともが「とりあえずは使ってはみる」という前傾姿勢でいたことに勇気づけられる。

負債への戦術 その4

  • ツールは何を使っていたとしても、他部署も含めて様々なエビデンスを残すという文化作りを大切にする。
  • ツールはエンジニア主導で選択してくれて構わないし、使ってみないと結論的なところは分からないが、事前にコスパやメリットなどが必ず検討されているかは重要。

懇親会とまとめ

DSC00289

イベントの終わりには懇親会が設けられ、普段はしかめっ面でPCに向かっているであろう同胞達もこのときの顔は安らいでいた。また、それぞれの課題感や解決案を共有することができて、より生きた情報を交換することができたことも嬉しい。
DSC_1702

DSC_1705

DSC_1709

DSC_1704

今回のイベントの参加者は、ほとんどエンジニアだったようだが、全体的に上流工程にも目を向けているエンジニアがほとんどだったように思う。そのためか、技術的負債への対応について、ビジネスサイドとの兼ね合いをどうするかが関心の集まるところのように感じた。

「返済」については、いわゆるサービスの「成長痛」として、必ず存在するものと皆が考えているのだろう。このようなイベントを通して「返済」をおこなうべき指標や優先順位の情報を集め、正しい判断をしていきたいと個人的にも思う。また、参加者へ何かの手助けができていたら弊社としても大変喜ばしい。

最後に弊社づやの言葉で本稿を締めたい。

負債への戦術 その5

最後の最後はガッツ。

このイベントは継続を予定しているとのことなので、今回を逃してしまった方も、次回、もし機会があれば、その時はぜひ足を運んでいただければとても嬉しく思う。
—————————————————————-
LIGでは現在、エンジニアを積極採用中!特にバックエンドエンジニアを募集しております。我々と一緒に戦いたい方は、フランクに話しましょう。
サービスの成長が見たい、自分の成長を感じたいサーバサイドエンジニア募集!
LIGの採用はこちら
—————————————————————-
「アプリ開発責任者」急募!!!当社のメイン事業を一緒に創りあげてくれる方を募集しております。
ケアくるの採用はこちら
—————————————————————-
株式会社INNTEGRAは絶賛エンジニアの方の転職ご支援をしております!現在、ご自身のキャリアに迷いが生じている・転職を検討している等のお考えをお持ちの方は、
是非、転職アドバイザーにお問い合わせください!!
Pooleはこちら

まさくに
この記事を書いた人
まさくに

バックエンドエンジニア

関連記事