SlideShare a Scribd company logo
1 of 56
アプリケーション開発概論
Shinya Yanagihara
はじめに
本日の勉強会のポイント
2
3
異なる関心事
アプリケーションエンジニアと基盤エンジニア
アプリケーション
エンジニア
業務対象
・要求分析
・設計
・開発
・テスト
関心事
・実装言語
・実装方式
・実装手法
・検証方法
・生産性/効率性
基盤
エンジニア
業務対象
・ミドルウェア
・OS
・ネットワーク
・ハードウェア
関心事
・信頼性
・可用性
・保守性
・完全性
・機密性
アプリケーション
様々なシステム内で動作する特定の目的のためのソフトウェア
4
• 具体的な目的のための作業に
用いられるソフトウェア
– アプリケーション・ソフトウェア
• オペレーティングシステムの拡張や
アプリケーションの汎用機能などを
提供するソフトウェア
– ミドルウェア / ランタイム
• 「オペレーティングシステム」や
「ドライバ」などコンピュータ制御の
ためのソフトウェア
– 基本ソフトウェア/システムソフトウェア
5
“アプリケーション”とは
特定の目的のために設計・開発されたソフトウェア
ドライバ
オペレーティングシステム
ハードウェア
ランタイム/
ミドルウェア
アプリケーション
6
デバイス専用のアプリケーション / マルチ・プラットフォーム
“アプリケーション”の実行環境
様々なデバイス用のアプリケーション
モバイル
アプリケーション
デスクトップ
アプリケーション
Web
アプリケーション
ホスト
アプリケーション
・・・など
オペレーティングシステム
( カーネル)
ランタイム/
ミドルウェア
アプリケーション
システムコール
• アプリケーションの動き方
– デバイスに関係なく共通
• アプリケーションを実装している
プログラム言語(ランタイム)から、
OS カーネルのシステムコールを
行う
• デバイス(プラットフォーム)毎の
アプリケーション
– それぞれで異なる命令セット
• それぞれに専用アプリケーション
を作成
• 異なる命令セットを吸収する
ランタイム
プログラム
言語
• 高級言語 / 低級言語
– 高級言語:自然言語に近い形式
• 最終的には機械語に翻訳
– 低級言語:H/Wが理解可能な形式
• コンパイラ方式 / インタプリタ方式
– コンパイラ(事前翻訳):
• 予めプログラムを翻訳し実行ファイルを生成
• プログラムの変更毎に再翻訳が必要
– インタプリタ(逐次翻訳):
• 実行毎に1命令ずつ翻訳しながら実行
• 実行時コンパイラ(JIT)
7
プログラム言語
アプリケーション(コンピュータプログラム)を記述するための形式言語
プログラム言語
低級言語 高級言語
• アセンブラ
• 機械語 コンパイラ方式 インタプリタ方式
• C言語
• COBOL
• Java
• C#
• Bash
• JavaScript
• Ruby
• Python
インタプリタ
併用
アプリケーション・アーキテクチャ
システムを最適とするアプリケーションのブループリント
8
• アーキテクチャ
– システムの基本構造
– 同じアプリケーションでも構造次第で
性質が変わる
• 性能 / 信頼性 / 生産性 / ユーザビリティ 等
– システムの特性(要件)に合わせた
適切な設計が必要
• アーキテクチャ設計
– システムに要求する「What」と「How」
を明確にする
– What
• 静的な構造
– ユーザ要求
– 品質要求
• 機能性 / 信頼性 / 効率性 / 保守性 等
– How
• 動的なプロセス
– 作業の順序関係
– 開発手法
9
“アプリケーション・アーキテクチャ”とは
システムの特性合わせた構成
システム
観点
ビジネス
観点
ユーザ
観点
10
技術革新や社会変化により変化していくアーキテクチャ
アーキテクチャのパラダイムシフト
メインフレーム
時代
クライアント/サーバ
時代
Web分散システム
時代
クラウド
時代
データ
ロジック
データ
ロジック
ロジック
データ
ロジック
ロジック
データ
ロジック
ロジック
• メインフレーム / ダム・ターミナル
– 計算処理及び記録機能は
全て巨大なサーバ(メインフレーム)で
実施
– クライアントは簡素なビューワーであり
「文字入力」と「結果表示」を実施
• アプリケーション
– 主にCOBOL言語による開発
• 固定小数点数による10進演算が特長
– 金融業務の記述の多く利用
11
メインフレームの時代 (~1980年代)
大型コンピュータによる集中処理
データ
ロジック
• パーソナルコンピュータの登場
– PCの処理能力を活用し、
クライアント側とサーバ側での分業
• サーバ側
– 主要な業務処理
– 共有するデータの補完
• クライアント側
– データの加工・編集
– 画面(ユーザインターフェース)の描画
– Fat Client
12
クライアント/サーバの時代 (1980年代~1990年代)
サーバサイドでデータを集中管理 / 各クライアントでロジック処理を実施
データ
ロジック
ロジック
• Windows の登場
– ブラウザをクライアント機能として利用
• クライアントサイドの開発・運用コストの削減
• ブラウザ技術の進化
– プラグインプログラム利用による
RIA(Rich Internet Application)
• Java Applet
• Adobe Flash
• Microsoft Silverlight
• Curl
13
Web分散システムの時代 ( 1990年代後半~2000年台)
ブラウザをクライアントとするWebアプリケーション
データ
ロジック
ロジック
• クラウドの登場
– インターネット技術の進歩
– ネットワーク速度の向上
– クライアント端末の多様化
• マルチデバイス前提のクライアント
– 機種依存するRIAの衰退
– HTML5 によるWebアプリケーション
• スケールするサーバサイド
• ファンクショナルな基盤
14
クラウドの時代 (2010年代)
オンデマンドで利用可能なコンピュータリソースと多様化するクライアント端末
データ
ロジック
ロジック
15
密から疎へ、プロプライエタリからオープンへ
分散システムの変遷
20201970 1980 1990 2000 2010
RPC CORBA
RMI
DCOM COM+
SOAP REST gRPC
GraphQLMQ
IPC
COM
Peer to Peer EAI SOA マイクロ
サービス
分散処理技術
分散アーキテクチャ
システム開発
アプリケーション開発とインフラストラクチャ構築
16
17
一般的なシステム開発
システム開発全体像
アプリケーション開発
インフラストラクチャ構築
• 基本設計
• 詳細設計
• 実装
• 単体テスト
• 結合テスト
• システムテスト
• ユーザ受け入れテスト
• 方式
• 非機能(性能/信頼性)
• OS
• ネットワーク
• ミドルウェア
運用
• リリース
• 移行
• 定常時運用
• 起動/停止
• 監視
• 障害時運用
• 代替運用
• 障害対応
• 復旧
保守
• 定期/緊急保守
• ハードウェア保守
• ソフトウェア保守
• ネットワーク保守
要件
• 経営戦略立案
• システム化計画
• 業務調査/分析
• 対象領域分析
• 個別システム化計画
プロジェクト管理
• スケジュール管理
• 要員管理
• 課題管理
• 品質管理
• ドキュメント管理
• プログラム管理
上流 下流
18
一般的なシステム開発
システム開発全体像
アプリケーション開発
インフラストラクチャ構築
• 基本設計
• 詳細設計
• 実装
• 単体テスト
• 結合テスト
• システムテスト
• ユーザ受け入れテスト
• 方式
• 非機能(性能/信頼性)
• OS
• ネットワーク
• ミドルウェア
運用
• リリース
• 移行
• 定常時運用
• 起動/停止
• 監視
• 障害時運用
• 代替運用
• 障害対応
• 復旧
保守
• 定期/緊急保守
• ハードウェア保守
• ソフトウェア保守
• ネットワーク保守
要件
• 経営戦略立案
• システム化計画
• 業務調査/分析
• 対象領域分析
• 個別システム化計画
プロジェクト管理
• スケジュール管理
• 要員管理
• 課題管理
• 品質管理
• ドキュメント管理
• プログラム管理
ITIL
開発方法論
開発技法
※SWEBOK
アプリケーション開発方法論
体系化されたアプリケーション開発のための指針
19
• アプリケーション開発の基本フロー
– 分析:開発対象はどのようなものか
– 設計:どのような構造にするか
– 実装:どうやって効率的かつ品質の高く作るか
• 開発方法論とは開発に要する
「方法」「手順」「手段」を体系化したもの
– 方法、プロセス、発想、視点、技術、ツール
• 分析方法/アーキテクチャ:
– POA / DOA / OOA
• プロセス観点:
– ウォーターフォール / 反復型 / アジャイル
20
開発方法論(開発メソドロジー)
アプリケーション開発に関する各種の「方法」「手順」「手段」を体系化して定義したもの
開発方法論
開発工程
要件 設計 実装 テスト
プロセス 分析方法 ツール
発想/視点 技術
分析 設計 実装
• システム化する対象の業務領域の
「捉え方」や「重要箇所」による分類
– 処理や機能を重要視
– データやその構造を重要視
– 業務に伴うデータと処理の抽象化を重要視
21
開発方法論: 分析方法/アーキテクチャ観点
システム化対象領域に対する視点や着目点による分類
システム化対象業務領域
業務処理に
注目
業務データに
注目
業務の
抽象化
プロセス指向アプローチ
データ指向アプローチ
オブジェクト指向アプローチ
Bシステム
Aシステム • 「システムが実現する機能」観点で
分析及び設計を実施する方法論
– 業務プロセスのプログラムを実装
– データは各プログラムに依存
– データの「入力」「加工」「出力」を記述
• HIPO
– 図式目次 / IPOダイアグラム
• DFD(データフローダイアグラム)
• 欠点
– サイロ化したシステムになる
– 冗長なプログラムが発生する
– データの不整合や重複が起こりやすい
22
プロセス指向アプローチ(POA)
業務の処理内容に着目した開発アプローチ
データプログラム
データプログラム
データプログラム
データプログラム
データは
各プログラムに依存
• 「システムを構成する安定要素」としての
データを基に分析及び設計する方法論
– 以下の観点でデータの整合性を重視
• 「最も重要なリソースはデータである」
• 「組織的に管理・活用する資産である」
– 「エンティティ」と「リレーション」で分析
• ER図
• プログラムとデータ構造の分離
– 重複や不整合のないデータモデリング
– プログラムのみの変更保守で済む事が多い
• 欠点
– データ構造を変更した場合の影響特定が困難
23
データ指向アプローチ(DOA)
システムを構成するデータの構造に着目した開発アプローチ
Aシステム
プログラム プログラム
Bシステム
プログラム プログラム
データ
オブジェクト • 「静的な構造」と「動的な振る舞い」に着
目して分析及び設計をする方法論
– オブジェクトを組み合わせて構築
– オブジェクトはデータ構造や処理内容を外部
から隠蔽(カプセル化)した単位
– オブジェクト間でメッセージを送受信して動作
– UMLにより構造を記述
• ユースケース図
• クラス図
• シーケンス図
24
オブジェクト指向アプローチ(OOA)
プロセス(振る舞い) と データ(属性)をまとめたオブジェクトを対象にした開発アプローチ
プログラム
[メソッド]
(振る舞い)
プログラム
[メソッド]
(振る舞い)
プログラム
[メソッド]
(振る舞い)
データ
(属性)
クラス
インターフェース
インターフェース
インターフェース
オブジェクト
• 各開発工程(ライフサイクル)の
手順化(プロセス化)の観点
– 開発工程は次のような選択肢がある
• BOK記載の規格(PMBOK、SWEBOK)
• ISO12207
• 商用プロセス
– 一般的には以下の工程となる
• 要求
• 設計
• 製造
• 検証
• 運用
– テーラリングし各プロジェクトに適用
25
開発方法論: プロセス観点
開発プロジェクトの種類や状況に応じた開発工程のモデル
• 上流工程から下流工程へ各工程の完了
を以て順次進める方法
– 各工程毎に計画や成果物を定義
– 前工程の成果物を各工程のインプット
• メリット
– 計画や管理を行いやすい
• 各工程の開始/終了規定が明確なため、期間や
要員計画をたてやすい
• 成果物に対する進捗管理が行いやすい
• デメリット
– 要求が不明瞭の場合の手戻りリスクがある
– 仕様変更による影響が大きい
26
ウォーターフォール・モデル
各工程の成果物の品質を担保する開発モデル
要求定義
設計
製造
検証
運用
QA
レビュー
• 開発初期に試作品の作成・評価・改善を
繰り返して要求確認を行う
– 要求仕様の確認や評価
– ユーザインターフェースの確定
– 性能の確認
• メリット
– 開発部門/利用部門との認識・解釈のずれや
曖昧さを取り除ける
– 開発者は技術的なポイントを予め確認可能
• デメリット
– 全体工数及び費用が肥大化する事がある
27
プロトタイプ・モデル
試作品を初期工程で作成し認識齟齬を確認する開発モデル
要求定義
設計
製造
検証
運用
プロトタイプ
作成
プロトタイプ
修正
プロトタイプ
評価
• ウォーターフォール/プロトタイプ型の長
所の組み合わせ
– 独立性の高い部分に分解し、ぞれぞれの部品
で開発工程を繰り返す方法
– 開発リスクの最小化を目的とし、リスクの評価
と改善しなが進める
• メリット
– 仕様変更に対応し易く、手戻りが発生しにくい
– 要件認識齟齬や設計ミスを早期発見できる
• デメリット
– 全体計画をたてにくい
• 開発単位の分割・見積もりが困難
• ユーザに仕様変更の余地を与えてしまう
28
スパイラルモデル
ウォータフォールモデルとプロトタイピングモデルの2つの長所を生かしたモデル
要求定義 設計
製造 検証
リリース
• 要求を複数に分割し順次開発・リリース
を繰り返して機能追加していく方法
– システムの要素を段階的に開発・追加
– 全ての機能が揃わなくても動作確認可能
– システム化範囲/リスク軽減手段/期間やコスト
/アーキテクチャ候補の検討と見直しを実施
• メリット
– 早期に必要なものからリリースできる
– 要求の確定しているものから着手可能
• デメリット
– 全体計画をたてにくい
29
反復モデル
短期間の開発プロセスを複数回実施して小さな機能単位で追加する開発モデル
要求定義
設計
製造
検証
要求定義
設計
製造
検証
要求定義
設計
製造
検証
リリース
リリース
反復
方向付
推敲
• 「手法」ではなく「原則・状態」
• 「アジャイルソフトウェア開発宣言」で提
唱される4つの価値(下記)と12の原則
(後述)
30
アジャイル
顧客との協調を重視した開発スタイル
要求定義
設計
製造
検証
要求定義
設計
製造
検証
要求定義
設計
製造
検証
リリース
リリース
レビュー
レビュー
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があること
を
認めながらも、私たちは右記のことがらにより価値をおく。
• 反復型開発
– 計画や管理を重視
– 当初要件や計画を遵守できるように、
品質、期間やリスクを反復毎に見直す
• アジャイル開発
– 開発成果物によるビジネス価値の向上を重視
– 開発体制(チーム)に顧客が定常的に参加し、
ビジネス状況の変化を汲み入れながら
成果物の完成を目指す
– 状況次第で初期計画時の成果物や期間など
変更が生じる
31
反復型開発とアジャイル開発の違い
計画重視:反復型開発 顧客重視:アジャイル開発
初期計画 期間 費用 成果物
反復 反復 反復 納品
初期計画
反復 反復 反復 納品
顧客
判断
ビジネス状況
の変化
反復型開発
アジャイル開発
アジャイルソフトウェア開発宣言:12の原則
1. 顧客満足を最優先し、価値のあるソフトウェアを早く継
続的に提供します。
2. 要求の変更はたとえ開発の後期であっても歓迎します。
変化を味方につけることによって、お客様の競争力を
引き上げます。
3. 動くソフトウェアを、2-3週間から2-3ヶ月というできるだ
け短い時間間隔でリリースします。
4. ビジネス側の人と開発者は、プロジェクトを通して日々
一緒に働かなければなりません。
5. 意欲に満ちた人々を集めてプロジェクトを構成します。
環境と支援を与え仕事が無事終わるまで彼らを信頼し
ます。
6. 情報を伝えるもっとも効率的で効果的な方法はフェイ
ス・トゥ・フェイスで話をすることです。
7. 動くソフトウェアこそが進捗の最も重要な尺度です。
8. アジャイル・プロセスは持続可能な開発を促進します。
一定のペースを継続的に維持できるようにしなければ
なりません。
9. 技術的卓越性と優れた設計に対する不断の注意が機
敏さを高めます。
10. シンプルさ(ムダなく作れる量を最大限にすること)が
本質です。
11. 最良のアーキテクチャ・要求・設計は、自己組織的な
チームから生み出されます。
12. チームがもっと効率を高めることができるかを定期的
に振り返り、それに基づいて自分たちのやり方を最適
に調整します。
32
4つの価値の背景にある様々な行動規範
アジャイル開発手法
手法名 内容
XP 10個程度の具体的なプラクティスを定義し、ドキュメントの整備よりも
ソースコードと開発者の責任を重視
スクラム アジャイルなプロジェクトを管理するためのフレームワーク
リーン・ソフトウェア開発 無駄を排除しプロジェクトのコストとROIの属性を焦点
機能駆動型開発(FDD) ビジネス・ドメイン・モデルの定義とその単位での開発
アダプティブシステム開発 (ASP) 継続的な適応を前提とし、Speculate/Collaborate/Learnのフェーズから成る
アジャイルユニファイドプロセス(AUP) リスク管理を徹底し、開発/推敲/構築/移行の各フェーズを反復する
クリスタル プロジェクトの規模と重大度によるアプローチの変更
動的システム開発手法(DSDM) ビジネスユーザ視点による開発手法で予算と期日を重視する
カンバン タスクを可視化し、チームメンバーに適量のタスクを与えて、チームが常に
フル稼働で作業できるようにする
33
アジャイルな原則に基づく様々な開発手法
• 開発プロジェクト=不確実性のある作業
– 開発手法は不確実性に対する戦略
– 開発プロジェクトの不確実性(リスク)
• 要求リスク(要件誤認 / 仕様変更 / スコープ増大)
• 技術リスク(製品不具合 / 性能,拡張性など非機能)
• 要員リスク(適用技術経験がない、足らない)
• 開発プロジェクトの制約に対する対処
– 制約:「要求(スコープ)」「リソース(人)」「納期」
34
従来型開発とアジャイル開発の考え方の違い
VUCA時代の開発
確実な未来
選択的な未来
一定幅の未来
不確実な未来
計画可能な事は
計画して実施
計画不可な事は
確認しながら
変化に対応して
実施
予測
(計画駆動)
反復・適応
(変化駆動)
ウォーター
フォール
アジャイル
要求
リソース 納期
リソース 納期
要求
計画
駆動
変化
駆動
固定された
見積もられた
• アジャイル開発は「する」のではない
– 手法の適用が目的ではない
• イテレーション開発する事がアジャイルではない
– ツールの利用が目的ではない
• テスト自動化ツールを使う事がアジャイルではない
• ビジネスをアジャイル(俊敏・鋭敏)な
状態にする事が目的
35
アジャイル開発に対する誤解
Don’t just do agile. Be agile.
目的と目標・手段を取り違えている
• DevOps 対する誤解
– アジャイル開発をする事ではない
– CI/CDを行う事ではない
– Infrastructure as Code を行う事ではない
– 定義されている開発手法ではない
• DevOps のコンセプト
– チーム間の隔たりをなくし、
迅速かつ継続的にアプリケーションを
開発・改善していく事
36
DevOps と アジャイル開発
DevOps ≠ アジャイル開発
要求定義
設計
製造
検証
開発 (Dev) 運用 (Ops)
ビジネス部門 (Biz)
• アジャイル開発が導入されているケース
– 製品開発 / 内製チームによる開発
• アジャイル開発の導入が困難なケース
– スコープとスケジュールが必要な契約
– 成果物の納品が必要
– 全社開発方針が定められ変更が困難
– 準委任契約を短期・複数回行う余裕がない
• 請負契約と準委任契約
37
アジャイル開発と契約
日本で受け入れられにくいアジャイル開発
人
物
金
• 階層的な組織構造
• 明確にルール付けされた行動
• 対立の回避
• チャレンジや失敗の回避
• 巨大なモノリシックな組織と
モノリシックなアプリケーション
• 内製より委託
• 仕様と納期を重視した契約(請負契約)
• 契約に要する時間と工数
一括請負契約 準委任契約
完成責任 あり なし
瑕疵責任 あり なし
報酬 検収後に一括 一定期間毎
• 開発のアウトソーシングが課題
– 開発委託先との契約の仕方
• 請負契約から基本/個別契約や組合モデル
• ユーザ企業内での契約ルールの変更
• 納品成果物等のルール変更
– 開発ベンダ内での開発手法の確立
• プロセス/メソドロジー/ツール
• 社内プロジェクト承認プロセス
– クオリティティ/リスク アシュアランス
– コンティンジェンシープラン
– 欧米型開発モデルの推進
• 内製化
38
アジャイル開発の展開
アプリケーション開発に対する取り組みの変化が重要
IT戦略
プロジェクト
戦術
アジャイルな
ビジネス価値創造
アジャイルな開発
アジャイルな運用
アプリケーション開発工程(プロセス)
アプリケーションの要件から開発成果物の運用までのライフサイクル
39
• 開発工程
– アプリケーション開発で実施する
処理と手順を体系化/形式化したもの
• 各処理の作業内容の定義
• 各処理で出力する仕様やドキュメントなどの
成果物の定義
40
“アプリケーション開発工程”とは
要求定義から運用保守までの一連の工程
要求/要件
定義
設計
製造
検証
運用
要求分析/定義
システム要件定義
方式設計
基本設計
詳細設計
実装
単体テスト
統合テスト
システムテスト
受け入れテスト
移行
運用
• 顧客要求とシステム要件を明確化
• 要求分析/要求定義
– ビジネス施策
• 企業価値を高めるために必要な取り組み
• 要件分析/要件定義
– システム化要件
• ビジネス施策の達成手段としてのシステム化
41
要求定義
顧客の要求とシステム化の要件を業務/機能の観点で明確化
要求
ビジネス価値を高めるための施策
要件
システム化するため要する範囲や機能
システム
人
• 基本設計
– 顧客のニーズ通りにシステム化される事を
基本設計内容を基に承認・合意を得る
• 顧客のビジネス戦略や状況の理解が必要
– 動的な仕様と静的な仕様を記述
• 動的: 業務の流れや手順
• 静的: データの入出力や画面/帳票のレイアウト
– アーキテクチャパターン
• 詳細設計
– 外部設計の仕様を満たす事を検証・確認
• プログラム実装ミスを未然に防止
• モジュールの再利用を検討
– デザインパターン/アルゴリズム
42
設計
要件を実現するためのデータや処理方式の定義
基本設計
システム化要件の具体化(for 顧客)
詳細設計
実現方法の具体化(for 開発者)
業務
フロー図
UI
設計書
機能
設計書
非機能
設計書
データ
設計書
N/W
設計書
機能
設計書
イベント
設計書
開発
方針書
コード
規約
データ
設計書
UT計画
• ソースコード開発
– 詳細設計の仕様に基づくモジュール開発
– 開発規約に基づくコーディングスタイル
• 単体テスト
– ホワイトボックステスト
• プログラムの制御構造を意識したテスト
– 単体テストツールの利用
• 容易に自動かつ繰り返しテスト実施が可能
• テストコードの開発を要する
– コーディング規約ツールの利用
• コーディングスタイルの自動判定
• 潜在バグを埋め込むコードの発見
43
製造
設計に従いプログラム言語による実装及び単体テストの実施
ソースコード開発
設計仕様/開発規約に基づいたソースコード開発
単体テスト
プログラムの制御構造やロジックの正常性検証
ソース
コード
スタブ
命令
網羅
ソース
レビュー
テスト
データ
ドライバ
バグ
対応
分岐
網羅
条件
網羅
テスト
項目
テスト
コード
テスト
レビュー
• 統合テスト
– ブラックボックステスト
• 制御構造を意識せず、モジュール間/コンポーネント間/
サブシステム間の I/F 入出力の正常性をテスト
– 継続的インテグレーション/デプロイの利用
• システムテスト
– 性能テスト
– ストレステスト
– ロングランテスト
– 障害テスト
– 受け入れテスト
44
検証
要件及び設計を満たす動作である検証
統合テスト
インターフェースを経由した連携の正常性検証
システムテスト
実際のシステム稼働を想定した検証
モジュールサブシステム コンポーネント
モジュールコンポーネントサブシステム
モジュールコンポーネント
性能 信頼性 可用性
ユーザー
利用
運用
• 運用
– システムを安全かつ正常に稼働させ続けるた
めの作業工程
– 継続的に改善活動を実施
– ITILの利用
45
運用
アプリケーションの一般公開と安全に稼働するための監視及び保守
運用
管理 監視
保守
更新 移行
評価
障害
対応
対策
プログラム言語
多種多様な開発言語
46
47
様々なプログラム言語の系統
プログラム言語の系図
20201960 1970 1980 1990 2000 2010
Fortran
COBOL
LISP
PL/I
Smalltalk
C C++ Java
C#
Java5 Java8Algol
Scheme Rust
ML Caml OCaml
Haskel
Pascal Python
RubyPerl
Go
Swift
Scala
Groovy
• プログラム言語の型
データや関数の種類を分類するためのもの
– 動的型付け
• 実行時に型が決定
– 静的型付け
• コンパイル時に型が決定
– 強い型付け
• ある処理・演算が間違った型の引数をとることを禁止
• 1+1=2, 1.0+1.0=2.0 のように1と1.0は別の値として扱う
– 弱い型付け
• 言語が型の暗黙的な変換(またはキャスト)
• ‘A’+1=‘A1’ のように暗黙的な値のあ使い方の変更
48
動的型付けと静的型付け
プログラム言語の性質を位置づける型システム
動的 静的
強い型
弱い型
Java
Scala
Haskel
C#
C
C++
Ruby
Groovy
Python
Clojure
PHP
JavaScript
Perl
VB
• プログラミング・パラダイム
– 命令型
• プロセッサに対する命令を記述
– 宣言型
• 対象の性質を宣言
– 手続き型
• 命令型と同義
• 構造化プログラミング
• 手続きをいくつかの単位に分け、サブルーチンによって
細部を記述していく方法
– 関数型
• 複数の式を関数の適用によって組み合わせていく方法
– 関数が第一級オブジェクト
(基本的な操作を制限なしに使用できる対象)
– 論理型(述語論理式)
49
プログラミング・パラダイム
プログラミングの方針に関する考え方による分類
宣言型言語 命令型言語
手続き型
言語
論理型
言語
関数型
言語
オブジェクト指向型言語
Java
C++
Scala
JavaScript
Haskel C
Prolog
手続き型
オブジェクト指向プログラミング構造化プログラミング
50
開発方式の変遷
アプリケーション開発の歴史
20201970 1980 1990 2000 2010
メインフレーム クライアントサーバ インターネット クラウド
関数型プログラミング
COBOL C Go
オブジェクト指向C++ Java C#
関数型ScalaLISP Haskel
プロセス指向アプローチ
データ指向アプローチ
オブジェクト指向アプローチ
Java
Java SE / Java EE
51
• Java
– 狭義:プログラム言語 Java
– 広義:言語仕様を含む Java 自体の実行環境
• Java に関するターミノロジー
– Java SE (Java Platform, Standard Edition)
– Java EE (Java Platform, Enterprise Edition)
– JVM (Java Virtual Machine)
• ネイティブ環境と Java 命令セットの差異を吸収
– JRE (Java Runtime Environment)
• API/JVMを内包するJava実行のために必要な最小セット
– JDK (Java Development Kit)
• JREを内包するJavaのコンパイラで開発時に必要
52
Java
Java SE と Java EE
Java EE
Java SE 標準的な機能を
提供するAPIの集合
標準的なサーバサイド
アプリケーションのための
APIの集合
Java EE は、Java SE のAPI
により実装されている
JVM
(Java 仮想マシン)
JDK
(Java Development Kit)
JRE
(Java Runtime Environment)
53
エンタープライズ・システムを開発するための標準フレームワーク
Java EE
データベース
MOM
ディレクトリサービス
メールサーバ
レガシーシステム
プレゼンテーション層 ビジネスロジック層 データアクセス層
Servlet
JSP
JSF
JAX-RS
JAX-WS
EJB
CDI
JBatch
JTA
JDBC
JMS
JNDI
JavaMail
JCA
Java EE
54
エンタープライズ・システムを開発するための標準フレームワーク
Java EE
データベース
MOM
ディレクトリサービス
メールサーバ
レガシーシステム
プレゼンテーション層 ビジネスロジック層 データアクセス層
Servlet
JSP
JSF
JAX-RS
JAX-WS
EJB
CDI
JBatch
JTA
JDBC
JMS
JNDI
JavaMail
JCA
Java EE
クライアントからの
リクエストを受けて
スレッドで処理
Servletの画面描画
をHTML的に記述
UIコンポーネント
ベースの
フレームワーク
RESTによる
サービス公開
SOAPによる
サービス公開
トランザクションや
セキュリテイ制御
等の機能を提供
オブジェクトの
生成や取得の
タイミングを制御
バッチ処理用
フレームワーク
トランザクションの
管理
Java EE 7
• Web Application
Technologies
– Java API for WebSocket
– Java API for JSON
Processing
– Java Servlet 3.1
– JavaServer Faces 2.2
– Expression Language
3.0
– JavaServer Pages 2.3
– Standard Tag Library for
JavaServer Pages 1.2
• Enterprise Application
Technologies
– Batch Applications for
the Java Platform
– Concurrency Utilities
for Java EE 1.0
– Contexts and
Dependency Injection
for Java 1.1
– Dependency Injection
for Java 1.0
– Bean Validation 1.1
– Enterprise JavaBeans
3.2
– Interceptors 1.2
– Java EE Connector
Architecture 1.7
– Java Persistence 2.1
– Common Annotations
for the Java Platform
1.2
– Java Message Service
API 2.0
– Java Transaction API 1.2
– JavaMail 1.5
• Web Services
Technologies
– Java API for RESTful
Web Services 2.0
– Implementing
Enterprise Web
Services 1.3
– Java API for XML-Based
Web Services 2.2
– Web Services Metadata
for the Java Platform
– Java API for XML-Based
RPC 1.1
– Java APIs for XML
Messaging 1.3
– Java API for XML
Registries 1.0
• Management and
Security Technologies
– Java Authentication
Service Provider
Interface for Containers
1.1
– Java Authorization
Contract for Containers
1.5
– Java EE Application
Deployment 1.2
– J2EE Management 1.1
– Debugging Support for
Other Languages 1.0
• Java EE-related Specs in
Java SE
– Java Architecture for
XML Binding 2.2
– Java API for XML
Processing 1.3
– Java Database
Connectivity 4.0
– Java Management
Extensions 2.0
– JavaBeans Activation
Framework 1.1
– Streaming API for XML
1.0
55
Java EE 7 仕様一覧
J2EE 1.3
CMP
JCA
堅牢性
スケーラブル
J2EE 1.4
JAX-RPC
Deployment
Webサービス
Java EE 5
Annotations
EJB 3.0
JPA
JSF
JAXB
JAX-WS
開発容易性
Java EE 6
JAX-RS
CDI
Servlet 3.0
Web Profile
Pruning
軽量化
1999 2001 2003 2006 2009 2013
Java EE 7
JAX-RS 2.0
JSON-P
WebSocket
JMS 2.0
Batch
生産性 & HTML5
J2EE 1.2
Servlet
JSP
EJB
JMS
エンタープライズ
アプリケーション
Java EE 8 – The Next Step
Java EE 8
Servlet 4.0
JAX-RS 2.1
JSON-B
JSON-P 1.1
Security
モダナイゼーション
シンプル化
2017

More Related Content

Similar to Application Development Oveview

第5回SIA研究会(例会)プレゼン資料
第5回SIA研究会(例会)プレゼン資料第5回SIA研究会(例会)プレゼン資料
第5回SIA研究会(例会)プレゼン資料
Tae Yoshida
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
Developers Summit
 
定量的プロジェクト管理ツール概要 Lt 20110730
定量的プロジェクト管理ツール概要 Lt 20110730定量的プロジェクト管理ツール概要 Lt 20110730
定量的プロジェクト管理ツール概要 Lt 20110730
hiroetoh
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.
hirano
 

Similar to Application Development Oveview (20)

第5回SIA研究会(例会)プレゼン資料
第5回SIA研究会(例会)プレゼン資料第5回SIA研究会(例会)プレゼン資料
第5回SIA研究会(例会)プレゼン資料
 
Devlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのかDevlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのか
 
なぜ、現状の基幹業務システムは、ビジネス環境の変化に迅速に対応できないのか? ~超高速開発ツールの導入が必然である理由~
なぜ、現状の基幹業務システムは、ビジネス環境の変化に迅速に対応できないのか? ~超高速開発ツールの導入が必然である理由~なぜ、現状の基幹業務システムは、ビジネス環境の変化に迅速に対応できないのか? ~超高速開発ツールの導入が必然である理由~
なぜ、現状の基幹業務システムは、ビジネス環境の変化に迅速に対応できないのか? ~超高速開発ツールの導入が必然である理由~
 
鷲崎 メトリクスの基礎とGQM法によるゴール指向の測定 2014年12月18日 日本科学技術連名SQiP研究会 演習コースI ソフトウェア工学の基礎
鷲崎 メトリクスの基礎とGQM法によるゴール指向の測定 2014年12月18日 日本科学技術連名SQiP研究会 演習コースI ソフトウェア工学の基礎鷲崎 メトリクスの基礎とGQM法によるゴール指向の測定 2014年12月18日 日本科学技術連名SQiP研究会 演習コースI ソフトウェア工学の基礎
鷲崎 メトリクスの基礎とGQM法によるゴール指向の測定 2014年12月18日 日本科学技術連名SQiP研究会 演習コースI ソフトウェア工学の基礎
 
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
 
アンケートシステムをm3.comから独立させる
アンケートシステムをm3.comから独立させるアンケートシステムをm3.comから独立させる
アンケートシステムをm3.comから独立させる
 
業者に騙されないデジタルアーカイブシステム開発、デジタル化の調達のために
業者に騙されないデジタルアーカイブシステム開発、デジタル化の調達のために業者に騙されないデジタルアーカイブシステム開発、デジタル化の調達のために
業者に騙されないデジタルアーカイブシステム開発、デジタル化の調達のために
 
ソフトウェア工学における問題提起と機械学習の新たなあり方
ソフトウェア工学における問題提起と機械学習の新たなあり方ソフトウェア工学における問題提起と機械学習の新たなあり方
ソフトウェア工学における問題提起と機械学習の新たなあり方
 
定量的プロジェクト管理ツール概要 Lt 20110730
定量的プロジェクト管理ツール概要 Lt 20110730定量的プロジェクト管理ツール概要 Lt 20110730
定量的プロジェクト管理ツール概要 Lt 20110730
 
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and ArchitectureMachine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.
 
20160927_守るべきは、大量の情報資産を管理するデータベース! ~ユーザ事例から見るデータベースのセキュリティ対策~ by 株式会社インサイトテクノ...
20160927_守るべきは、大量の情報資産を管理するデータベース! ~ユーザ事例から見るデータベースのセキュリティ対策~ by 株式会社インサイトテクノ...20160927_守るべきは、大量の情報資産を管理するデータベース! ~ユーザ事例から見るデータベースのセキュリティ対策~ by 株式会社インサイトテクノ...
20160927_守るべきは、大量の情報資産を管理するデータベース! ~ユーザ事例から見るデータベースのセキュリティ対策~ by 株式会社インサイトテクノ...
 
Agile meets BABOK
Agile meets BABOKAgile meets BABOK
Agile meets BABOK
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
 
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
 
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.120160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
 
組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング
 

Recently uploaded

Recently uploaded (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Application Development Oveview