ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

レガシーコード改善勉強会 開催レポート

ヤフー株式会社の有地です。
9/27(土)の昼から6時間にもわたり、さまざまな視点から「レガシーコード」について知識を深めるための勉強会を開催いたしました。
「そもそも正しい仕様を知っている人がいない」
「システムのブラックボックス化が留まるところを知らない」
こんな不条理なレガシーコード(テストコードが無いコード)と日々戦うエンジニアも多いことと思います。
今あるレガシーコードをどうやって保守・改善していけばよいのかという課題に本気で取り組んでいる、または取り組みたいと考えている大勢の方々に参加していただきました。

<開催趣旨・目的>

テストコードが無いプロダクションコードをレガシーコードと定義し、テストコードによって保護され、継続的にサービスを安定運用可能な状態へ移行するためのパターンが既に発表されています(翔泳社『レガシーコード改善ガイド』)。
これらのノウハウはJava/C++等のコンパイラ言語を想定しており、Web業界で多用されるPHPなどの軽量言語で作られたプロダクトは想定外であることも多いのが実情です。
また、原書の出版から10年以上が経つ中、IT業界を通して議論や新しい提案があまり活発ではなく、有用な技術領域でありながら、発展が滞っている分野でもあります。
そこで、ヤフーは上記書籍の翻訳を行ったウルシステムズ株式会社と共同で、PHPを対象としたレガシーコードの改善テクニックの検討を進めました。
今回の勉強会では、レガシーコード改善の基礎から様々なアプローチや取り組みと、検討の結果得られたPHPのレガシーコードの改善パターンを広く公開することで、レガシーコード改善のテクニックの発展を目指す事を目的として開催いたしました。
【公式ハッシュタグ:#wewlc_jp】

<会場風景>

当日は、6時間という座学形式としては長めの勉強会にもかかわらず、登壇者たちによるレガシーコード改善への熱い思いに触れ、参加された方々も真剣でした。
wewlcjp_001

<ご講演いただいた内容>(敬称略)

セッション1「レガシーコード改善のススメ」
登壇者:平澤 章
ウルシステムズ株式会社にて技術コンサルタントとして活躍しており、『レガシーコード改善ガイド』(翔泳社)の翻訳者の一人。
レガシーコードについて高い課題意識を持ち、社内外問わず第一人者として認知され、牽引役でもある。
セッション2「テスト、リファクタリングに関する深い方法論」
登壇者:きょん
開発環境改善という大きなテーマの中で現在はソフトウエアテストアーキテクトとして活動。ソフトウエアテスト、TDD、SCMなどに関する講演や記事執筆を行っている。特にソフトウエア工学とTDDへの関心が深く、仕事ではGroovyとF# を使いつつ、CoqやDbCやAlloyを仕事に取り入れることを目指している。
セッション3「レガシーコードとの付き合い方と、そのテストでの話」
登壇者:goyoki
医療機器や自動車の組み込み開発・テストにおいて、コンサルタントや技術支援に従事。最近はテストを主な仕事としている。
セッション4「納品のない受託開発を支える、レガシーコードを作らない仕組み」
登壇者:西見 公宏
株式会社ソニックガーデンにてビジネスプログラマーとして従事。「納品のない受託開発」で数々の新規サービスを手がける。主にRuby on Railsを利用した開発を行っているが、サーバーサイドよりはフロントエンドの方が好み。自社サービスではコードレビューを中心とした人材育成サービスを担当している。
セッション5「レガシーコードを改善した先にあるもの、それは継続的インテグレーション」
登壇者:佐藤 聖規
Javaのパフォーマンス・トラブルシュートの社内支援業に従事し、某社アーキテクトとして全社ITインフラ基盤を構築した後、現在はクラウドやアジャイルなどをキーワードにソフトウエア生産技術の研究開発に従事。
『Jenkins実践入門』(技術評論社)などの書籍・記事執筆、アジャイルアカデミー Jenkins Boot Camp講師などの講演、Jenkinsユーザー会スタッフ/neat.などコミュニティ活動もこなしている。
セッション6「PHP版レガシーコード改善に役立つ新パターン」
登壇者:佐藤 裕司
ヤフー株式会社にてトップページの開発に従事。さまざまな開発方法論に日々挑戦しながら、第一線のエンジニアとして社内でも活躍。
レガシーコードの開発運用に課題意識を持つ機会があり、現在PHPのレガシーコード改善について独自の方法論を研究、検討している。
セッション7「レガシーコード改善の戦略と戦術」
登壇者:和田 卓人
タワーズ・クエスト株式会社 取締役社長、プログラマ、テスト駆動開発者。
学生時代にソフトウエア工学を学び、オブジェクト指向分析/設計に傾倒。その後さまざまな縁に導かれソフトウエアパターンやXP(eXtreme Programming)を実践する人たちと出会い、後のテスト駆動開発の誕生を知る。テスト駆動開発によって「完璧主義の呪い(完璧な設計を得るまではコードを書けないし良いシステムも出来ないという強迫観念)」から解放されてからは、執筆や講演、ハンズオンイベント等を通じてテスト駆動開発の啓発に努めている。今日もグリーンバンド(テスト駆動開発者の証)を左手に着け、テストと共にコードを書いている。『プログラマが知るべき97のこと』(オライリージャパン)監修、『SQLアンチパターン』(同)監訳。
http://twada.herokuapp.com/presentations/wewlc/wewlc.html

<参加者のご意見>

『講演が素晴らしかった。もっとエンジニアとしてもっと上を目指そうと言う気持ちが強くなった。』
『素晴らしい勉強会だったと思う。ありがとうございました』
『テーマが分かれていて聞き飽きない。和田さんのこれからテストを書く人へという内容が特によかった』
『ヤフーさんの情熱、運営が素晴らしかったです。』
『レガシーコードの改善という目的ははっきりしているが原因の分類を踏まえたテーマ分類があるとうれしい(例 リファクタリング・テスト・タスク・スケジュール・CI)』
『少し長い。かつ内容が濃い発表が多かったので途中でもう少し休みが欲しかった。』
等など、さまざまなご意見をいただきました。

<今後>

単発のイベントとして終わらせず、継続的な取り組みとし、さまざまな技術の普及を通して、IT業界の活性化へ貢献していきたいと考えおております。

<謝辞>

今回開催につきまして快くご協力頂きましたウルシステムズ株式会社様をはじめ、ご登壇いただきました方々、ご献本いただきましたオーム社様、翔泳社様、そして何より休日にも関わらずご参加いただきました参加者の方々へ深くお礼申し上げます。

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ