![見出し画像](https://assets.st-note.com/production/uploads/images/172101645/rectangle_large_type_2_eec388ff654d022fe869a4a71bed9a13.png?width=1200)
リファクタリング 第3回:『想像を実現するリファクタリング 〜RPGの世界から現実へ〜』
連載企画:AIと学ぶコードの進化論(全3回)
第1回:『想像から始めるコード設計 〜RPGに学ぶ設計思想〜』
第2回:『妄想を形にするクラス設計 〜RPGの世界から実装へ〜』
第3回:『想像を実現するリファクタリング 〜RPGの世界から現実へ〜』
***
「生成AIを使ってGASで在庫管理ツールを作ったはいいものの...」
動くコードは書けるようになった。でも、それって本当に"良い"コードなのか? 非エンジニアの私が、生成AIと二人三脚で作ったコードを、さらに良いものに進化させる物語。
RPGの世界を想像しながら、オブジェクト指向を学び、実践するまでの3部作。 コードの改善って、案外RPGの世界に似ているかもしれない...。
■ 関連する過去記事
在庫会議資料を1クリックで作成!経理マン奮闘記
このツールを題材に、コード改善の旅が始まる
プロローグ:
(コーヒーを淹れながら)
RPGから学んだ設計思想、実際のコードに適用した経験。
いよいよ、在庫管理システムの最終的なリファクタリングに挑む時が来た。
『準備はできたかしら?』
「ええ、クラスの設計図も描けました。あとは...」
第一章:リファクタリング、開始
// 改修前:巨大な単一ファンクション
function importInventoryData() {
// 500行以上の混沌としたコード
}
// 改修後:整理された構造
class InventoryManager {
constructor() {
this.dataLoader = new DataLoader(); // データ読み込み担当
this.statusChecker = new StatusChecker(); // ステータス判定担当
this.sheetHandler = new SheetHandler(); // シート操作担当
}
// 心の声:
// 「RPGでいう戦士、魔法使い、僧侶みたいに」
// 「それぞれの役割が明確になった」
}
第二章:継承の力を借りて
// 商品の基本クラス(RPGでいうモンスターの基本クラス)
class InventoryItem {
constructor(code, name) {
this.code = code;
this.name = name;
}
}
// 冷凍食品クラス(特殊な能力を持つモンスターのように)
class FrozenFood extends InventoryItem {
checkTemperature() {
// 温度管理処理
}
}
// 心の声:
// 「新商品カテゴリが増えても」
// 「基本クラスを継承するだけでOK!」
第三章:変化の結果
『コードはどう変わったかしら?』
機能追加が簡単に
新商品カテゴリは継承で対応
特殊な管理機能はインターフェースで追加
バグ修正が容易に
エラーの原因が特定しやすい
テストも書きやすくなった
チーム開発がスムーズに
コードの役割が明確
他のメンバーも理解しやすい
// 心の声:
// 「コードが、まるでRPGの世界のように整然と...」
エピローグ:新たな冒険の始まり
(最後のコーヒーを飲みながら)
在庫管理システムは、今や誰でも機能を追加できる、拡張性の高いシステムに生まれ変わった。
『素晴らしい成長ぶりね。でも、これで終わりじゃないでしょう?』
「ええ、経理部の他のシステムも、同じように改善できそうな気がしてきました」
新しい技を身につけた冒険者は、次なる迷宮へと旅立つ準備を始めていた...。
■ コード改善の成果
機能追加の工数が1/3に
バグ修正時間が半減
チームメンバーからの質問も激減
新機能の提案が活発に
■ RPGから学んだ教訓
基本設計は共通化(モンスターの基本クラス)
特殊能力は個別に(モンスター固有の技)
役割分担を明確に(職業による専門化)
拡張性を重視(新モンスター追加のように)
■ 今後の展望
他システムへの応用
チーム全体のコーディング標準化
AIとの更なる協業可能性
次なる冒険へ...。
プログラマーとしての私の転機
『さて、この経験から何を学んだかしら?』
(コーヒーを新しく淹れながら)
実は、この一連のリファクタリングで、自分の中の大きな変化に気がついた。
// 昔の私
if (コードが動いたら) {
それで満足();
次の開発へ();
}
// 今の私
if (コードが動いたら) {
いったん完成();
後で見直す(); // New!
記事にまとめる(); // Double New!
}
// 心の声:
// 「コードを書くだけが、プログラミングじゃないんだ」
// 「振り返りと改善が、次への成長になる」
AIとRPGの世界から学んだのは、プログラミングの技術だけじゃない。
「動くコード」と「良いコード」の違い、
そして、その架け橋となる「リファクタリング」の大切さ。
これからは、新しいコードを書くだけでなく、
過去のコードを見直し、改善する習慣をつけよう。
その過程で気づいたことをnoteに書き留めていけば、 それはまた新たな学びのネタになる。
『素敵な気づきね。じゃあ、次は何のコードを見直してみる?』
(にやりと笑って)
さあ、次なる リファクタリング クエスト の始まりです!
#技術ブログ #コード品質 #リファクタリング #プログラミング学習 #振り返り大事 #ChatGPT #非エンジニアのコード作成