「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>開発ツール]] * 目次 [#vdb51828] #contents *概要 [#c2d64c21] 開発支援ツールには色々なものがあり、分類は[[参考>#md49fd9e]]にまとめた。 *トレンド [#qedb1c0c] 開発支援ツールには、昨今、以下のようなトレンドがある。 **世界的には、 [#q4573886] ITビッグ 5( Microsoft, Apple, Amazon, Oracle, etc. )など~ がリリースする開発ツールの殆どは以下の特性を持っている。 -[[IDE>開発支援ツールの種類#b818d91a]]であり、柔軟性と汎用性が非常に高い。 -[[設計情報(デザイナ操作、スキーマ定義)型の自動生成方式>開発支援ツールの自動生成方式#fe4a7148]]が採用されている。 [[IDE>開発支援ツールの種類#b818d91a]]周辺の動向を見ると、自社のプラットフォームを利用させるための~ [[IDE>開発支援ツールの種類#b818d91a]]を中心とした言語・ライブラリ・開発ツールのエコシステムに、~ 非常に大きな投資を行い、大きな投資対効果を期待していることが解る。 **日式SIer的には、 [#n91ce970] ***[[EUC、RADツール>開発支援ツールの種類#fb3f61c9]] [#p5cb4d9f] -EUC向けの差別化を行っているため、SI事業に適合しない。 -故に、商材として担いでいるケースはあるが、自事業で利用することは殆ど無い。 ***[[統合CASEツール>開発支援ツールの種類#xb5fa00b]] [#abb347ae] -その一方、日本のSI事業者では、~ 「業務システム開発」の作業を単純作業化する志向が強い。 -そのため、「業務システム開発」に特化した、 --[[統合CASEツール>開発支援ツールの種類#xb5fa00b]] --その他、以下を行うためのツール ---標準化 ---共通化 ---自動生成~ [[リポジトリから自動生成>開発支援ツールの自動生成方式#ed279100]]~ [[(Excelなど)設計書型から自動生成>開発支援ツールの自動生成方式#fe4a7148]] >が多数開発されてきた。 -しかし、多様化の時代に、これらのツールは衰退の一途を辿っている。 --これらのツールは柔軟性と汎用性が低く、~ 多様化するアーキテクチャに追随できない。 --多様化の時代、エンジニアの価値は右肩上がりだが、~ 自身の価値を高めないツールをエンジニアが積極的に習得しない。 --ベンダ目線でできている。 ---従って、エンド・ユーザ目線でできていない。~ (ベンダ内でも案件向けサポートが必要なケースが多い) ---このため、導入の際に、~ 「過去にx社のツールに辛酸なめさせられた。」~ 的なエンド・ユーザの経験を聞くことがある。 ***テンプレートとパッケージ [#o75389df] -業務システム開発に特化した開発効率の向上施策は、 --[[IDE>#q4573886]]ベースのテンプレートと --パッケージ(最小限のフレームワーク & ライブラリ) >が現代のベストプラクティスとなってきている。 -パッケージは、NuGetなどのパッケージ・マネージャー経由で取得する。 -テンプレートには以下の役割がある。 --プロジェクト構成や(、パッケージ・マネージャーで)、下位スタックを決定する。 --[[DI]] & [[AOP]] や OOPの技術を使用して、共通化とその呼出を行う。 -事例 --[[Open棟梁>http://opentouryo.osscons.jp/]]は、初期からこの設計思想で開発されている。~ また、[[IDE>#q4573886]]と同様に、[[設計情報(デザイナ操作、スキーマ定義)型の自動生成方式>開発支援ツールの自動生成方式#fe4a7148]]を採用している。 --TERASORUNAは、v5.0からこの方式に変わっているもよう。~ ※ TERASORUNAでは、テンプレートをブランク・プロジェクト呼んでいる。 -参考 --Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3~ https://www.slideshare.net/jjug/javaspringterasoluna-jjugccc-cccf3 ***機能スタック [#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]]など。 *導入時の考慮点 [#r9c3e3ec] **技術面 [#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] -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マーケティング>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]]はマーケティング用語 ***例 [#ge8ac874] -例えば、[[前述の「HTML/CSS/JavaScript」は>#ae5ae778]]、~ HTMLを修飾したり、Googleの広告系の処理を埋め込んだりと、~ そのような用途に最適化されているプログラム言語なので、~ UI、業務処理開発と汎用的に適合するか?と言えばそうではない。 --@mizchiさんのツイート:~ https://twitter.com/mizchi/status/957851145531043840 --そもそも、汎用的であれば「[[AltJS>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#d11cd6c3]]」は登場していないものと思われる。 -特にエンタープライズ分野では、このような問題が解決され、~ 成熟したタイミングで、やっと利用できるようになることが多い。 *参考 [#md49fd9e] **内部リンク [#q17dfb30] ***[[フレームワークの機能について。]] [#udd40935] ***[[開発支援ツールの種類]] [#x05f3b2a] ***[[開発支援ツールの自動生成方式]] [#f2cb790e] **OSSコンソーシアム [#o3a128e8] ***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?%E9%96%8B%E7%99%BA%E5%9F%BA%E7%9B%A4%E3%81%A8%E3%81%AF]] -[[開発基盤部会>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]] ***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/joba6c0jr-537 >生産技術部員が語る、業務系ソフトウェア開発の生産性についての話。 -最近重宝している開発環境、ツール、ライブラリなどの紹介~ https://www.osscons.jp/jo0gmt3qu-537 >最近重宝している開発環境、ツール、ライブラリなどの紹介します。 -統合CASEツールの類は何故、廃れたのか?~ https://www.osscons.jp/joeii3bn2-537/ >技術トレンドと、開発支援ツールの盛衰の一例。 **その他、開発基盤の必要性 [#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開発]], [[:ツール類]]