BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Ionide - F#で記述されたAtomベースのF#用IDE

Ionide - F#で記述されたAtomベースのF#用IDE

原文(投稿日:2015/09/29)へのリンク

IonideAtom Editorをベースに,フル装備とクロスプラットフォームを実現した,現代的なF#開発用オープンソースIDEのパッケージスイートだ。

F#(JavaScriptにトランスパイル)で記述され,次のような機能を備えている。

  • 構文強調表示
  • エラー強調表示
  • 自動補完
  • ツールチップ
  • REPL環境を提供するF# Interactiveとの統合

これらに加えて,さらに高度な機能を提供するため,F#コミュニティで開発された以下のプロジェクトを統合している。

  • F# Yeoman Generatorを使ったプロジェクト生成。一般的なプロジェクト形式を複数のテンプレートで提供する。
  • Paketによるパッケージ管理。パッケージの追加,インストール,更新,削除,古くなったパッケージのリストアップなどが可能。
  • FAKEを使ったターゲットのビルド。実行結果は統合パネル上に表示される。

IonideはGitHubで公開されている。Atomパッケージインストーラを使って,Linux,OS X,Windowsでインストールすることが可能だ。

InfoQは,Ionideの作者であるKrzysztof Cieślak氏に話を聞いた。

Ionideを開発しようと考えたきっかけについて説明してください。

何よりもまず,時間を費やすに値するような興味深いOSSを探していたということがあります。実用的かつ生産的なOSSプロジェクトという面で,F#コミュニティは本当にアクティブです。私は以前から,この素晴らしくポジティブで,優れた成果をたくさんあげているコミュニティにとって何か役立つことをしたいと思っていました。その次に,Visual Studioに対する不満があります。C#やF#(Visual F# Power Tools Extension - これも面白いF# OSSプロジェクトだと思います - をインストールすれば)用としては本当によくできたIDEですが,すべてのユースケースに対してパーフェクトではありません。

F#のF# REPL - FSI(F# Interactive)は,”ライトウェイト”でインタラクティブなスタイルでのアプリケーション開発には最適です。以前からその代替方法を探していたのですが,VimやEmacs(どちらも優れたF#サポートがあります)や,Sublime TextのF#サポートは,私の望んでいたほど良くはありませんでした。それである日,GitHubのAtomテキストエディタのF#サポートに興味があるか,Twitterで尋ねてみたところ,とても肯定的な反応があったのです。中でも印象的だったのが,F#のグルとして有名なTomas Petriceck氏の,とても興味深い提案でした。プラグイン自体をF#で書いてみてはどうか,と彼はいうのです(AtomのプラグインはJavaScriptかCoffeescriptで記述するのが通常です)。そこでGitHubにリポジトリを用意して,Atom APIとFsAutoComplete(VimやEmacsなどのエディタで,.NetフレームワークにアクセスせずにFSharp.Compiler.Serviceとのインタラクションを行うためのF#コマンドラインバックエンド)を使った開発を始めました。

どのような要件を満たしているのでしょう?

Visual StudioやXamarin Studioにすべてのプロジェクトを依存したくはないプログラマに対して,ライトウェイトでクロスプラットフォームなエディタの選択肢を提供したいのです。このようなフル機能のIDEはF#開発に必須ではありません。興味の対象がF#を使った開発にあるのであれば,必要もなく欲しくもない機能が何GBも詰まっているに過ぎないのです。VSとVFPTの組み合わせも,XSも,素晴らしいF#サポートを - 通常の言語サポートの域をはるかに越えるという意味で - 備えています。ですが,そういったものとは違うスタイルのサポートを好むプログラマもたくさんいます。特に関数プログラミングのバックグラウンドを持つ開発者には,それが多いのです。Atomのプラグイン開発で素晴らしいのは,その柔軟性です。おかげでPaketFAKEF# yeoman generatorといった,F#コミュニティで開発された人気ツールをエディタ内でサポートすることができました。

完成度はどの程度なのでしょうか?

Ionideは数人で開発した,始まってまだ6ヶ月のプロジェクトですから,“成熟した”プロダクトと言えないことは事実です。粗削りな部分もありますし,VS/XSの便利な機能のいくつかは未実装です(プロジェクトファイルの自動編集など)。すぐにはサポートできそうもない機能もいくつかあります(デバッグなど,ただしFSIのおかげで,大きな問題ではありませんが)。Ionideプロジェクトは非常に活発な開発が進められています。常に機能が追加あるいは改良されていますし,ユーザからの問題にも速やかに対処しています。“実用レベル”に到達する時期について話すのは難しいですね。必要だと考える機能は人それぞれですから。Ionideはまだ,商用アプリケーションに従事するF#開発者に,単独ツールとして推奨できるレベルには達していませんが,プロトタイピングやスクリプトの作成,REPLを試してみるといった,補助的なエディタとしては非常に優れたものだと思います。率直に言って,それだけの作業のためにVSやXSを開いて新たにプロジェクトを作るというのも変な話です。個人的に仕事で使っていますので,多少の先入観はあるかも知れませんが。

ロードマップについての詳細はどうでしょうか?

プロジェクトの長期的なロードマップはまだ立てていませんが,現在注目している機能がいくつかあります。まず数日以内に,Ionide-WebPreviewパネルをリリースする予定です。AtomのWebページをエディタ内でプレビュー可能にするもので,FsRevealFsLabSuaveといった一連のF#ツールで使用できる他,一般的なWeb開発でも(F#技術とそれほど強く結び付いていなくても)利用可能です。その後に開発を計画している新機能はテストランナーです。それから,中心的なコントリビュータのひとりであるJared Hester氏が今,オートコンプリート形式のUnicodeグリフの挿入機能に取り組んでいます。F#のソースコードはUTF-8なのですが,コミュニティの中でも学術研究的な分野の人たちを中心に,let inline Σ (xs:#seq<'a>) :'a = xs |> Seq.reduce (+)といった記述をもっと簡単にするための機能が望まれています。彼はまた,Ionideの機能をよりVSやXSに近付ける作業も行っています。

Atomは“ハッキング可能なテキストエディタ”と呼ばれていますが,Atomのハッキングについて少し話して頂けますか?Atomのどの機能を利用することで,作業がどの程度簡単になったのでしょう?

Atomは間違いなく“ハッキング可能なテキストエディタ”です – プラグインのための素晴らしいAPIがありますし,ローカルユーザによるカスタマイズオプションも簡単です。AtomはNode.jsベースのアプリケーションですから,プラグインの開発者はNode.jsモジュールのほとんどにアクセス可能です(車輪の再発明は必要ありません)。もしプラグインに必要な機能がAPIでサポートされていなくても,単純なHTML+JSですから,開発者自身が実現方法を考えることもできます。

私のAtomに関する経験は,他の人とは少し違います - 先程述べたようにJSやCoffeeScriptは使わずに,FunScriptを使ってF#からJavaScriptにトランスクリプトしているのです。そのおかげで,本物の関数プログラミング言語が持っているパワーというアドバンテージ(簡潔なコード,優れたデータモデル抽象化,パターンマッチング,型推論など)を活用したすばらしいプラグインAPI,全体的なエディタのカスタマイズの自由度と新たな機能提供という可能性が手に入りました。機能を追加する度にIDEのSDKと格闘するような,VSやXSのプラグインあるいはエクステンション開発とは次元が違います。F#を使ったことで,プロジェクトに貢献してくれる人を探すことも簡単になりました(F#ツールに最も興味を持っているのはF#開発者ですから:))。Atomで重要なもうひとつのファクタは,開発チームのサポートが本当に素晴らしいことです。イテレーションやバグフィックスは迅速ですし,1日に複数回のアップデートも少なくありません。公開されているSlackのチャネルやGitHubイシューにも積極的に参加しています。

この記事に星をつける

おすすめ度
スタイル

BT