講義概要
本講義は、読みにくい・テストしにくい・引き継ぎにくい等の問題を抱えたソースコードを管理している方、あるべき姿のアーキテクチャと現実のソースコードのギャップを解消したいと考えている方に是非受講して頂きたい内容になっています。 ソースコードを改善する技術として「リファクタリング」のスキルを習得できます。しかし、大きな誤解を持っている方が多いと講師は考えます。本講義を受講して頂くことで、正しいリファクタリングを理解し、さらに設計図を活用することで、的確にソースコードを改善できるようになります。講師

- 所属
- タイムエンジニアリング
- 講師名
- 阿部哲
 組込みからWebアプリ・基幹・業務システムまでの幅広い業界で、ソフトウェアエンジニアリングを駆使して、企業の経営課題から開発現場の技術課題まで解決する案件に数多く従事。  「ソフトウェアに携わる技術者・管理者が、スマートに開発業務を行うには?」を常に考え、楽しく豊かな社会づくりに貢献したいと考えている。要求分析技法・アーキテクチャ設計技法・構造化/オブジェクト指向分析設計技法・リファクタリング・リバース設計を得意とする。
   		  講義内容
| 章・節 | タイトル | 内容 | 
| 1 | 設計とは | コーディングする前に行う設計の大切さ | 
| 2 | ソースコードの可視化 | ソースコードの構造を設計図で見える化し、良し悪しを確認 | 
| 3 | リファクリング | モジュールを分割することで保守しやすく改善するスキル | 
| 3.1. | 関数リファクタリング | 保守しやすい関数に改善するスキル | 
| 3.2. | ファイルリファクタリング | 保守しやすいファイルに改善するスキル | 
| 4. | 個人演習 | ソースコードをリファクタリングするスキル習得を確認 | 
| 5. | グループ演習 | リファクタリングによる効果を図面などを活用し議論 | 
| 6. | 発表会 | グループで作成した図面・その他役に立った事などを発表 | 
受講要件
- 【受講要件】
-  C言語の基本的な知識 コンパイルエラーを自力で取り除けること
 
 (C言語における関数の作り方、コンパイルエラーを自分で解消できること、など)
 リファクタリングの知識はC言語以外のプログラミング言語にも適用可能です。
 
-  C言語の基本的な知識 コンパイルエラーを自力で取り除けること
 
- 【事前学習のポイント】
- 
								- 担当されている製品、システムのソースコードにおいて、抱えている課題を事前に整理して下さい。
 
受講にあたって必要な準備
- ■ 講義を聴講するために必要なもの
- ・ 思考整理のため、メモを記録するための筆記具
- ・ 思考整理、メモ用のノート類
- ・ グループディスカッションのためのマイク・カメラ類
 
- ■ 個人演習に必要なもの
- 
							- ・ C言語ソースコードをコンパイル・リンクする環境(gcc,makeのコマンドを使用)
									- -Cygwin
- -WSL
- -GNU
- ※ その他環境の場合でも一般的なC言語ソースコードのコンパイルリンクが出来れば可能と考えます。その他環境を利用する場合、念のためにご連絡頂けると幸いです。
- ※ 環境準備が困難な場合は、Webアプリケーションによるコーディングも可能です。但し、ネットワーク環境によってはアクセス不可の場合があるため、受講予定場所のネットワーク環境にて、https://paiza.io/ja/projects/new、にアクセス可能であることを事前にご確認下さい。
 
- ・ 設計図を作成するためのアプリケーション
									- -Microsoft PowerPointまたはExcel
- -PowerPointまたはExcel同等のその他アプリケーション
 (但し、設計図の提出が必要であるため、PDFや画像ファイルに出力できること)
- -draw.io(https://app.diagrams.net/)        
 企業によってはアクセス制限があるかもしれませんので注意して下さい
- -その他設計図を書けるツール
 (但し、設計図の提出が必要であるため、PDFや画像ファイルに出力できること)
- 
											- ※ 手書きで設計図を作成することも可能。
- 但し、設計図の提出が必要であるため、スキャナやカメラによるPDFや画像ファイルへの変換ができること
 
 
 
- ・ C言語ソースコードをコンパイル・リンクする環境(gcc,makeのコマンドを使用)
									
- ■ グループ演習に必要なもの
- ・ 個人演習と同じ
講義に関連する解説記事・参考文献・図書等
-  「クローンコードを解消する(関数抽出)」
 https://time-engineering.jp/archives/2834

