ZACKY's Laboratory 山崎 進 研究室 Page Topへ

ソフトウェア設計・同演習

この授業ではオブジェクト指向ソフトウェア開発の基礎をモデリング/プログラミング両面から学習します。旧科目のソフトウェア設計論/オブジェクト指向プログラミング演習から長年取り組んできた授業実践の研究成果を投入しています。

ソフトウェア開発スキルは個人差がとても大きく,従来の一斉講義・演習形式では学習進度を学生一人ひとりに適切に合わせることが不可能でした。そこで,学生が自分のペースで授業を進められるようにすべく,2015年度から個別化教授システム(PSI: personalized system of instruction)を採用して全面的にリニューアルしました。これにより完全習得学習(mastery learning)の理想状態にすることを目指しています。

もう1つの特徴は,研究室に所属する先輩学生であるティーチング・アシスタントが個別にモデルやプログラムをレビュー指導することです。モデリングやプログラミングの能力を向上させる最も効果的な方法はレビューだと私は考えています。そこで,研究室のプログラマ志望の学生をプロフェッショナルのエンジニアの協力を得ながら徹底的に鍛え,その学生をティーチング・アシスタントとして採用しきめ細やかなレビュー指導をするようにしました。また毎回の授業の終了後にふりかえりを行い,指導レベルの向上と均質化を図っています。これにより,実践的な個別指導を行き渡らせることを目指しています。

2017年度からさらにリニューアルして,UIデザインの要素を取り入れました。その代わりに今まで行っていた UML の学習については,後期のプログラミング・同演習に付け替えることにしました。

関連記事

この授業のねらい

みなさんが「アプリ」という言葉を耳にした時に,たとえば Office,ウェブブラウザなどを連想するかもしれません。携帯のiアプリや,iPhone や Android などのスマートフォンで動作するアプリをイメージした人もいるかもしれません。このようなアプリを GUI アプリケーションと言います。この授業では,GUI アプリケーションのようなソフトウェアの実践的な開発方法(オブジェクト指向開発)を学びます。

授業の前半では,GUIアプリケーションを開発するのに必要なデザインとプログラミングのいくつかの手法を,学生の興味に沿って複数選んで学びます。選べる学習項目には次のようなものがあります。

A) ペーパープロトタイピング B) GUIアプリケーションプログラミング(いくつかのプログラミング言語・プラットフォームから選択)

とくに次のような人は全力でこの授業の修得に励んでください。

  1. 将来,ソフトウェア開発やデザインの仕事に携わりたい人
  2. 大学院に進学してソフトウェア工学を学びたい人

単なる座学ではなく,身の回りの製品やサービスを参考にしながらUIデザインをする演習課題を行ったり,実際にソフトウェアを開発してコードレビューなどの個別指導を受けたりします。学生が行う作業量は多いですが,その分,実践的なソフトウェア開発の能力を身につけることができます。教え方をいろいろ工夫していますので,確実に,しかも楽しく学べるでしょう。

教科書と参考書

教科書

授業中に必要な資料を配布します。詳しくは第1回オリエンテーションでアナウンスします。

参考書 (図書館蔵書には◯)

◯牛尾 剛「オブジェクト脳のつくり方」翔泳社 ISBN: 978-4798104188

オブジェクト脳のつくり方

◯平沢 章「オブジェクト指向でなぜつくるのか」(第2版) 日経BP社 ISBN: 978-4822284657

オブジェクト指向でなぜつくるのか

◯E.ガンマ他 「デザインパターン」ソフトバンククリエイティブ,ISBN: 978-4797311129

デザインパターン

◯M.ファウラー 「リファクタリング」オーム社 ISBN: 978-4274050190 (新装版): 図書館蔵書は旧版

授業計画・内容

第1回の授業でオリエンテーションとチームビルディング,自由課題のアイデア出しを行います。

その後,チームで相談して A)ペーパープロトタイピング と B)GUIアプリケーションプログラミング に分かれます。番号は大まかな順番を示しているだけで,実際の授業週とは一致しません。

その後,自由課題に取り組みます。

  1. オリエンテーション,チームビルディング
  2. 優先順位付き「ユーザーがアプリでしたいこと」のデザイン
  3. 基礎演習(A, B-1, B-2 に分かれます)
  4. 自由課題(自分たちで考えたアプリを実際に開発します)
  5. 発表とふりかえり

A) ペーパープロトタイピング

  1. ペーパープロトタイピングによるUIデザイン概論
  2. ペーパープロトタイピング演習(1): ふせんを使ってのUIデザイン
  3. ペーパープロトタイピング演習(2): プロトタイピングツールへの取り込み
  4. チュートリアル教材による学習: プラットフォーム選択によって教材を選択
  5. ペーパープロトタイピング演習(3): UI要素の検索
  6. ペーパープロトタイピング演習(4): オリジナルUI要素のデザイン

B) GUIアプリケーションプログラミング

現在準備しているのは,ウェブアプリケーションとモバイルアプリケーションの開発の2つのコースです。

B-1) ウェブアプリケーション

  1. チュートリアル教材による学習(1): 導入
  2. チュートリアル教材による学習(2): 簡単なアプリケーションの開発
  3. チュートリアル教材による学習(3): 静的なウェブページの作成
  4. チュートリアル教材による学習(4): 使用するプログラミング言語の初歩
  5. チュートリアル教材による学習(5): レイアウトの作成
  6. HTML5 と CSS3
  7. チュートリアル教材による学習(6): ユーザーモデルの作成
  8. チュートリアル教材による学習(7): ユーザー登録
  9. チュートリアル教材による学習(8): ログイン機構(基本)
  10. チュートリアル教材による学習(9): ログイン機構(発展)
  11. チュートリアル教材による学習(10): ユーザーの更新・表示・削除
  12. チュートリアル教材による学習(11): アカウントの有効化
  13. チュートリアル教材による学習(12): 投稿機能の実装
  14. チュートリアル教材による学習(13): フォロー機能の実装
  15. チーム開発に必要なバージョン管理の基礎

B-2) モバイルアプリケーション

  1. チュートリアル教材による学習(1): プロジェクトの作成,画像の配置とユーザーによる移動
  2. チュートリアル教材による学習(2): プログラムによる単純移動
  3. チュートリアル教材による学習(3): プログラムによる移動と生成
  4. チュートリアル教材による学習(4): プログラムによる衝突判定とアニメーション
  5. チュートリアル教材による学習(5): UIの表示
  6. チュートリアル教材による学習(6): UIの調整
  7. チーム開発に必要なバージョン管理の基礎
  8. 開発環境へのバージョン管理ツールの導入

成績評価の方法

詳しくはオリエンテーション​で​説明します。

  • 前半のペーパープロトタイピングとGUIプログラミングについて,個人の演習課題で評価。配点50%
  • 後半の自由課題について,チームの演習課題で評価。配点30%
  • 積極的な授業への参加20%

履修上の注意

  • C言語の文法を一通り理解していること,C言語で演習レベルの簡単な問題をプログラミングした経験があることが前提です。
具体的には次の項目を復習するといいでしょう。
    • 計算機演習I : 表示,キー入力,変数,条件分岐,配列,繰り返し,関数
    • 計算機演習II: ポインタ,構造体
    • アルゴリズム入門/データ構造とアルゴリズム・同演習: 配列,リンクリスト,2分木,スタック,キュー

担当者からのメッセージ

授業方法にこだわりさまざまな工夫をした結果,学生から「楽しかった!」「ためになった!」という声が多数寄せられました。私の授業を受講した先輩たちに感想を聞いてみてください。

キーワード

ソフトウェア工学,ソフトウェア開発,リファクタリング,コードレビュー,UIデザイン software engineering, software development, refactoring, code review, UI design