質問: 弊社当事業部では4月~6月の間、技術系新入社員に対して研修を行っています。最後の1カ月余りはそれまでの研修のまとめ、総合演習としてチーム制で社内用Webアプリケーションを作ってもらっていますが、それに用いるWebアプリケーションフレームワークとして何がお勧めでしょうか? 総合演習までは、Java、SQL(Oracle)、JDBC、Web研修を行っています。基本設計、DBテーブル設計は講師陣が行い、新人は詳細設計、製造、試験、リリース準備を行います。来年のカリキュラムは未確定ですが、おそらく同じような流れになるかと思います。難しいWeb研修で躓いてもJavaさえわかればなんとかなるApache Wicketに2018年変えましたが、Javaが難しすぎるとのことでした。いっそPythonでDjangoをやらせてみる考えもあります。研修が盛りだくさんなので、個人的には内容を圧縮したいと思っていますが、幅広いご意見をお待ちしています。 実績 | 年 | ネタ | フレームワーク | | --- | --- | --- | | 2014年 | 支店内社員情報システム | SAStruts | | 2015年 | 支店内社員情報システム | Struts 2 | | 2016年 | 支店内社員情報システム | Struts 2 | | 2017年 | 新人自己紹介システム | Struts 2 | | 2018年 | 新人自己紹介システム | Wicket | | 2019年 | チャットシステム | Wicket |
回答: > > 引用テキスト総合演習としてチーム制で社内用Webアプリケーションを作ってもらっていますが、それに用いるWebアプリケーションフレームワークとして何がお勧めでしょうか? > > > フレームワークを使わなくてもWebアプリケーションはつくれます。そのほうが、アーキテクチャやパターンについての基礎知識が得られて、フレームワークの流行にとらわれるより、よいのではないかと思います。以下は私の担当したた新人研修です。 **フレームワークなしの開発** 総合演習をゴールにするには、個別講座で何を教えるか全体の講座設計を行います。個別講座で、データベースアクセスパターン、MVCパターン、Webアーキテクチャなどを教える。自ずとクラスの役割と配置が決まり、定型的なパターンにもとづく開発ができます。毎年、新人の出来や意欲が異なるので教えながら調整します。(全体の講座設計はフレームワークを使うにしても必要) **研修用フレームワーク** 一般のフレームワークは設定が難しかったり、研修に使わない機能があったり、学習量が多かったりと、使いづらいのではないでしょうか。研修に特化したフレームワークなら構造が簡単で短期間に作れます。目的は、新人が技術的に解決できない機能を補完することです。たとえば、制御構造の固定、スレッドの同期化、トランザクションスコープの管理、ジェネリクス、ラムダ式を使う機能など。自作の良い点は、演習中に必要な機能を追加したりバグ修正できることです。ドキュメントは必須です。 **研修の実施** 「フレームワークなしの開発」に「研修用フレームワーク」をオプションで追加。フレームワークの利用は研修グループに任せる。一部利用してもよいし、改造もOKとしておく。以下は結果です。 * フレームワークを採用しないグループ(フルスクラッチ派) 最初の成果が出るのが早い。自由な発想でリクエスト/レスポンスのフロー制御を考える傾向がある。 成功した例からコピー&ペーストして実装することが多い。テストで不具合を指摘するとフレームワークの一部を採用することもあった。 * フレームワークを採用するグループ(フレームワーク派) 習得に時間がかかる。下位レイヤーから実装を積み上げるので成果が出るのが遅い。 フローがひとつ動作すると短時間に全体が完成する。コード量は少ない。 1次開発の規模が小さいせいかフルスクラッチ派が早く完成させる傾向があります。フレームワーク派は、初め時間がかかりますが、ある時点からアジャイルになります。2次開発では品質や効率に差が出ます。 このやりかたで今まで総合演習に失敗したグループはありません。講師の裁量が大きいので参考になるかどうか。