「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>開発ツール]]

* 目次 [#vdb51828]
#contents

*概要 [#c2d64c21]
開発支援ツールには色々なものがあるが、分類は[[参考>#md49fd9e]]にまとめた。
開発支援ツールには色々なものがあり、分類は[[参考>#md49fd9e]]にまとめた。

*トレンド [#qedb1c0c]
開発支援ツールには、昨今、以下のようなトレンドがある。

**世界的には、 [#q4573886]
ITビッグ5などがリリースする開発ツールの殆どは以下の特性を持っている。
-[[IDE>開発支援ツールの種類#b818d91a]]であり、柔軟性と汎用性が高い。
ITビッグ 5( Microsoft, Apple, Amazon, Oracle, etc. )など~
がリリースする開発ツールの殆どは以下の特性を持っている。
-[[IDE>開発支援ツールの種類#b818d91a]]であり、柔軟性と汎用性が非常に高い。
-[[設計情報(デザイナ操作、スキーマ定義)型の自動生成方式>開発支援ツールの自動生成方式#fe4a7148]]が採用されている。

これらの動向を見ると、自社のプラットフォームを利用させるための~
IDEを中心とした開発ツールに大きな投資を行い、大きな投資対効果を期待していることが解る。
[[IDE>開発支援ツールの種類#b818d91a]]周辺の動向を見ると、自社のプラットフォームを利用させるための~
[[IDE>開発支援ツールの種類#b818d91a]]を中心とした言語・ライブラリ・開発ツールのエコシステムに、~
非常に大きな投資を行い、大きな投資対効果を期待していることが解る。

**日式SIer的には、 [#n91ce970]
-その一方、日本のSI事業者では、「業務システム開発」の作業を単純作業化する志向が強い。

***[[EUC、RADツール>開発支援ツールの種類#fb3f61c9]] [#p5cb4d9f]
-EUC向けの差別化を行っているため、SI事業に適合しない。
-故に、商材として担いでいるケースはあるが、自事業で利用することは殆ど無い。

***[[統合CASEツール>開発支援ツールの種類#xb5fa00b]] [#abb347ae]

-その一方、日本のSI事業者では、~
「業務システム開発」の作業を単純作業化する志向が強い。

-そのため、「業務システム開発」に特化した、
--標準化
--共通化
--自動生成
---[[リポジトリから自動生成>開発支援ツールの自動生成方式#ed279100]]
---[[(Excelなど)設計書型から自動生成>開発支援ツールの自動生成方式#fe4a7148]]

>を行うためのツールが多数開発されてきた。
--[[統合CASEツール>開発支援ツールの種類#xb5fa00b]]

--その他、以下を行うためのツール
---標準化
---共通化
---自動生成~
[[リポジトリから自動生成>開発支援ツールの自動生成方式#ed279100]]~
[[(Excelなど)設計書型から自動生成>開発支援ツールの自動生成方式#fe4a7148]]

>が多数開発されてきた。

-しかし、多様化の時代に、これらのツールは衰退の一途を辿っている。

--これらのツールは柔軟性と汎用性が低く、多様化するアーキテクチャに追随できない。
--これらのツールは柔軟性と汎用性が低く、~
多様化するアーキテクチャに追随できない。

--多様化の時代、エンジニアの価値は右肩上がりだが、~
自身の価値を高めないツールをエンジニアが積極的に習得しない。

**その他、 [#xc2f3a64]
***EUCツールや、RADツール [#p5cb4d9f]
開発は継続されているが、強力なIDEとの競争に晒されている。
--ベンダ目線でできている。

***テンプレート & 最小限のライブラリ [#o75389df]
上記を鑑みると、
---従って、エンド・ユーザ目線でできていない。~
(ベンダ内でも案件向けサポートが必要なケースが多い)

ドメインに特化した開発効率の向上施策は、~
テンプレート & 最小限のライブラリが最善と解る。
-[[Open棟梁>http://opentouryo.osscons.jp/]]は、初期からこの設計思想で開発されている。
-TERASORUNAは、v5.0からこの方式に変わっているもよう。~
---このため、導入の際に、~
「過去にx社のツールに辛酸なめさせられた。」~
的なエンド・ユーザの経験を聞くことがある。

***テンプレートとパッケージ [#o75389df]
-業務システム開発に特化した開発効率の向上施策は、
--[[IDE>#q4573886]]ベースのテンプレートと
--パッケージ(最小限のフレームワーク & ライブラリ)

>が現代のベストプラクティスとなってきている。

-パッケージは、NuGetなどのパッケージ・マネージャー経由で取得する。

-テンプレートには以下の役割がある。
--プロジェクト構成や(、パッケージ・マネージャーで)、下位スタックを決定する。
--[[DI]] & [[AOP]] や OOPの技術を使用して、共通化とその呼出を行う。

-事例
--[[Open棟梁>http://opentouryo.osscons.jp/]]は、初期からこの設計思想で開発されている。~
また、[[IDE>#q4573886]]と同様に、[[設計情報(デザイナ操作、スキーマ定義)型の自動生成方式>開発支援ツールの自動生成方式#fe4a7148]]を採用している。

--TERASORUNAは、v5.0からこの方式に変わっているもよう。~
※ TERASORUNAでは、テンプレートをブランク・プロジェクト呼んでいる。

これらの物品は、独自開発部分は、対象規模が大きくなると、SI事業の商習慣上、逆に薄くなる傾向がある。~
(ビッグ・アカウントの場合、力関係でフル・スクラッチを強要されるケースがあるため)
-参考

-参考
--Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3~
https://www.slideshare.net/jjug/javaspringterasoluna-jjugccc-cccf3

***Dry (Don't repeat yourself) [#gbdb10f2]
観測範囲では、
***機能スタック [#k6861def]
以下のように構成される。
-下位スタック:[[ランタイム・フレームワーク>フレームワークの機能について。]]
-上位スタック:開発支援ツール、[[開発基盤>https://opentouryo.osscons.jp/index.php?%E9%96%8B%E7%99%BA%E5%9F%BA%E7%9B%A4%E3%81%A8%E3%81%AF]]など。

Webやフリーランス界隈では、Dryが尊ばれている用に見えるが、~
「Dryで書いたものが負債になっていく」という発言もあり、
*導入時の考慮点 [#r9c3e3ec]

https://twitter.com/mizchi/status/959297746908856320
**技術面 [#n874445c]

-小規模なスクラップ・アンド・ビルド案件が、
-大規模化して維持・保守が必要になった場合、
***[[KPIとKGI>https://opentouryo.osscons.jp/index.php?%E9%96%8B%E7%99%BA%E5%9F%BA%E7%9B%A4%E3%81%AEKPI%E3%81%A8KGI]](Open 棟梁 Wiki) [#n213c992]
KGI(QCDF向上)を達成するためのKPIの達成度合い。

標準化・共通化などのコントロールが必要になり、~
***その他 [#i659aa89]

>Dry
-Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita~
https://qiita.com/tmknom/items/08b69594e32a92bccee5

では、対応できなくなるものと思われる。
**非技術面 [#sf3691d2]

***信頼性(やり切ってくれるか?) [#t94a23bd]
SI案件は規模、契約価格が大きくリスクが高いので、~
サポート・エンジニアは最後までやり切ってくれないと厳しい。

-サポート力
--セルフ・サポート・コンテンツの充実度合い
--オンライン or オンサイトのサポート力
---緊急の対応に応じることができるか(バグ対応、仕様拡張)?

-セルフ・サポート可能か?
--要求事項の実現に支障を与えるような制限事項は無いか?
--案件独自のカスタマイズが可能か?(OSSであること)

***プロダクトのライフサイクル [#c9b8401b]
数画面のアプリケーション開発と異なり、多数の業務画面を持つ大規模なプロダクトでは、~
開発支援ツール、[[開発基盤>https://opentouryo.osscons.jp/index.php?%E9%96%8B%E7%99%BA%E5%9F%BA%E7%9B%A4%E3%81%A8%E3%81%AF]]のライフサイクルは長くなければならない。

-コミュニティの継続性
-後方互換性の維持

***, etc. [#se43b1d2]
思い付いたら追加します。

**STP [#obb9fb87]

***STPとは [#m15997ac]
開発技術、開発支援ツール選定をする上で、[[STPマーケティング>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?STP%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0]]の

-セグメンテーション(segmentation、セグメント化)
-ターゲティング(targeting、ターゲット選定)
-ポジショニング(positioning、ポジションの明確化)

ST(セグメンテーション・ターゲティング)ぐらいは、[[技術面>#n874445c]]、[[非技術面>#sf3691d2]]含め考えたほうが良い。~

※ [[STPマーケティング>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?STP%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0]]はマーケティング用語

***STPの例 [#ge8ac874]
-例えば、[[前述の「HTML/CSS/JavaScript」は>#ae5ae778]]、~
HTMLを修飾したり、Googleの広告系の処理を埋め込んだりと、~
そのような用途に最適化されているプログラム言語なので、~
UI、業務処理開発と汎用的に適合するか?と言えばそうではない。

--@mizchiさんのツイート:~
https://twitter.com/mizchi/status/957851145531043840
--そもそも、汎用的であれば「[[AltJS>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#d11cd6c3]]」は登場していないものと思われる。

-特にエンタープライズ分野では、このような問題が解決され、~
成熟したタイミングで、やっと利用できるようになることが多い。

**内部リンク [#q17dfb30]

***[[開発支援ツールの種類]] [#x05f3b2a]

***[[開発支援ツールの自動生成方式]] [#f2cb790e]

*参考 [#md49fd9e]

**[[開発支援ツールの種類]] [#x05f3b2a]
**OSSコンソーシアム [#o3a128e8]

**[[開発支援ツールの自動生成方式]] [#f2cb790e]
***Wiki [#r15e4650]
-[[Open棟梁>https://opentouryo.osscons.jp/]]
--[[ランタイム・フレームワーク>https://opentouryo.osscons.jp/index.php?%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%BB%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF]]
--[[プロジェクト・テンプレート>https://opentouryo.osscons.jp/index.php?%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%BB%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88]]
--[[開発基盤>https://opentouryo.osscons.jp/index.php?%E9%96%8B%E7%99%BA%E5%9F%BA%E7%9B%A4%E3%81%A8%E3%81%AF]]

**開発基盤の必要性 [#n8ffdb60]
スクラッチが良い場合と悪い場合があり、
-[[開発基盤部会>https://dotnetdevelopmentinfrastructure.osscons.jp/]]
--[[オレオレ・フレームワーク>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%82%AA%E3%83%AC%E3%82%AA%E3%83%AC%E3%83%BB%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF]]
--[[言語等に依存しない汎用開発支援ツール>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E8%A8%80%E8%AA%9E%E7%AD%89%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%84%E6%B1%8E%E7%94%A8%E9%96%8B%E7%99%BA%E6%94%AF%E6%8F%B4%E3%83%84%E3%83%BC%E3%83%AB]]
--[[ノーコード・ローコード>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%83%8E%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AD%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89]]

***Blog [#a985b64f]
-開発支援ツールとは? その種類と特徴を、まめてみした。~
https://www.osscons.jp/jowaxn8yr-537/
>そもそも、開発支援ツールとは?

-自動生成 ⇔ ランタイム・ライブラリ~
という開発基盤の方式変遷の話。~
https://www.osscons.jp/jo2blwgfh-537/
>開発基盤の方式変遷の話、最近は、~
リポジトリやExcel設計書からの自動生成が廃れ気味です。

-本質的なエンジニアリング・ツール?~
テンプレートについて再考する。~
https://www.osscons.jp/josbadhor-537/
>最近は「 IDE + テンプレート + パッケージ」方式が強力。

-最近重宝している開発環境、ツール、ライブラリなどの紹介~
https://www.osscons.jp/jo0gmt3qu-537
>最近重宝している開発環境、ツール、ライブラリなどの紹介します。

-統合CASEツールの類は何故、廃れたのか?~
https://www.osscons.jp/joeii3bn2-537/
>技術トレンドと、開発支援ツールの盛衰の一例。

-そろそろノーコード・ローコードについて言及しておく。~
https://www.osscons.jp/jonn28s49-537/
>最近流行りのノーコード・ローコード、RPAと同じで、新しいモノではない。

**その他、開発基盤の必要性 [#n8ffdb60]

***高品質・高信頼性 [#oc91e4eb]
-個人情報漏洩させたらこうなった - vol. 02 - 648 blog~
http://www.kyamaneko.com/entry/personal-information-outflow-02
>「ひでえ。DBアクセスのところ、フレームワーク無視してる……」~
そう。問題の箇所においては、コーディングルールが守られていなかったため、~
SQLインジェクションを許してしまっていたのだ。~
※ &color(red){規約の遵守にフレームワークは有用だが無視されたら無効。};

***超高速な開発ができるわけ [#l4739469]
-超高速な開発ができるわけ | Yakst~
https://yakst.com/ja/posts/4668

>「10倍の生産性での開発」が適合する場合と、しない場合があり、~
実験的プロトタイプ、本番アプリケーションを区別することが重要である模様。~
※ 冒頭にあるように「開発者の話ではなく、状況(前提条件)が大きなカギ」らしい。
※ &color(red){冒頭にあるように「開発者の話ではなく、状況(前提条件)が大きなカギ」らしい。};

***プロセス / 手法 / ツール [#c23088ad]
-最新システムエンジニアリング情報館~
http://se.rdy.jp/importance.html
--システムエンジニアリング概要 > プロセスと手法の関係~
http://se.rdy.jp/process.html
     [プロセス]
 活用↓↑サポート
     [手法]
 活用↓↑サポート
     [ツール]★★

--システムエンジニアリング

---ハードウェアやソフトウェアにかかわらず、~
システムを開発する[[エンジニアリング>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E6%8A%80%E8%A1%93#p4ccdf68]]。

---&color(red){ツールは「エンジニアリング」を補完する。};

----
Tags: [[:.NET開発]], [[:ツール類]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS