Comments
Description
Transcript
H22年度計画説明資料 - PHPから Rubyへの変換サービス
PHPからRubyへの変換ツール の高度変換対応に関する研究開発 [ご説明資料] 平成22年6月22日 いずもトータルネット株式会社 Copyright© Izumo Total Net All Rights Reserved. 1 事業目的 ① 背景と課題 ◆ 背景 ・プログラミング言語の中で、Rubyのシェアはまだまだ小さい。 ・Ruby経験者が少ない。 ・PHPで開発されたプログラム資産は多く存在する。 ・島根県内の自治体でのシステム開発でRubyでの開発が条件に なっている場合が多々ある。 『PHP⇒Ruby変換ツール』 ◆ 現在の変換ツールの課題 PHPとRubyの構文が1対1で対応している部分に関しては 容易に変換ができるが、そうでない部分の変換には不便。 1 Copyright© Izumo Total Net All Rights Reserved. 1 事業目的 ② 課題の解決 ・1対1変換できない構文が存在する 例:switch文, 変数の初期化 … →文脈を考慮した解析を行い既存の構文の組み合わせで対応 ・型の不適合 例:Rubyでは数値型と文字列型を区別する →型が推測できれば対応可能 ・利用者独自の変換規則に対応できない 例:よく使用するPHP関数等 →トランスレータにユーザーインターフェイスを設ければ 対応可能 ◆ 解決策 『PHP⇒Ruby変換ツール』の高度変換対応 2 Copyright© Izumo Total Net All Rights Reserved. 2 事業内容・規模 ① 研究開発の要素 ◎トランスレータを改良して、一旦PHPの抽象構文木を生成した後、 さらにRubyの中間表現を生成するプロセスを追加します。 構文定義 zend_language_parser.y PHP ソースコード 字句解析 構文解析 token_get_all (標準関数) パーサ core.y 生成 PHP_ParserGenerator (PEARライブラリより) PHPの抽象構文木 静的コード解析 トランスレータ Rubyの抽象構文木 ユーザーインターフェイス 機能の追加 変換 ※太線部を開発 Ruby ソースコード 3 Copyright© Izumo Total Net All Rights Reserved. 2 事業内容・規模 ② 研究開発の説明 1)1対1変換できない部分についてプログラムの木構造を変化させる。 型の不適合の問題については型類推により改善する。 ■変換処理のイメージ図 型類推 データフロー解析 依存解析 抽象構文木 抽象構文木 4 Copyright© Izumo Total Net All Rights Reserved. 2 事業内容・規模 2)ユーザーインターフェイスを設け、トランスレータの動作を カスタマイズ可能にする。 ■変換処理のイメージ図 ユーザー変換規則の追加 PHP Ruby aaaa ⇒ bbbb cccc ⇒ dddd xxxx ⇒ yyyy ユーザー インターフェイス PHP ソースコード -------xxxx -------- Ruby ソースコード トランスレータ 5 -------yyyy -------- Copyright© Izumo Total Net All Rights Reserved. 2 事業内容・規模 ③ その他の研究開発 ◆ PHP5.3で導入された新たな構文(名前空間等)への対応 ◆ 頻出するPHP標準関数について、代替のRuby関数の整備 ◆ プログラム構造以外の部分(コメント等)への対応 6 Copyright© Izumo Total Net All Rights Reserved. 4 波及効果 ① 研究成果の展開 ● 研究成果はインターネット上でOSSとして公開します。 『Rubyの普及』が図られる ② 研究成果公開後のメンテナンス・保守 ● 研究成果は弊社に設置する公開サーバで管理します。 9 Copyright© Izumo Total Net All Rights Reserved. 資料 現行ツールでの変換例 PHP 抽象構文木 Ruby 変換ツール 資料−1 Copyright© Izumo Total Net All Rights Reserved. 資料 現行ツールでの変換例(制御構造) PHP Ruby 変換ツール 資料−2 Copyright© Izumo Total Net All Rights Reserved. 資料 現行ツールでの変換例(クラス) PHP Ruby 変換ツール 資料−3 Copyright© Izumo Total Net All Rights Reserved. 資料 現行ツールでの変換例(Smarty) PHP 変換ツール Ruby 資料−4 Copyright© Izumo Total Net All Rights Reserved.