SlideShare una empresa de Scribd logo
1 de 27
株式会社アクティア 
代表取締役社長大島則人
株式会社アクティアについて 
モデル駆動型開発の取組 
適用事例 
フェーズ1 
フェーズ2 
フェーズ3
モデル駆動型ソフトウェア開発をやるために 
作った会社 
2008年4月創業(現在7期目) 
設立1 – 2 年目SES型の常駐がメイン 
設立3 – 4 年目モデル駆動型開発プロトタイプ 
設立4 – 6 年目モデル駆動型開発導入(一部) 
設立7 - 年目モデル駆動型開発を主軸へ(したい…)
株式会社アクティアによる
画面定義書 
データベース 
定義書 
プログラム 
氏名 
氏名の仕様(最大文字数等)が変更されると 
全ての成果物に影響を及ぼす
標準化 
コード規約 
実装サンプル 
決まったルールに従ってコードを書くだけ
1.○○○を検索する 
2.×××を計算する 
・ 
・ 
・ 
日本語で書いてあるだけでプログラムと変わらない 
詳細設計書
ソフトウェア開発はもっとクリエイティブで 
あって欲しい。 
業務項目定義は一か所に集約 
一意性 
ルールに則ったプログラム 
コード自動生成 
日本語でコーディング 
日本語DSL
モデル≠ 設計書 
モデルは概念を表すためのもの 
設計書では無い 
モデルに業務項目を集める 
一意性の担保 
設計書はモデルから自動生成 
利害関係者毎にモデルのビューを提供する
モデル⇒ テンプレート⇒ プログラム 
標準化するならテンプレートで代用 
アーキテクトが望むコードを手に入れやすい 
品質を向上させやすい 
単純なバグは減る 
テンプレート切り替え 
プラットフォーム変更に対処しやすい
モデル= コード 
日本人は日本語が良い 
英語に変換すると変換間違いや誤解を招く 
業務担当者がロジックを評価しやすい 
ソフトウェアが可視化される
設立3 – 4 年目 
デザイン会社、上位システム会社と共同受注 
既存システムのリプレース 
発注から企業の出展登録開始まで3カ月 
参加者からの参加登録まで6カ月 
規模感 
30機能程 
国際化対応(日本語、英語)
開発期間が極めて短い 
3カ月で全機能を実装するのは困難 
3カ月単位の段階リリースへ 
規模に比べて予算が少ない 
年間通して複数のエンジニアを確保できない 
優秀なエンジニアをアサインしづらい 
モデル駆動型開発のプロトタイプ開発へ 
業務項目の一元管理 
ソースコードと設計書の自動生成
業務項目の管理 
MS-Access にモデルを格納するリポジトリを用意 
プリミティブ型、区分値、エンティティを格納 
日本語と英語で項目を格納 
自動生成ツール(VBA) 
Database DDL の生成 
O/R Mapping コードの生成 
区分データからライブラリ生成 
区分データからコンボボックス部品の生成 
Database DDL / 業務項目/ 区分値を開発者へ 
HTML ドキュメントとして提供
効果(定量的評価) 
初期1カ月で仕様確認(2人× 1か月) 
初回リリースまで(3人× 2か月) 
2回目リリースまで(2人× 3か月) 
以降、保守 
効果(定性的評価) 
画面実装とビジネスロジック実装に集中できた 
エンジニアのスキル依存度が減った 
保守フェーズでHTML ドキュメントが役立った
課題 
実装言語にPHP を使ったことで仕様変更時の影響 
範囲が特定しづらい。 
仕様変更時に再生成するとコードが上書きされて 
しまう。
設立4 – 6 年目 
上位システム会社と共同受注 
既存システムへの機能追加 
担当エンジニアの退職で機能追加ができない状態 
リリースまで2カ月 
規模感 
追加2機能 
但し、他の機能仕様について不明
既存コードを把握しないと保守が不安 
短納期 
既存機能のリグレッションテスト 
モデル駆動型開発の初期バージョン開発 
(UML / MDA)
業務項目の管理 
UML クラス図へリバース(手動) 
プリミティブ型、区分、エンティティをクラス化 
クラス図は日本語化、コード生成時に辞書を使っ 
て英語化 
自動生成ツール(Acceleo) 
フェーズ1と同様の生成 
UML ツールからHTML ドキュメント生成 
Generation Gap / Hook Operation を使って実装 
コードの上書きを回避
効果(定性的評価) 
初回リリース時は効果が限定的 
実装機能が少ないため効率は感じなかった 
翌年、同様に機能追加依頼あり 
コードテンプレートを入れ替えてフレームワーク 
の差し替えを実施できた。 
(独自Java FW -> Springframework) 
課題 
静的構造の把握はできたがビジネスロジックは手 
つかず。
設立5 年目– 
いわゆるビックデータのダッシュボード 
昨年までフェーズ2のツールで開発実施 
フルスクラッチの初期開発案件 
アジャイル型で仕様は打ち合わせで決まる 
規模感 
1.5人月の予算で継続的に受注中
仕様書が存在しないため保守が不安 
アジャイル型のため仕様変更が比較的多い 
モデル駆動型開発の次期バージョン開発 
(UML / MDA / Groovy DSL)
業務項目の管理 
UML クラス図で設計 
プリミティブ型、区分値、エンティティ、サービ 
スをクラス化 
ビジネスロジックの管理 
メソッド実装をGroovy DSL で記述(日本語可) 
自動生成ツール(Acceleo) 
Database DDL の生成 
サービスレイヤ以降のコード生成 
継承サポート/ 多態性サポート 
UML ツールからHTML ドキュメント生成
効果(期待値) 
ビジネスロジックの可視化 
現在開発中!
UML クラス図へ業務項目を一元化できる 
コード生成によって目的のコードを得られる 
日本語DSL によってロジックを可視化する

Más contenido relacionado

La actualidad más candente

Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
 

La actualidad más candente (9)

C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 20174 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
 
真Intermediate languageのキホン
真Intermediate languageのキホン真Intermediate languageのキホン
真Intermediate languageのキホン
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
Hello! intermediate language
Hello! intermediate languageHello! intermediate language
Hello! intermediate language
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
Final LINQ extensions III
Final LINQ extensions IIIFinal LINQ extensions III
Final LINQ extensions III
 
Intelli code
Intelli codeIntelli code
Intelli code
 

Similar a モデル駆動型開発

JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
Hideki Sugimoto
 

Similar a モデル駆動型開発 (20)

とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
アジャイル開発のためのDatadog
アジャイル開発のためのDatadogアジャイル開発のためのDatadog
アジャイル開発のためのDatadog
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
 
スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31
 
Apexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違いApexトリガと標準自動化プロセスの違い
Apexトリガと標準自動化プロセスの違い
 
KCGビジネスインターンシップ 実習報告
KCGビジネスインターンシップ 実習報告KCGビジネスインターンシップ 実習報告
KCGビジネスインターンシップ 実習報告
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
 
Agile and Scrum: Theory of Knowledge Creation and A Real Story
Agile and Scrum: Theory of Knowledge Creation and A Real StoryAgile and Scrum: Theory of Knowledge Creation and A Real Story
Agile and Scrum: Theory of Knowledge Creation and A Real Story
 
Roo
RooRoo
Roo
 
SoRとSoEをつなぐ 「エンジニアの役割」と 「企業の課題」
SoRとSoEをつなぐ 「エンジニアの役割」と 「企業の課題」SoRとSoEをつなぐ 「エンジニアの役割」と 「企業の課題」
SoRとSoEをつなぐ 「エンジニアの役割」と 「企業の課題」
 
レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話
 
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナーソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズToppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
 
PMAJ関西PMセミナー2021 成功するための価値共創開発ポイント
PMAJ関西PMセミナー2021 成功するための価値共創開発ポイントPMAJ関西PMセミナー2021 成功するための価値共創開発ポイント
PMAJ関西PMセミナー2021 成功するための価値共創開発ポイント
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
 
恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例
 
Semat - a Japanese introduction
Semat - a Japanese introductionSemat - a Japanese introduction
Semat - a Japanese introduction
 

モデル駆動型開発