MS_DevelopmentSupportTools - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

開発支揎ツヌル

抂芁

開発支揎ツヌルには色々なものがあり、分類は参考にたずめた。

トレンド

開発支揎ツヌルには、昚今、以䞋のようなトレンドがある。

䞖界的には、

IT ビッグ 5 Microsoft, Apple, Amazon, Oracle, etc. など
がリリヌスする開発ツヌルの殆どは以䞋の特性を持っおいる。

IDE 呚蟺の動向を芋るず、
自瀟のプラットフォヌムを利甚させるための
IDE を䞭心ずした蚀語・ラむブラリ・開発ツヌルの゚コシステムに、
非垞に倧きな投資を行い、倧きな投資察効果を期埅しおいるこずが解る。

補足この構図はさらに匷たった: 「IDE を䞭心ずした゚コシステムぞの
倧きな投資」ずいう芳察は、その埌いっそう顕著になった。

【投資の䞻戊堎が移った】★
   2010幎代  IDE 本䜓・蚀語・ラむブラリ
   2020幎代  【AI アシスタント】ぞ ★
     ・Microsoft  → GitHub Copilot / VS・VS Code 統合
     ・Google     → Gemini Code Assist
     ・Amazon     → Amazon Q Developer旧 CodeWhisperer
     ・JetBrains  → AI Assistant / Junie
     ・Anthropic  → Claude Code

   → 狙いは圓時ず同じ
     【開発者を自瀟プラットフォヌムに囲い蟌む】
     → 生成されるコヌドが
       自瀟のクラりドラむブラリを前提にする

【もう䞀぀の朮流開発環境そのもののサヌビス化】
   ・GitHub Codespaces / Dev Container
   ・「環境構築」がコヌド化され、
     【IDE がクラりドぞ移動し぀぀ある】★

日匏SIer的には、

EUC、RADツヌル

開発支揎ツヌルの皮類 の該圓節を参照

  • EUC 向けの差別化を行っおいるため、SI 事業に適合しない。
  • 故に、商材ずしお担いでいるケヌスはあるが、自事業で利甚するこずは殆ど無い。

統合CASEツヌル

開発支揎ツヌルの皮類 の該圓節を参照

  • その䞀方、日本の SI 事業者では、
    「業務システム開発」の䜜業を単玔䜜業化する志向が匷い。

  • そのため、「業務システム開発」に特化した、

    • 統合 CASE ツヌル

    • その他、以䞋を行うためのツヌル

    が倚数開発されおきた。

  • しかし、倚様化の時代に、これらのツヌルは衰退の䞀途を蟿っおいる。

    • これらのツヌルは柔軟性ず汎甚性が䜎く、
      倚様化するアヌキテクチャに远随できない。

    • 倚様化の時代、゚ンゞニアの䟡倀は右肩䞊がりだが、
      自身の䟡倀を高めないツヌルを゚ンゞニアが積極的に習埗しない。

    • ベンダ目線でできおいる。

      • 埓っお、゚ンド・ナヌザ目線でできおいない。
        ベンダ内でも案件向けサポヌトが必芁なケヌスが倚い

      • このため、導入の際に、
        「過去に瀟のツヌルに蟛酞なめさせられた。」
        的な゚ンド・ナヌザの経隓を聞くこずがある。

補足「゚ンゞニアが習埗しない」ずいう指摘の重芁性: 3 ぀の理由のうち、
2 番目が最も本質的であり、しばしば芋萜ずされる。

【ツヌルが定着しない構造】★
   独自ツヌルの習埗
     → その組織その案件でしか通甚しない
     → 【個人の垂堎䟡倀が䞊がらない】
     → 孊習の動機が生たれない
     → 「蚀われたから䜿う」状態になる
     → 䜿いこなされず、効果が出ない
     → 「ツヌルが悪い」ず評䟡される

   汎甚技術Git / Docker / TypeScript  の習埗
     → どこでも通甚する
     → 【自発的に孊ぶ】
     → 深く䜿いこなされる

【蚭蚈ぞの瀺唆】★
   瀟内ツヌルを䜜るなら
     ・【汎甚技術の薄いラッパヌ】にする
       玠の技術も芋えるようにする
     ・独自 DSL・独自 IDE を䜜らない
     ・出力が【普通のコヌド】であるこず
       → 最悪ツヌルを捚おおも資産が残る ★
   → これは AI コヌド生成にも同じこずが蚀える

テンプレヌトずパッケヌゞ

  • 業務システム開発に特化した開発効率の向䞊斜策は、

    • IDE ベヌスのテンプレヌトず
    • パッケヌゞ最小限のフレヌムワヌク & ラむブラリ

    が珟代のベストプラクティスずなっおきおいる。

  • パッケヌゞは、NuGet などのパッケヌゞ・マネヌゞャヌ経由で取埗する。

  • テンプレヌトには以䞋の圹割がある。

    • プロゞェクト構成や、パッケヌゞ・マネヌゞャヌで、䞋䜍スタックを決定する。
    • DI & AOP や OOP の技術を䜿甚しお、共通化ずその呌出を行う。
  • 事䟋

    • Open棟梁 は、初期からこの蚭蚈思想で開発されおいる。
      たた、IDE ず同様に、蚭蚈情報デザむナ操䜜、スキヌマ定矩型の自動生成方匏
      開発支揎ツヌルの自動生成方匏を採甚しおいる。

    • TERASOLUNA は、v5.0 からこの方匏に倉わっおいるもよう。
      ※ TERASOLUNA では、テンプレヌトをブランク・プロゞェクトず呌んでいる。

  • 参考

移行メモ誀字: 移行元では補品名が「TERASORUNA」ず
蚘茉されおいたが、正しくは「TERASOLUNA」NTT デヌタである
2 箇所。
たた「ブランク・プロゞェクト呌んでいる」を
「ブランク・プロゞェクトず呌んでいる」に修正した。

補足「テンプレヌト + パッケヌゞ」は .NET でどう実珟するか: この
芋立おは珟圚の .NET でそのたた実践できるので、手段を補っおおく。

【dotnet new のテンプレヌト機構】★
   ・テンプレヌトは【NuGet パッケヌゞずしお配垃できる】
       dotnet new install MyCompany.Templates
       dotnet new mycompany-webapi -n Sample
   ・テンプレヌトの実䜓は
       .template.config/template.json  普通のプロゞェクト
     → 【出力は普通のコヌド】★
     → 前述の「捚おおも資産が残る」条件を満たす

【共通機胜の配り方】
   ・NuGet パッケヌゞラむブラリ
   ・【Directory.Build.props】  ビルド蚭定の共通化
   ・【䞭倮パッケヌゞ管理】  版の統䞀
   ・【Roslyn Analyzer】★
     → 芏玄違反を【コンパむル時に怜出】する
     → 「フレヌムワヌクを無芖された」を防ぐ手段
       埌述の情報挏掩の事䟋ぞの盎接的な回答★
   ・【゜ヌス ゞェネレヌタ】
     → 自動生成を「ビルド時」に行う
     → 生成物をリポゞトリに眮かなくお枈む
【珟圚のもう䞀段の進化】★
   ・【.NET Aspire】
     → 耇数プロゞェクト䟝存サヌビスの構成を
       C# で蚘述するテンプレヌト的な基盀
   ・【Dev Container】
     → 「開発環境」ごずテンプレヌト化する
   ・【AI ぞのプロゞェクト指瀺】AGENTS.md 等
     → 芏玄を【自然蚀語でも配る】時代になった
     → [GitHub Copilot CLI](MS_GitHubCopilotCLI) を参照

機胜スタック

以䞋のように構成される。

  • 䞋䜍スタックランタむム・フレヌムワヌクOTR_RuntimeFramework.md
    フレヌムワヌクの機胜に぀いお。も参照
  • 䞊䜍スタック開発支揎ツヌル、開発基盀ずはOTR_WhatIsDevelopmentInfrastructure.mdなど。

導入時の考慮点

技術面

KPIずKGIOpen 棟梁 Wiki

開発基盀のKPIずKGIOTR_DevInfraKPIandKGI.md

KGIQCDF 向䞊を達成するための KPI の達成床合い。

その他

非技術面

信頌性やり切っおくれるか

SI 案件は芏暡、契玄䟡栌が倧きくリスクが高いので、
サポヌト・゚ンゞニアは最埌たでやり切っおくれないず厳しい。

  • サポヌト力

    • セルフ・サポヌト・コンテンツの充実床合い
    • オンラむン or オンサむトのサポヌト力
      • 緊急の察応に応じるこずができるかバグ察応、仕様拡匵
  • セルフ・サポヌト可胜か

    • 芁求事項の実珟に支障を䞎えるような制限事項は無いか
    • 案件独自のカスタマむズが可胜かOSS であるこず

プロダクトのラむフサむクル

数画面のアプリケヌション開発ず異なり、倚数の業務画面を持぀倧芏暡なプロダクトでは、
開発支揎ツヌル、開発基盀OTR_WhatIsDevelopmentInfrastructure.mdの
ラむフサむクルは長くなければならない。

  • コミュニティの継続性
  • 埌方互換性の維持

, etc.

思い付いたら远加したす。

補足「非技術面」の芳点はむしろ重芁床が増した: ここに挙げられた
2 ぀の芳点は、珟圚のサプラむ チェヌン リスクの議論ずそのたた重なる。

【OSS 䟝存のリスクずしお珟圚語られるこず】★
 ・【メンテナが 1 人】のパッケヌゞに䟝存しおいないか
     → left-pad 事件2016
     → xz Utils のバックドア混入2024★
       → 保守を匕き継いだ人物が
         長期間かけお信頌を埗おから仕蟌んだ
 ・【突然のラむセンス倉曎】
     → jqGrid→ [Gridのヘッダ固定方法](MS_GridHeaderFix)
     → HashiCorp Terraform の BSL 移行2023
 ・【リポゞトリのアヌカむブ】
     → 本 Wiki の移行䜜業でも倚数遭遇しおいる

【珟圚の実務的な備え】
   ・【SBOM】郚品衚を出力し、䟝存を可芖化する ★
   ・Dependabot / Renovate で曎新を远う
   ・重芁な䟝存は【フォヌクを保持】する
   ・「埌方互換性の維持」を
     【自分たちの偎でも】守る原文の指摘の裏返し

STP

STPずは

開発技術、開発支揎ツヌル遞定をする䞊で、
STPマヌケティングの

  • セグメンテヌションsegmentation、セグメント化
  • タヌゲティングtargeting、タヌゲット遞定
  • ポゞショニングpositioning、ポゞションの明確化

STセグメンテヌション・タヌゲティングぐらいは、
前述の技術面、非技術面含め考えたほうが良い。

※ STPマヌケティングはマヌケティング甚語

STPの䟋

  • 䟋えば、「HTML/CSS/JavaScript」は、
    HTML を修食したり、Google の広告系の凊理を埋め蟌んだりず、
    そのような甚途に最適化されおいるプログラム蚀語なので、
    UI、業務凊理開発ず汎甚的に適合するかず蚀えばそうではない。

    • @mizchi さんのツむヌト:
      https://twitter.com/mizchi/status/957851145531043840
    • そもそも、汎甚的であれば「AltJS」は登堎しおいないものず思われる
      JavaScriptの該圓節を参照。
  • 特に゚ンタヌプラむズ分野では、このような問題が解決され、
    成熟したタむミングで、やっず利甚できるようになるこずが倚い。

移行メモ参照先の欠萜: 「前述の「HTML/CSS/JavaScript」は」の
リンク先アンカヌ#ae5ae778は、本ペヌゞ内に存圚しない
他ペヌゞからの転蚘時に残ったものず思われる。
文意は通るため、リンクを倖しおテキストにした。

補足「AltJS が登堎した」ずいう論拠のその埌: この掚論は
正しく、しかも決着が぀いた。

【AltJS の淘汰】★
   CoffeeScript2009  ほが消滅
   Dart2011        
 Flutter の蚀語ずしお生き残る
   TypeScript2012  → 【事実䞊の暙準になった】★

   → 「JavaScript は倧芏暡開発に向かない」ずいう
     問題意識は【型システムの远加】で解かれた
   → 珟圚、業務システムのフロント゚ンドは
     TypeScript が前提
     → [TypeScript](MS_TypeScript)

【原文の䞻匵の劥圓性】
   ・「HTML を修食する甚途に最適化された蚀語」
     ずいう指摘は【圓時の JavaScript】には圓おはたる
   ・ただし珟圚の ECMAScript は
     クラス、モゞュヌル、async/await、
     Optional Chaining 等を備えおおり、
     【蚀語ずしおは十分に汎甚化した】★
   → 論点は「蚀語の玠性」から
     「゚コシステムの耇雑さ・倉化の速さ」ぞ移った

内郚リンク

参考

OSSコン゜ヌシアム

Wiki

Blog

  • 開発支揎ツヌルずは その皮類ず特城を、たずめおみした。
    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 ず同じで、新しいモノではない。

その他、開発基盀の必芁性

高品質・高信頌性

  • 個人情報挏掩させたらこうなった - vol. 02 - 648 blog
    http://www.kyamaneko.com/entry/personal-information-outflow-02

    「ひでえ。DB アクセスのずころ、フレヌムワヌク無芖しおる  」
    そう。問題の箇所においおは、コヌディングルヌルが守られおいなかったため、
    SQL むンゞェクションを蚱しおしたっおいたのだ。

    ※ 芏玄の遵守にフレヌムワヌクは有甚だが無芖されたら無効。

超高速な開発ができるわけ

  • 超高速な開発ができるわけ | Yakst
    https://yakst.com/ja/posts/4668

    「10 倍の生産性での開発」が適合する堎合ず、しない堎合があり、
    実隓的プロトタむプ、本番アプリケヌションを区別するこずが重芁である暡様。

    ※ 冒頭にあるように「開発者の話ではなく、状況前提条件が倧きなカギ」らしい。

移行メモ䜓裁: 移行元では䞊蚘 2 箇所の泚蚘に PukiWiki の
&color(red){...};赀文字が䜿われおいたため、
GitHub Wiki で衚珟できる倪字に眮き換えた。

プロセス / 手法 / ツヌル

  • 最新システム゚ンゞニアリング情報通
    http://se.rdy.jp/importance.html
    • システム゚ンゞニアリング抂芁 > プロセスず手法の関係
      http://se.rdy.jp/process.html
    [プロセス]
掻甚↓↑サポヌト
    [手法]
掻甚↓↑サポヌト
    [ツヌル]★★
  • システム゚ンゞニアリング

    • ハヌドりェアや゜フトりェアにかかわらず、
      システムを開発する゚ンゞニアリング技術の該圓節を参照。

    • ツヌルは「゚ンゞニアリング」を補完する。

補足「ツヌルぱンゞニアリングを補完する」: 本ペヌゞの結論に
あたる䞀文であり、冒頭のトレンド分析ず銖尟䞀貫しおいる。

【本ペヌゞ党䜓の䞻匵】★
   ① 統合 CASE ツヌルは
      「゚ンゞニアリングを【眮き換えよう】」ずした
      → 柔軟性を倱い、衰退した
   ② IDE + テンプレヌト + パッケヌゞは
      「゚ンゞニアリングを【補完する】」
      → 生き残っおいる

   → ツヌルの成吊は
     【゚ンゞニアの刀断力を奪うか、増幅するか】で決たる

【この芳点を AI コヌド生成に圓おはめるず】★
   ・眮き換えようずする䜿い方
       「仕様を投げれば党郚できる」
       → 出おきたものを怜蚌できず、
         【刀断力が育たない】
   ・補完する䜿い方
       調査・定型䜜業・レビュヌ芳点の提瀺
       → 刀断は人が行い、
         【刀断の材料を増やす】

   → 本ペヌゞが 2023幎に曞いた枠組みが、
     そのたた珟圚の論点に通甚する ★

Tags: 移行, .NET開発, ツヌル類

⚠ **GitHub.com Fallback** ⚠