大学ICT推進協議会 教育技術開発部会第8回研究会
2018年10月16日(火)OpenCEASの開発にみるシステム構成要素とプログラミング技術

宮崎誠†1三矢晴彦†2†1畿央大学 教育学習基盤センター†2ボウ・ネットシステムズ株式会社

背景⚫ AIやビッグデータなどのIT、情報処理の素養はこれからの時代の『読み書きそろばん』と謳われています。
⚫ 『読み書きそろばん』と表現されているのは、情報処理の技術が一部の研究者や専門家だけではなく、実業を担う一般の人々にこそ必要な時代になったことを示していると考えられます。
⚫ 従来主流であった経理処理や在庫管理をコンピュータシステムで置き換えるためのソフトウェア開発は単純でした。しかし既にそれらの単純なニーズは大方満たされています。
⚫ 一方で業務のコンピュータシステム化が社会において大きな差別化要因となり競争力の源泉となることは既に証明されてきました。マシン系の処理スピードは人間系を遥かに上回るため、システム化に大きなコストを支払っても業務収益面で有効です。しかもマシン系の処理スピードは増加の一途です。

不確定なニーズと実行環境⚫ 現在、そしてこれから必要とされる情報処理は、従来はマシン系ではなく人間系で行われていたような、不確定なニーズへの対応や業務自体の革新を実現するためのものになりそうです。
⚫ 要求仕様をしっかり固めて専門家に全面委託するという開発方法はうまくいきません。関係者全員にプログラミングの素養が求められます。ここでは不確定なニーズが多すぎるため、常に試行の繰り返しと開発方向性についての議論が必要です。
⚫ 整えられた実行環境の上で、過去の先達が確立した業務ロジックをコンピュータプログラムとして実装していくだけという状況ではありません。
⚫ ハードウェアの進歩により設計自由度が高まったため、実世界におけるシステム実行環境の変化も早くなっています。

LMS開発における構成要素⚫ 常に時代に合わせて最適なアーキテクチャを考え直しながら、今まで誰もコンピュータシステム化を経験していない分野についてプロトタイピングを重ねながらソフトウェア開発を行っていく必要があります。
⚫ このような状況でソフトウェア設計・プログラム実装の際に必要とされる能力は広範囲に及びます。
⚫ 例としてクラウドサービス環境を利用するLMS（LearningManagement System）の開発は不確定なニーズへの対応を目指すものであり、システム実行環境の新しさも併せて典型的なケースの一つであると言えます。
⚫ 日本国内のニーズに最適化したOpenCEAS、米国で開発され世界標準と言えるCanvas LMSのような最新のeラーニング・プラットホームの開発では幅広い知識が要求されます。

何を知っている必要があるか？
⚫ プログラムとは何か（本質的に何が可能になるのか）⚫ 業務のプログラム化はどの様に行うか（モデリング等）⚫ 技術トレンド・標準規格⚫ 利用する技術の選択方法⚫ インフラ設計⚫ アーキテクチャ設計⚫ データ管理設計⚫ プログラム設計⚫ 開発環境設計⚫ 開発手法・スタイル⚫ 既存プログラムの探索と利用、実装例の学習方法⚫ 実装と性能最適化⚫ 品質管理⚫ ドキュメンテーション（設計共有）

他にも必要な知識は広範囲に⚫ 実際には更に、運用設計、工数・スケジュール管理、体制管理などが必要になります。
⚫ クラウドサービス環境を活用するために、サービス化されたソフトウェアについて設計思想と機能詳細を知っている必要があります。
⚫ 各クラウドサービスの費用体系を知れば、効率の良い構成を設計できます。
⚫ 新規開発ではなく、同じようなコンセプトのソフトウェアを新しいアイデアで刷新するという場合は、過去の設計を読み解く能力が必要です。時として非常に高度な読解能力が要求されます。

OpenCEASの開発事例

授業支援型e-Learningシステム
OpenCEAS(CEAS)
授業と学習のサイクルを前提とする教育方法の実施を支援する「枠組み」をつくり、教育の質の向上と教育の負担軽減を図る
学習
授業回数

授業実施（回数）を軸に履修評価

授業

授業と学習を統合的に支援

機能一覧
共通

ログイン・ログアウト，公開FAQ，お知らせ，公開科目一覧，個人情報変更，レポート確認

ユーザ管理，科目管理，ユーザリスト読込，科目リスト読込，履修環境
科目担任リスト読込，科目担任リスト読込，履修情報リスト
管理者
読込，システム利用状況，告知機能，アクセスログ

担任者

授業資料，教材割付，科目独自ページ，複合式テスト作成，記号入力式テスト作成，レポート課題作成，アンケート作成，複合式テスト管理，記号入力式テスト管理，レポート管理，アンケート管理，出席管理，システム情報，科目環境設定，
連結評価一覧表，お知らせ/メール，FAQ，回答登録，教材一括更新

学生

複合式テスト実施，記号入力式テスト実施，レポート提出，アンケート実施，テスト結果表示，お知らせ，FAQ，チャット，出席確認，出席情報収集，出席表，グループフォルダ

CEAS開発の歴史
年月

バージョン

開発主体 開発言語

2002年11月 CEAS1系

関西大学 PHP

2003年9月

CEAS2系

関西大学 PHP

2008年7月

CEAS3系

関西大学 Java2009年8月

CEAS-Sakai

関西大学 Java2016年10月 CEAS10
2018年度(予定)

畿央大学 Java

OpenCEAS 1.0 畿央大学 Ruby

CEAS3系フロントエンド部の問題

CEAS3

担任者TOP画面

担任者TOP画面

操作によるグループ化

活動別操作カテゴリの配置ページ

教材の作成/登録/割付
・教材作成/登録
・教材一括更新

都度対応の情報表示

・授業への割付

授業データ管理
・教材作成/登録
・教材一括更新

都度対応ツール

・お知らせ・FAQ
・その他の補助ツール

授業実施・担当科目一覧
・授業実施画面へ遷移

授業実施画面

学生/教員共通

授業回数毎教材割付表現

マルチデバイス・モダンブラウザ対応の課題⚫ 固定サイズの画面を想定した設計仕様であったためマルチデバイスの対応できない⚫ Windows 10 のデフォルトブラウザである Microsoft
Edge や Google Chrome などのブラウザの最新バー
ジョンでは表示の崩れが発生し，後方互換のドキュメ
ント・モード設定では対応できない⚫ プログラムを長期にわたり，スキルの異なる担当者で保守してきたためコードの品質に幅がある⚫ プログラム規模として全部で約13万行あり，テンプレートエンジンやライブラリを含めて変更すると期間と工数が膨大になる⚫ Windows10に移行目前となり，早急に対応する必要がある

CEAS3系バックエンド部の問題

バックエンド部の課題いろいろ• CEAS3のJavaフレームワーク，ライブラリは開発当時のもの• Spring 2.5.5(5.1.1), Apache MyFaces 1.1.3(2.3),
Hibernate 3.1.1(5.3)※カッコ内は 2017/10/14 時点での最新バージョン• アップデートするには，ソースコードの修正や設定ファイルの変更など，相当の工数が必要• システム基盤（開発言語やAPフレームワークの稼働バージョン）が古いためセキュリティ要件を満たすことができない• アプリケーション実装のコードに一貫性が足りないバックエンド部の課題いろいろ• アプリケーション方式設計が古いため、現代のWebアプリケーションが一般的に実現している機能を実現できない（Restfulなシステム応答やブラウザ機能画面遷移への対応等）• APフレームワークの設計が古いため、新機能追加や改修において高い開発生産性を維持することが難しい• 他システム連携の仕様が古いため、外部の教育システムと簡単に連携構成を組むことができない

CEAS3系改修方針

CEASの構造: 3層アーキテクチャ
プレゼンテーション層

リクエスト

ビジネスロジック層

データアクセス層

Controller
Model

データベースビジネスロジック
レスポンス

データアクセス

View

フロントエンド部

バックエンド部

2段階のシステム改修⚫ 第1段階目
CEAS3系フロントエンド部の改修によるCEAS10の開発⚫ 第2段階目
CEAS10のバックエンド部改修によるOpenCEASの開発
2段階に分けたことで１度にUIとバックエンドを改修するよりも着実に開発を進めることが可能✓ 失敗するリスク少✓ 予算計画が立てやすい
長年使い続けているシステムの設計や機能が古くなることは，いつの時代も大学のみならず起こり得るため，今回のようなMVCモデルを充分把握したモダナイゼー
ションは，システム更新の選択肢の一つとして検討する価値がある

第1段階目
CEAS3系フロントエンド部の改修

CEAS10の開発方針⚫ 授業支援システムに必要とされる主な機能はすでに実装済み（機能追加は不要）⚫ CEASの外部仕様は授業支援型ユーザインターフェイスとして定義できており，利用の手引きも整備済み⚫ CEAS3システムの実装は，3層アーキテクチャのデザインパターンを順守しているため，レイヤー（層）単位でのコードの書き直しも他層に影響を与えず可能⚫ マルチデバイス・モダンブラウザ対応は，CEAS3のプレゼンテーション層のみ変更することで可能⚫ セキュリティ面の対応すべき課題は，内部設計を見直し，CEAS3のビジネスロジック層の改修にて実現

プレゼンテーション層の検討と実装⚫ 事前検証としてCSSフレームワークのHTML KickStartを使ってJSPファイルをHTML5に書き直し，プレゼンテーション層の独立性を確認⚫ CEAS10の開発では，開発コミュニティの活性度やドキュメントの豊富さなどを考慮し，Bootstrapで構築⚫ 検証ブラウザ: Edge, Chrome (IE11, Firefoxなどでの利用も想定)

CEAS10 教員画面(CEAS3との比較)
CEAS10(PC表示)

CEAS3

CEAS3の規模
総行数
Interface143

プレゼンテーション
ビジネスロジック

インテグレーション
合計

Class

JSP

ファイル数

202

Java

JSP

39,172

32,67829

6739,99534

68

15,048

63

278

202

94,21532,678※赤字は，CEAS10でマルチデバイス・モダンブラウザ対応のために変更したJSPCEAS10 学生画面
CEAS10(PC表示)

CEAS10(スマホ表示)

第2段階目
CEAS10バックエンド部の改修

OpenCEASの開発方針⚫ CEAS10と同じUI実装⚫ CEAS10と同じ機能実装⚫ 使わなくなった機能廃止

開発の除外事項•新規機能追加•UIおよび機能改修•データベーススキーマの変更や最適化⚫ 使わなくなったDBのテーブル削除⚫ Ruby on RailsのDRY原則に基づいた冗長なソースコード等の最適化⚫ CoC「設定より規約」に準じたActiveレコード，DBテーブル命名規約の遵守⚫ REST原則によって一意の識別子（URI）に対して，動作を決めてアクセス可能とする⚫ 利用ライブラリ，モジュール等のライセンス管理

開発環境
CEAS10をRubyで書き直し，最新の技術に対応する

CEAS10OpenCEAS• Spring 2.5.5• Ruby 2.0.0• Apache MyFaces 1.1.3 • Rails 4.2.9• Hibernate 3.1.1

OpenCEASの規模
総行数
項目名

クラス メソッド html.erb

コメント含むコメント除く294

29,910-12,143

9,457

939

825

View

--

Controllers

57506

Helpers

070-

Models

42

188-

2,753

2,246

Mailers

55-

4441

Javascripts

0112-

1,336

896

Libraries

11-6610588229447,13113,471
合計※赤字は，CEAS10のJSPファイルに対応するhtml.erbファイル

Ruby on Rails の基本理念
Railsの哲学には、以下の2つの主要な基本理念があります。
⚫ 同じことを繰り返すな (Don't Repeat Yourself: DRY):
DRYはソフトウェア開発上の原則であり、「システムを構成する知識のあらゆる部品は、常に単一であり、明確であり、信頼できる形で表現されていなければならない」というものです。同じコードを繰り返し書くことを徹底的に避けることで、コードが保守しやすくなり、容易に拡張できるようになり、そして何よりバグを減らすことができます。
⚫ 設定より規約が優先される (Convention Over Configuration):
Railsでは、Webアプリケーションで行われるさまざまなことを実現するための最善の方法を明確に思い描いており、Webアプリケーションの各種設定についても従来の経験や慣習を元に、それらのデフォルト値を定めています。このようにある種独断でデフォルト値が決まっているおかげで、開発者の意見をすべて取り入れようとした自由過ぎるWebアプリケーションのように、開発者が延々と設定ファイルを設定して回らずに済みます。
Ruby on Rails ガイド (5.0 対応)

https://railsguides.jp/getting_started.html

DRY(Don’t Repeat Yourself)原則
Viewの比較
ファイル数

総行数

CEAS3

202

32,678OpenCEAS

29429,910↑
45.5%増↑-8.5%減html.erbファイル数は増えたが、「テンプレート」を工夫することにより、内部は記述が簡潔に総行数は若干減少

Convention over Configuration「設定よりも規約」とは、「慎重に設計された規約（Convention）に従うことにより、設定（Configuration）を不要にする（あるいは軽減する）」ということ

Wikipedia Ruby on Rails, https://ja.wikipedia.org/wiki/Ruby_on_Rails

規約による関連付けの例(ActionとView)
controllers/announcements_controller.rb

views/announcement/ index.html.erb

views/announcement/ show.html.erb

RubyLife, https://www.rubylife.jp/rails/ini/index7.ht ml

Convention over Configuration「設定よりも規約」とは、「慎重に設計された規約（Convention）に従うことにより、設定（Configuration）を不要にする（あるいは軽減する）」ということ

Wikipedia Ruby on Rails, https://ja.wikipedia.org/wiki/Ruby_on_Rails

規約による関連付けの例(Modelとテーブル)models/announcement.rb

DBCREATE TABLE announcements …

RubyLife, https://www.rubylife.jp/rails/ini/index7.html

REST(REpresentational State Transfer)原則

リソース識別子(URI)

リクエスト

コントローラー、アクション

OpenCEAS 担任者Topページ※CEAS10と見た目は変わりませんOpenCEASの実行環境イメージ

Web画面機能

OpenCEAS
環
境AWS,Azureイン
フラ環
境

遅延ジョブ管理機能

Web API機能

外部I/F機能

OpenCEAS アプリケーション
共通ライブラリ（Ruby Gems）

APフレームワーク（Ruby on Rails）

プログラム実行環境（Ruby）

Httpdサーバ

Redisサーバ

RDBMSサーバ（MySQL）

オペレーティング・システム（LinuxサーバOS：Ubuntu, CentOS）
仮想環境実行ハードウェア
ネットワーク・インフラ

Copyright © 2018 Bow Netsystems Corp. All rights reserved.

41

Canvas LMSの実行環境イメージ

Web画面機能

Canvas LMS
環
境AWSイン
フラ環境

遅延ジョブ管理機能

Web API機能

外部I/F機能

Canvas LMS アプリケーション
共通ライブラリ（Ruby Gems）

APフレームワーク（Ruby on Rails）

プログラム実行環境（Ruby）

Httpdサーバ

Redisサーバ

RDBMSサーバ（PostgreSQL）

オペレーティング・システム（LinuxサーバOS：Ubuntu,CentOS）
仮想環境実行ハードウェア
ネットワーク・インフラ

Copyright © 2018 Bow Netsystems Corp. All rights reserved.

42

プログラミング以外の知識，技術実際の情報システム開発
⚫ IDE

⚫ テスト

⚫ フレームワーク⚫ クラウド⚫ チーム開発⚫ AI⚫ プロジェクト管理…

⚫ ドキュメンテーション⚫ ミドルウェア⚫ プロトコル⚫ バグ管理システム

情報システムを開発する技術
要求工学

現場の観察法(フィールドワーク、エスノグラフィー、アクションリサーチ)
要求定義、要求獲得技術、要求管理

システム工学

システム思考、システム設計技法、システム実 装技術、システムライフサイ
クル、システムアーキテクチャ、デザイン思考

情報システムを記述する技術

各種モデル化技法(構造化分析、データモデリング、業務フロー、状態モデル、形式手法)と 図法(DFD、UML、BPMN、SysML)

ソフトウェア工学

ソフトウェア設計技法(オブジェクト指向モデル、ドメイン主導開発)、ソフ
トウェアライフサイクル

ソフトウェアアーキテクチャ、パタン・ランゲージ
プログラミング
技術

オブジェクト指向プログラミング
テスト主導開発
プログラミング支援環境

情報システムの品質を保証する技術

検証技術、テスト技法、ISO/IEC SQuaRE シリー ズ

プロジェクトマネジメント

プロジェクト計画、チーム編成、プロジェクト管理、PMBOK、ソフトウェ
アプロセス、プロセス 成熟度モデル

日本学術会議 大学教育の分野別質保証のための教育課程編成上の参照基準 情報学分野<付録オ>社会において情報を扱うシステムを構築し活用するための技術・制度・組織ディスカッションディスカッション⚫ プログラムだけでなくフレームワークやアーキテク
チャー，AI，クラウドに関する知識を有した人材をどのように育成していくべきか⚫ 知識の教育なのか，自分で獲得できる能力の育成なのか⚫ 開発フェーズと運用フェーズにおける適切なプロジェ
クトメンバー配置とは⚫ 大学入学時の学生のプログラミング能力の状況が刻々と変化していくことが予想されるなか，大学はどう対応するべきか⚫ 情報科学技術教育分科会の「情報システムを開発する技術」に関して⚫ 大学教育と卒業後に求められるプログラミングとのギャップ