■ 挫折の記憶:Javaに挑んだ2010年
実は、今回が初めてのプログラミング学習というわけではありません。
2010年頃、一度 Javaの学習に挑戦したことがありました。
しかしそのときは…
- Javaの文法やクラス構造を理解するのに半年〜1年
- そのあとに Servlet、JSP、DB接続の知識 も必要
- ようやくWEBアプリの形が見えてきた頃には、すでに心が折れていた
「こんなに遠いの?Webアプリ作るまでに何年かかるの…?」
そう思ってしまい、最終的には 学習コストの低いインフラ系の勉強 に専念する道を選びました。
■ プログラミングは「苦手なもの」になった
その後、業務の中で必要に迫られて:
- C++ に触れる機会があった(難解すぎて撃沈)
- C# を使ったこともあった(しっくりこない)
- VBA ですら「うわ、これ自分には無理かも…」
…というように、プログラミングに対する印象は年々「苦手意識」へと変化。
「自分はインフラ寄りの人間だから、コードは読めなくてもしょうがない」
と、あきらめ気味になっていました。
■ アプローチを変えてみる
そんな中で、「もう一度ちゃんとプログラミングをやってみよう」と思った今回は、学び方そのものを変えることにしました。
- 「前は文法や理論から入ったからダメだったのでは?」
- 「もっと目的ベースにしてみよう!」
■ 新しいアプローチ:「画面ありき」の開発
今回の学習では、まずアプリの全体像から設計しました。
具体的には:
- 開発するアプリの機能を洗い出す
- 全体のフロー図を描く
- フローに沿って必要な画面をリストアップ
- 各画面に必要なインプット/アウトプットを考える
- 処理の流れと画面遷移を明確にしてから、実装に着手
つまり、
「画面ありき」の開発方針 に切り替えたわけです。
■ このやり方、実はちゃんとした名前があるらしい
詳しい名称は忘れてしまいましたが、この「画面を起点にしてシステム設計を進める手法」は、ちゃんとした開発手法として存在するそうです。
ちまたでは**「画面駆動設計」**と言われるそうですが、正式では無いようです。
- 画面 = ユースケース
- 画面 = ゴール単位のまとまり
- 画面 = 開発単位
という考え方で、**「初心者でも作るべきものがハッキリしていて迷わない」**のが魅力。
■ 実際、すごくやりやすい!
この方法でStruts2を使った掲示板アプリを開発してみると、驚くほどスムーズに進行。
- 何を作ればいいのか明確
- MVCの構造に自然と馴染める
- 目に見える成果(画面)のおかげでモチベーションが下がらない
「あれ?プログラミングって、こんなに分かりやすくできるんだ」
という感覚がありました。
■ まとめ:「やり方次第で、プログラミングは味方になる」
昔の自分は**「プログラミングが苦手」**と思い込んでいました。
でも今思えば、それは 「目的」や「手順」が見えていなかったから。
- いきなり文法や理論から入るより
- まず「何を作りたいか」をハッキリさせて
- そこに向かって必要な技術を“逆算的に”学んでいく
そういうやり方が、自分にはとても合っていたようです。
📌 次回予告:
🧭 Vol.1〜7 関連リンク
回 | タイトル | 主な内容 |
---|---|---|
Vol.2 | 画面駆動設計に基づく設計書の具体例:画面フローからUI設計・処理定義まで | 実際に描いた画面遷移図・UI設計・処理定義書を公開し、画面中心の設計手法を解説。 |
Vol.3 | 詳細設計編:ER図で見るデータ構造と実装の土台 | 実装前提で設計された ER図(Entity Relationship 図) をもとに、データ構造と整合性を設計。 |
Vol.4 | Struts2とMavenの基礎と設定ファイルの役割 | Struts2の構成とMavenでの管理、web.xml や pom.xml の役割を丁寧に解説。 |
Vol.5 | 環境構築編:掲示板アプリケーションの実行準備 | TomcatとEclipseでの動作環境構築。 |
Vol.6 | BaseActionクラスの詳細解説【Struts2の要】 | すべてのアクションに共通する基底クラス BaseAction を定義し、ログ出力や共通処理を集約。 |
Vol.6.1 | BaseAction の活用例【共通基底クラスでセッション管理を簡素化】 | BaseAction を継承する具体的なアクション例を紹介し、セッションやログ処理の統合例を実践。 |
Vol.7 | Struts2 における MVC モデルの全体像 | Model-View-Controller の各要素が Struts2 でどう分担されるかを体系的に解説。 |
Vol.7.1 | Struts2 における Model(モデル)について | JavaBeansベースのModelクラス(User, Thread, Post など)設計とその役割を明確化。 |
Vol.7.2 | Struts2 における Controller(コントローラ)の責務 | Actionクラスを軸に、入力処理・分岐処理・画面遷移の中核を担うControllerの実装指針を提示。 |
Vol.7.3 | Struts2 における struts.xml の書き方と役割 | URLマッピング、結果遷移、アクション定義の方法を丁寧に記述。初心者の詰まりやすいポイントを回避。 |
Vol.7.4 | struts.xmlの高度な設定と実践活用(Struts2) | namespaceの活用や画面単位での分離設計、開発時の保守性向上テクニックを紹介。 |