[OSS紹介#29] Monaco Editor:VS Codeから学ぶフル機能のウェブコードエディタ

この記事について

この記事では、注目のオープンソースソフトウェア(OSS)の一つである「Monaco Editor」について紹介します。連載第29回となる今回は、開発者にとって非常に重要なツールとして、VS Codeでもお馴染みのコードエディターがどのように活用されているのかを探ります。

ソフトウェア開発の現場では、コーディングの効率化や生産性の向上が常に求められています。特に、生産性を支えるツールの選定は開発チームのパフォーマンスに直結する大切な要素です。Monaco Editorは、その柔軟性や豊富な機能により、開発者が快適にコーディングできる環境を提供します。

この記事を通じて、Monaco Editorの基本情報やインストール方法、主要な機能について詳しく解説します。これにより、開発現場での活用方法やカスタマイズの参考になることを目指します。開発者の皆さんにとって、このツールがどのように役立つのかを理解し、実践的な知識を得る一助となれば幸いです。

リンク:https://github.com/microsoft/monaco-editor


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. Monaco Editorでできること

Monaco Editorは、VS Codeのコア機能を持つフル機能のコードエディタです。以下のような機能を提供します。

1.1 モデル

Monaco Editorの中心的な要素は「モデル」です。モデルは開かれたファイルを表し、テキストコンテンツ、言語、編集履歴を管理します。

1.2 URI

各モデルはURIによって識別されます。同じURIを持つモデルは作成できません。理想的には、ユーザーが編集しているファイルと一致する仮想ファイルシステムを考慮してURIを設計する必要があります。

1.3 エディタ

エディタは、ユーザーが直接操作するモデルのビジュアル表示です。モデルの表示、ビュー状態の管理、アクションの実行などが行われます。

1.4 プロバイダ

プロバイダは、コード補完やホバー情報などのスマート機能を提供します。これらの機能はモデルに依存し、ファイルのURIによって動作が変わることがあります。

2. セットアップ手順

Monaco Editorを使うためのセットアップは以下の手順で行います。

2.1 動作環境

Monaco Editorは、主にウェブブラウザ上で動作します。モバイルブラウザやモバイルアプリフレームワークには対応していません。

2.2 インストール

npmを使用してMonaco Editorをインストールします。以下のコマンドを実行してください。

npm install monaco-editor

インストール後、以下のファイルが生成されます。
/esm: ESMバージョン(webpackなどに対応)
/dev: AMDバンドル版(ミニファイされていない)
/min: AMDバンドル版(ミニファイ済み)
/min-maps: ソースマップ
monaco.d.ts: エディタのAPIを定義

開発時はdevバージョンを使用し、本番環境ではminバージョンを使用することが推奨されます。

3. 簡単な使い方

Monaco Editorの基本的な使い方は以下の通りです。

3.1 エディタの統合

Monaco Editorをプロジェクトに統合するには、サンプルを参考にしながら実装します。例えば、以下のようにエディタを初期化します。

monaco.editor.create(document.getElementById('container'), {
    value: 'function hello() {\n\tconsole.log("Hello, world!");\n}',
    language: 'javascript'
});

3.2 プロバイダの利用

プロバイダを使用することで、コード補完やエラーチェックなどの機能を追加できます。各種言語サポートを追加する場合は、適切なプロバイダを選択し、モデルのURIに基づいて設定します。

monaco.languages.registerCompletionItemProvider("javascript", {
  provideCompletionItems: () => {
    return {
      suggestions: [
        {
          label: "console",
          kind: monaco.languages.CompletionItemKind.Function,
          insertText: "console.",
        },
      ],
    };
  },
});

3.3 リソースの解放

使用が終わったモデルやエディタは、.dispose()メソッドを使用してリソースを解放することが重要です。これにより、URIが再利用可能になります。

4. 結論

Monaco Editorは、強力で柔軟なコードエディタであり、VS Codeの機能をウェブブラウザで再現します。モデル、URI、エディタ、プロバイダといった基本概念を理解することで、効果的に利用できます。セットアップは簡単で、npmを利用することで迅速に環境を構築できるため、開発者にとって非常に有用なツールです。エディタを統合することで、カスタマイズや拡張が可能となり、ユーザーエクスペリエンスを向上させることができるでしょう。