Sencha IDE プラグイン内のコードコンプリーションガイド
こんにちは、ゼノフィseoです。
2015年、私のチームは人気のある3つのIDE: Eclipse、Visual Studio、JetBrains product ライン(INtelliJ、WebStorm、RubyMine、PhpStorm、PyCharm)用にプラグインを開発しました。Ext JS は広大で機能性豊かなライブラリであり、MVC/MVVM、チャーティング、データ、アニメーションなどのフロントエンド開発の “フルスタック” を取り囲む存在です。開発者としては、たくさん提供してくれるフレームワークを使う時の一番の挑戦となることは、何をすることが可能なのか細部まで全体の絵をしっかり見るということです。素晴らしい IDE は大きなフレームワークを小さく、そして管理しやすく見せることができます。これは入力する度に手助けとなるサジェスチョンを表示させることによって可能となります。我々はユーザーの皆さんが Ext JS の機能の全てが指先にあるように感じてほしいため、プラグインを開発する上ではコードコンプリーションをトッププライオリティーに持ってきました。
Sencha IDE プラグイン内でのコードコンプリーションは、JavaScript IDE に期待するものよりも遥か上をいくものです。以下がいくつかのハイライトです:
以下のスクリーンショットは Visual Studio 2015 のものです。
クラス名
ストリング内でも、どんな Ext JS クラスもしくはネームスペースでも入力し始めるとマッチングした結果が表示されます:
Configs
Ext JS コンポーネントは非常に柔軟です。各クラスはたくさんのコンフィギュレーションオプションを持っています。コンフィグブロックで ctrl-space を入力すると、使用しているクラスでの関連したコンフィグ一覧が表示されます。
プロパティとメソッド
コンポーネントを一度インスタンス化すると、プラグインはそのコンポーネントのプロパティとメソッド全てをサジェストします:
イベント
ctrl-space をどんなリスナーオブジェクト、もしくは .on、 .mon、 .un、.mun、の最初のパラメータに入力すると、使用可能なイベントがリストとして表示されます。
Xtype、Types、その他エイリアス
プラグインはエイリアスが使用されている場所なら値をサジェストします。一番よく使われるエイリアスはxtypeであり、ビューコンポーネントのショートハンド名です。
その他、ViewController や ViewModel タイプのエイリアスもサポートされています。
フィールドタイプももちろんされています。
基本的にどこでも “type” を使用すれば、コンテキストにあわせて関連するタイプのリストが表示されます。
コントローラメソッド
バウンドコントローラを持ったビューの場合、もしあなたの ViewController が以下のようなメソッドがある場合…
… ビュー内のリスナーコンフィグの値内で ctrl-space を入力すると見られることができます。
ビューレファレンス
ビューコントローラ内で、ビューコンポーネントへのレファレンスが必要な場合。ビュー内でレファレンスを宣言した場合…
…ビューコントローラ内で見ることができます。
バインド表現
プラグインはバインド表現を書いている時に、ビューモデル内にストア、データ、リンク、フォーミュラをレファレンスすることもできます。ビューモデルクラス内で以下のように宣言してください…
…ビュー内でバインド表現を完成させると見ることができます。
ベストプラクティス
JSDuck
Sencha JS IDE プラグインはどのようにして貴方が入力する都度、何をサジェストするかを判定しているでしょうか?コードをインデックスし、クラス作成や JSDuck/JSDoc コメントの、Ext.define などの共通の Ext JS コンベンションを探します。JSDuck は全ての API ドキュメントを生成するために Sencha が使用するドキュメンテーションツールです。もしプロジェクトをドキュメントするのにまだ使用していないのであれば、使用することを強くおすすめします。検索可能で素晴らしいドキュメントを製作できるとは別に、IDE 経験も豊かになります。なぜならプラグインがクラスを理解するスピードが向上するからです。例えば、独自のクラスコンフィグを @cfg タグをつかってアノテートした場合…
…コード内のどこか別の場所でコンポーネントのインスタンスを作成した場合に見ることができます…
Ext JS ソースコード
一番重要かもしれませんが、プラグインは Ext JS フレームワーク自体をインデックス化しなければコードサジェスチョンを提供することはできません。それを有効にするには、フレームワークソースはプロジェクト内のどこかに駐在しなければなりません。Sencha Cmd を使ってプロジェクトをビルドする場合、これは自動的に行われます。もしフレームワークソースがプロジェクト内に駐在しないのであれば、プラグインを直接指すことも以下のガイドで可能となります。
結論
今回は、 Eclipse、Visual Studio、JetBrains product ライン(INtelliJ、WebStorm、RubyMine、PhpStorm、PyCharm)の Sencha IDE プラグインをどのように活用できるかをまとめてみました。もし質問やフィードバックなどあれば Eclipse、Visual Studio、JetBrains プラグインフォーラムで共有してください。