INDEX
目次
3章 既存コードを"神コード"に進化させる
この章の目安学習時間:60分
この章で到達できるゴール:
- 読みにくいコードや冗長なコードを、AIの力で美しく、効率的なコードに改善(リファクタリング)できる。
- 初めて見るコードでも、AIに解説させることで処理内容を素早く理解できる。
【3-1】もう怖くない!AIリファクタリング術
目安の学習時間:30分
リファクタリングとは?なぜ重要なのか?
リファクタリングとは、Webサイトやアプリの外部から見た振る舞いを変えずに、内部のコード構造を改善することを指します。
車で言えば、外装や乗り心地は変えずに、エンジン内部の部品をより効率的なものに交換するようなイメージです。
なぜリファクタリングが重要なのでしょうか?
車で言えば、外装や乗り心地は変えずに、エンジン内部の部品をより効率的なものに交換するようなイメージです。
なぜリファクタリングが重要なのでしょうか?
- 可読性の向上:コードが読みやすくなり、他の人(そして未来の自分)が理解しやすくなる。
- メンテナンス性の向上:修正や機能追加が容易になり、開発スピードが上がる。
- バグの防止:複雑なコードをシンプルにすることで、バグが潜む余地を減らす。
動けば良い、というだけでなく、「綺麗で読みやすいコード」を書くことは、プロのWeb制作者にとって非常に重要なスキルです。
このリファクタリングという、経験が問われる作業も、AIが強力にサポートしてくれます。
このリファクタリングという、経験が問われる作業も、AIが強力にサポートしてくれます。
読みにくいコードを美しく整形しよう
例えば、以下のような少し冗長なCSSコードがあったとします。
.card-title { font-size: 24px; font-weight: bold; color: #333333; margin: 0 0 10px 0; margin-bottom: 10px; line-height: normal; display: block; } .card-text { font-size: 16px; line-height: 1.6; color: #555555; margin: 0; display: block; } .card-button { display: inline; padding-top: 10px; padding-right: 20px; padding-bottom: 10px; padding-left: 20px; background-color: #007bff; color: #ffffff; text-decoration: none; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; text-align: center; line-height: 1; transition: all 0.3s ease-in-out; } .card-button:hover { background-color: #0056b3; text-decoration: none; color: #ffffff; }
CSS
このコードをまるごと選択し、Copilot Chatに「このCSSコードを、より簡潔で読みやすくリファクタリングしてください。」と指示してみましょう。
AIは、コードの意図を理解し、例えば同じカードコンポーネント内のセレクタをまとめる、プロパティの順番を揃えるなど、より見通しの良いコードを提案してくれます。
例えば、以下のように出力されるはずです。
AIは、コードの意図を理解し、例えば同じカードコンポーネント内のセレクタをまとめる、プロパティの順番を揃えるなど、より見通しの良いコードを提案してくれます。
例えば、以下のように出力されるはずです。
.card-title { font-size: 24px; font-weight: bold; color: #333; margin-bottom: 10px; } .card-text { font-size: 16px; color: #555; line-height: 1.6; } .card-button { display: inline-block; padding: 10px 20px; background-color: #007bff; color: #fff; text-decoration: none; border-radius: 5px; } .card-button:hover { background-color: #0056b3; }
CSS
練習問題
問題
以下の非効率なJavaScriptコードは、level の値に応じて異なるメッセージを返します。
この if...else if...else 文で書かれた処理を、より見通しの良いswitch文を使って書き換えるよう、Copilotに指示してみましょう。
以下の非効率なJavaScriptコードは、level の値に応じて異なるメッセージを返します。
この if...else if...else 文で書かれた処理を、より見通しの良いswitch文を使って書き換えるよう、Copilotに指示してみましょう。
function getTitle(level) { if (level === 'beginner') { return '初心者向けガイド'; } else if (level === 'intermediate') { return '中級者向けテクニック'; } else if (level === 'advanced') { return '上級者向け応用編'; } else { return 'Web制作をはじめよう'; } }
JavaScript
解答例
上記のコードをCopilot Chatに貼り付け、「このif文をswitch文を使ってリファクタリングしてください」と指示します。
Copilotは以下のような、同じ処理を行うswitch文のコードを生成します。
上記のコードをCopilot Chatに貼り付け、「このif文をswitch文を使ってリファクタリングしてください」と指示します。
Copilotは以下のような、同じ処理を行うswitch文のコードを生成します。
function getTitle(level) { switch (level) { case 'beginner': return '初心者向けガイド'; case 'intermediate': return '中級者向けテクニック'; case 'advanced': return '上級者向け応用編'; default: return 'Web制作をはじめよう'; } }
JavaScript
【3-2】AIは最高のコード解説者
目安の学習時間:30分
AIにコードの「意味」を解説させる裏技
Web制作では、他人の書いたコードや、ライブラリ、フレームワークのコードを読む機会が頻繁にあります。
しかし、初めて見るコードの処理内容を理解するのは、時に困難を伴います。
そんな時、Copilot Chatは最高のコード解説者になります。
使い方は簡単です。
しかし、初めて見るコードの処理内容を理解するのは、時に困難を伴います。
そんな時、Copilot Chatは最高のコード解説者になります。
使い方は簡単です。
- 意味を知りたいコードを選択します。
- Copilot Chatを開き、「/explain」と入力するか、あるいは「このコードは何をしていますか?一行ずつ詳しく解説してください」とプロンプトを入力します。
AIは、選択されたコードの目的、処理の流れ、各行が果たしている役割などを、自然言語で丁寧に説明してくれます。
これにより、技術記事を読んだり、英語のドキュメントと格闘したりする時間を大幅に削減し、コードの理解を加速させることができます。
これにより、技術記事を読んだり、英語のドキュメントと格闘したりする時間を大幅に削減し、コードの理解を加速させることができます。
解読するコード例
/* * @param {Array<Object>} items - 商品オブジェクトの配列。 * @param {string} propertyName - 合計を計算したい数値プロパティの名前。 * @returns {number} 指定されたプロパティの合計値。 */ function calculateTotalOfProperty(items, propertyName) { if (!Array.isArray(items) || items.length === 0) { return 0; } return items.reduce((total, item) => { if (typeof item[propertyName] === 'number') { return total + item[propertyName]; } return total; // 数値でない場合は加算しない }, 0); } // 使用例: // const products = [ // { name: 'Laptop', price: 1200, quantity: 1 }, // { name: 'Mouse', price: 25, quantity: 2 }, // { name: 'Keyboard', price: 75, quantity: 1 } // ]; // const totalPrice = calculateTotalOfProperty(products, 'price'); // console.log(totalPrice); // 1300
JavaScript
このコードは、配列内のオブジェクトから指定した数値プロパティの合計値を 計算する関数 calculateTotalOfProperty を定義しています。 主な処理内容 引数のチェック items が配列でない、または空の場合は 0 を返します。 合計値の計算 Array.prototype.reduce を使い、各オブジェクトの propertyName で指定された プロパティが数値の場合のみ合計します。 使用例 商品リストから price の合計を計算する例がコメントで示されています。 ポイント 数値以外の値は合計に含めません。 配列が空の場合や不正な場合は 0 を返します。 この関数は、商品リストなどから価格や数量の合計を求める際に便利です。
出力例
考えてみよう
AIのコード解説が少し専門的で分かりにくかった場合、どうすればもっと分かりやすい説明を得られるでしょうか?
解答例
自分の知識レベルをAIに伝え、説明のレベル感を調整してもらうのが効果的です。
例えば、「ありがとうございます。もう少し初心者にも分かるように、専門用語の『コールバック関数』や『アロー関数』を使わずに、たとえ話などを交えて説明し直してください。」のように依頼します。
AIはこちらの要求に応じて、より平易な言葉で説明を試みてくれます。
分からないことを「分からない」と伝え、対話を重ねることが、AIを家庭教師として活用するコツです。
解答例
自分の知識レベルをAIに伝え、説明のレベル感を調整してもらうのが効果的です。
例えば、「ありがとうございます。もう少し初心者にも分かるように、専門用語の『コールバック関数』や『アロー関数』を使わずに、たとえ話などを交えて説明し直してください。」のように依頼します。
AIはこちらの要求に応じて、より平易な言葉で説明を試みてくれます。
分からないことを「分からない」と伝え、対話を重ねることが、AIを家庭教師として活用するコツです。
【3-3】3章 -章末課題- [JQueryをピュアJSに書き換える]
目安の学習時間:30分
問題
Web業界では、古い技術で書かれたコードを現代的な技術に書き換える(モダン化する)作業が頻繁に発生します。
今回は、かつて広く使われていたJavaScriptライブラリ「JQuery」で書かれた短いコードスニペットを、ライブラリを使わない現代的なJavaScript(ピュアJavaScript)に書き換えてください。
この時、あなた自身はJQueryの文法を知っている必要はありません。
AIの力を借りて、以下の2ステップで課題を解決してください。
今回は、かつて広く使われていたJavaScriptライブラリ「JQuery」で書かれた短いコードスニペットを、ライブラリを使わない現代的なJavaScript(ピュアJavaScript)に書き換えてください。
この時、あなた自身はJQueryの文法を知っている必要はありません。
AIの力を借りて、以下の2ステップで課題を解決してください。
- まず、AIにJQueryのコードが何をしているのかを解説させる。
- 次に、その処理内容をピュアJavaScriptで書き換えるようAIに指示する。
【対象のJQueryコード】
$('#show-button').on('click', function() { $('.hidden-box').fadeIn(); });
JavaScript
解答手順
解答例
<button id="show-button">表示</button> <div class="hidden-box">ここが隠れているボックスです</div> <!-- ...既存のHTML... --
HTML
.hidden-box { opacity: 0; visibility: hidden; transition: opacity 0.5s; } .hidden-box.show { opacity: 1; visibility: visible; } /* ...既存のCSS... */
CSS
// ...既存のコード... document.getElementById('show-button').addEventListener('click', function() { var box = document.querySelector('.hidden-box'); box.classList.add('show'); }); // ...既存のコード...
JavaScript
この章のまとめ
これで「3章:既存コードを"神コード"に進化させる」の解説を終わります。
コードを「書く」だけでなく、「読み解き」「改善する」という、プロとして極めて重要なスキルをAIと共に実践しました。
これで、どんなコードを前にしても臆することはありません。
次の章では、開発者にとって最大の敵とも言える「エラー」との戦い方を学びます。
AIを最強のデバッグパートナーにする方法を習得しましょう。
コードを「書く」だけでなく、「読み解き」「改善する」という、プロとして極めて重要なスキルをAIと共に実践しました。
これで、どんなコードを前にしても臆することはありません。
次の章では、開発者にとって最大の敵とも言える「エラー」との戦い方を学びます。
AIを最強のデバッグパートナーにする方法を習得しましょう。