ファイルシステムでHello World
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
作者 Werner Schuster, 翻訳者 長部 広太 投稿日 2008年3月27日 午後6時40分
RadRails(サイト・英語)は、Aptana IDEの一部で、現在version1.0の利用が可能だ。人気のRails開発ツールは、この間いろいろなものがリリースされた。しかし、この最新バージョンのRadRailsは、RubyやRuby on Railsの開発者に対して役立つ新機能を追加した。RadRails、Netbeans及びCodeGearの3rdRailの機能に関して十分な比較(source)が利用でき、その比較によるとRadRailsはリファクタリング及びプロファイリングのサポートが他のふたつの開発環境よりも充実していることが分かった。もう一つのRadRailsの特徴はRails Shellである。Rails Shellを使う事によって、Eclipse IDEの内側からRailsコマンドを実行出来る。これはコマンド等の引数の自動補完機能が付属している。(スクリーンキャストを見ると、Rails Shellの機能(source) を使っていることが分かる。)プロファイラーは、基本的にruby-prof gem をラップしたものだ。我々はruby-profバイナリスクリプトからRubyスクリプトの実行をラップした。そして一時ファイルへ出力するように指令を出しました。そしてスクリプトの実行が終わると、我々はアウトプットを掴み、それを解析して、Call GraphとSpots viewsを生成します。この機能はまだJrubyでは利用出来ない。理由はネイティブなCコードに相当する、Java版のruby-prof gemがまだ存在しないからだ。それが作られれば、すぐにでもサポートされるだろう。RDTは、Eclipse デバッガーGUIでRubyコードのデバッグを長くサポートしてきた。Eclipse デバッガーGUIは、より処理速度が早いruby-debugをサポートしている。RadRailsもjruby-debugを含めて出荷される。jruby-debugはJRubyのデバッグをサポートした、より処理速度が早い実装である。
その機能の先にあるものに関して:我々は、修正したruby-prof gemに取り組むかもしれません。それは、ruby-debugのruby-debug-ide gemと同じ振るまいをするであろう。基本的に、プロファイラーへリモートからの接続とプロファイリングに関連し且つソケットを超えたリアルタイムなコマンドを送る事が出来ます。だから我々はアプリケーションを終了したら、出力を捕らえる代わりにスナップショットを撮れるのです。または、JRuby互換のruby-profを作るかだ。そうだとすると、我々のユーザが何を求めているかということに依存し、それは全く新しい機能となる。だから我々は丁度、機能強化に関するリクエストを貰い始めたばかりだ。
はい、RadRails 1.0で我々は現在ruby-debug gemのJRubyバージョンをサポートしています。それで、現在早いJRubyのデバッグオプションがあります。実は我々はJRubyにそれをプリインストールして出荷しています。RadRails 1.0の機能リストには、Rubinius(source)という名前が含まれている通り、Rubiniusがサポートされた。Christopher氏は、サポート状況を説明してくれた。
現時点で、それはRubiniusをRubyプロセスを起動するためのインタープリタとして使う用途に限られています。Rubiniusがより強力になったので、それでgemsとRailsを試用することはより役立つであろう。Rubiniusに特有の機能というものが現時点ではありません。(たとえJRuby又は標準のRubyの仕様的な機能がないとしても) 我々は、次と同じくらい完全に各々のインタプリタをサポートしようとしている。JRubyとRubiniusでそれが新しいgemまたはアップデートされたコードがより多くの機能を可能にすることができるのを待つのが問題です)
もし多数のユーザーがRubiniusを使用し始めて、デバッガーが懐かしいとユーザが我々に語り始めとしたら、デバッガーの統合に向けて作業します。我々がruby-debugを使っているRuby用のデバッガーを作成した際、我々はコードを共有するためにKent SibilevとMartin Krauskopfと働きました - そしてそれはIDEがruby-debugと統合する共有ライブラリをまとめることで終わりました。それで、RDT/RadRailsとNetbeansをデバッギング・バンックエンドと統合するための一種のデファクトスタンダードが既に存在します。それはソケットを開いて、これらのXML命令を読み取るためにRubiniusのデバッガーを中継することの問題です。もし誰かがそれに取り組みたいのであれば、私かマーティンに連絡を下さい。それは、RubiniusのデバッガーがNetBeansやRDT/RadRails上で効率的に動くようにします。
共通のデバッグキングプロトコルの実装が、debug-commons(source)プロジェクトのRubyForgeで利用出来る。InfoQは、Rubiniusのフルスピードデバッガーに関してリポートした(source)。これは現在、共通のデバッギングプロトコルでサポートされておらず、異なるプロトコルバックエンドを必要とし、フルスピードデバッガーAPIを利用している。
RadRailsが、Ruby on Railsの開発用のIDEであるにも関わらず、将来それは他のフレームワークをサポートするかもしれない。
今現在、他のフレームワークに対応して欲しいという大きな要請はありませんでした。明らかに、我々はRailsに集中していますが、フードの下には完全に機能的なRuby IDE(RDTで作られた)があります。非常に人気なフレームワークが出現し、利用者からそのフレームワークをサポートして欲しいという要求があれば、我々は確かにサポートすべきかどうか調査するでしょう。RadRailsとAptanaは、EclipseMonkeyを使っているRubyでスクリプトが書ける(source) - Christopher氏は、この機能の考えを後で話してくれた。
関連した話では、何人かのユーザーは、ブラッドウィルソンのHAMLとSASSエディタを使用していました。残念な事に、最近のリリースでは、RDTとの統合はなくなってしまいました。そしてBrad氏には、それを最新にしておく時間がありませんでした。我々は彼と共に働き、彼のエディタをRadRailsに移植し、その結果それらを維持していけるようになりました(可能ならそれらを向上させる)。
私が、EclipseMonekyとJRubyを統合していたときに、見に来た人の多くをつかまえ、その人たちが「RubyでIDEのスクリプトを書く事ができるんですよ」と言ってくれることを望んでいました。しかし、これまで、コミュニティは私が期待した程、それを全く受け入れませんでした。エンドユーザーのために彼らが、コンパイル ステップ、Eclipse SDKのダウンロードや、ソースコードをチェックアウトする必要もなく新機能を反復的に開発出来るのではないかと理解しました。そして永遠にそれを理解するのに悩むのです。あなたはちょうどRuby又はJRubyのコードを書いて、スクリプトを走らせ、編集し、そして再度実行させます。そしてDOMを使って遊べる、小さくてシンプルなAPIを提供できる。そしてそれはRuby APIのような感じがします。AptanaやRadRails1.0を始めたり、単純に機能を見たいなら、機能をまとめたスクリーンキャストが利用出来る(source)。
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。
アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。
今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。
アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。
Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。
現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。
ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。
No comments
返信