Vol.1： プログラミングとの再会 – 「画面ありき」で変わった学び方

## ■ 挫折の記憶：Javaに挑んだ2010年

実は、今回が初めてのプログラミング学習というわけではありません。  
2010年頃、一度 Javaの学習に挑戦したことがありました。

しかしそのときは…

- Javaの文法やクラス構造を理解するのに半年〜1年  
- そのあとに Servlet、JSP、DB接続の知識 も必要  
- ようやくWEBアプリの形が見えてきた頃には、すでに心が折れていた  

> 「こんなに遠いの？Webアプリ作るまでに何年かかるの…？」

そう思ってしまい、最終的には **学習コストの低いインフラ系の勉強** に専念する道を選びました。

---

## ■ プログラミングは「苦手なもの」になった

その後、業務の中で必要に迫られて：

- C++ に触れる機会があった（難解すぎて撃沈）  
- C# を使ったこともあった（しっくりこない）  
- VBA ですら「うわ、これ自分には無理かも…」

…というように、プログラミングに対する印象は年々「苦手意識」へと変化。  
**「自分はインフラ寄りの人間だから、コードは読めなくてもしょうがない」**  
と、あきらめ気味になっていました。

---

## ■ アプローチを変えてみる

そんな中で、「もう一度ちゃんとプログラミングをやってみよう」と思った今回は、**学び方そのものを変える**ことにしました。

- 「前は文法や理論から入ったからダメだったのでは？」  
- 「もっと目的ベースにしてみよう！」

---

## ■ 新しいアプローチ：「画面ありき」の開発

今回の学習では、まず**アプリの全体像から設計**しました。

具体的には：

- 開発するアプリの機能を洗い出す  
- 全体のフロー図を描く  
- フローに沿って必要な画面をリストアップ  
- 各画面に必要なインプット／アウトプットを考える  
- 処理の流れと画面遷移を明確にしてから、実装に着手  

つまり、  
**「画面ありき」の開発方針** に切り替えたわけです。

---

## ■ このやり方、実はちゃんとした名前があるらしい

詳しい名称は忘れてしまいましたが、この「画面を起点にしてシステム設計を進める手法」は、ちゃんとした開発手法として存在するそうです。  
ちまたでは**「画面駆動設計」**と言われるそうですが、正式では無いようです。

- 画面 ＝ ユースケース  
- 画面 ＝ ゴール単位のまとまり  
- 画面 ＝ 開発単位  

という考え方で、**「初心者でも作るべきものがハッキリしていて迷わない」**のが魅力。

---

## ■ 実際、すごくやりやすい！

この方法でStruts2を使った掲示板アプリを開発してみると、驚くほどスムーズに進行。

- 何を作ればいいのか明確  
- MVCの構造に自然と馴染める  
- 目に見える成果（画面）のおかげでモチベーションが下がらない  

> 「あれ？プログラミングって、こんなに分かりやすくできるんだ」

という感覚がありました。

---

## ■ まとめ：「やり方次第で、プログラミングは味方になる」

昔の自分は**「プログラミングが苦手」**と思い込んでいました。  
でも今思えば、それは **「目的」や「手順」が見えていなかったから**。

- いきなり文法や理論から入るより  
- まず「何を作りたいか」をハッキリさせて  
- そこに向かって必要な技術を“逆算的に”学んでいく  

そういうやり方が、自分にはとても合っていたようです。

---

📌 **次回予告：**  



- [この方針に沿って設計した「掲示板アプリ」の全体設計と画面構成について紹介します！](https://qiita.com/juehara-crypto/items/c1fd34b3031b13160f27)


---

## 🧭 Vol.1〜7 関連リンク

| 回 | タイトル | 主な内容 |
|----|----------|-----------|
| Vol.2 | [画面駆動設計に基づく設計書の具体例：画面フローからUI設計・処理定義まで](https://qiita.com/juehara-crypto/items/c1fd34b3031b13160f27) | 実際に描いた**画面遷移図・UI設計・処理定義書**を公開し、画面中心の設計手法を解説。 |
| Vol.3 | [詳細設計編：ER図で見るデータ構造と実装の土台](https://qiita.com/juehara-crypto/items/6e6431954dc99ea59054) | 実装前提で設計された **ER図（Entity Relationship 図）** をもとに、データ構造と整合性を設計。 |
| Vol.4 | [Struts2とMavenの基礎と設定ファイルの役割](https://qiita.com/juehara-crypto/items/e37fa1879ae996bee73e) | Struts2の構成とMavenでの管理、`web.xml` や `pom.xml` の役割を丁寧に解説。 |
| Vol.5 | [環境構築編：掲示板アプリケーションの実行準備](https://qiita.com/juehara-crypto/items/7010ae45d35174d3a3a6) | TomcatとEclipseでの動作環境構築。 |
| Vol.6 | [BaseActionクラスの詳細解説【Struts2の要】](https://qiita.com/juehara-crypto/items/a5f244a5f58597f33d06) | すべてのアクションに共通する基底クラス **BaseAction** を定義し、ログ出力や共通処理を集約。 |
| Vol.6.1 | [BaseAction の活用例【共通基底クラスでセッション管理を簡素化】](https://qiita.com/juehara-crypto/items/f4efded5b26e39e49928) | BaseAction を継承する具体的なアクション例を紹介し、セッションやログ処理の統合例を実践。 |
| Vol.7 | [Struts2 における MVC モデルの全体像](https://qiita.com/juehara-crypto/items/761c0b13ed1a5f896bba) | Model-View-Controller の各要素が Struts2 でどう分担されるかを体系的に解説。 |
| Vol.7.1 | [Struts2 における Model（モデル）について](https://qiita.com/juehara-crypto/items/14f7f154caf29447ae93) | JavaBeansベースのModelクラス（User, Thread, Post など）設計とその役割を明確化。 |
| Vol.7.2 | [Struts2 における Controller（コントローラ）の責務](https://qiita.com/juehara-crypto/items/06b4f9296a296db8f4ba) | Actionクラスを軸に、入力処理・分岐処理・画面遷移の中核を担うControllerの実装指針を提示。 |
| Vol.7.3 | [Struts2 における struts.xml の書き方と役割](https://qiita.com/juehara-crypto/items/54dc2e0a4d56845a1a61) | URLマッピング、結果遷移、アクション定義の方法を丁寧に記述。初心者の詰まりやすいポイントを回避。 |
| Vol.7.4 | [struts.xmlの高度な設定と実践活用（Struts2）](https://qiita.com/juehara-crypto/items/bf03adbd840c8f4e2044) | namespaceの活用や画面単位での分離設計、開発時の保守性向上テクニックを紹介。 |

---