js-ctypes - ネイティブコードを呼び出す新しいカタチ

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    js-ctypes - ネイティブコードを呼び出す新しいカタチ - Presentation Transcript

    1. js-ctypes ネイティブコードを呼び出す新しいカタチ
    2. 共有ライブラリを JavaScriptから呼び出す
    3. 今までは共有ライブラリの 呼び出しはできなかったの?
    4. xptcall
    5. JavaScriptから呼び出せる形で C++でコンポーネントを作成して xptcall経由でそのコンポーネントを取得 そこから呼び出す
    6. 面倒くさいので、コードで説明する
    7. まず、C++側のコード
    8. 呼びたいのはこれだけ
    9. IDLファイル
    10. コンポーネント自体を作成する 仕組みも 作らなければ
    11. JavaScript側のコード
    12. このように C++とJavaScriptの両方を 書く必要がある
    13. 呼びたい関数が増えれば、 IDLファイルの変更が必要になる Gecko的には、 IDLを変更した場合には そのinterfaceの UUIDを変えないといけない
    14. しかも、MozillaのSDKが必要
    15. C++で書かないといけないということは Mac OS XとWindowsの 両方に対応する Extensionを書く場合は 個別に作らないといけないってこと?
    16. ということは、 Windowsしかもっていない場合は、 Macを買わないといけないってことか!
    17. Mac OS Xって PowerPCとかx86とかx86_64もあるよね? 各CPU種類ごとにも ビルドする必要があるってこと?
    18. そんな感じで 各OS、CPU毎のバイナリを Extensionに入れれば どのプラットフォームでもサポート可能
    19. そんなことしてる例が、 Mozilla LabにWeave Syncというものが あってだな
    20. Weave SyncのExtensionをバラしてみる
    21. ちょっと共有ライブラリを 使いたいだけでも いちいちC++で コードを書かないといけないのが現状
    22. ということは メンドクサイ
    23. ちょっとやることを大げさになると アドオンの開発が JavaScriptで閉じなくなるのは面倒 これはMozillaっぽくない
    24. なら、簡単に呼び出せる方法を 作ればよくない? そこでjs-ctypes
    25. js-ctypes ● ネイティブコード(共有ライブラリ)を呼び出す新しい 方法 ● Firefox 3.6 (Gecko 1.9.2)から利用可能 ● 名前の由来は、Pythonのモジュールから
    26. js-ctypes ● 簡単なライブラリを呼び出すだけであれば、い ちいち専用コンポーネントを作成する必要が あった ● 制限事項に引っかからない限りこれからは必要なし ● Chrome権限が必要なので、HTMLコンテンツ からは使えません
    27. js-ctypes ● Mike Finkle (今モバイルやってる人) がはじめた プロジェクト ● 最初はExtensionとしての実装 ● 今は、Raw JSAPI経由 ● JavaScriptとネイティブコードのバインディングに は、libffiを利用
    28. 使い方 呼び出し方法は簡単
    29. まず、ctypes.jsmをインポートして
    30. 呼びたいライブラリをロードして
    31. 関数を定義して
    32. 定義した関数を呼び出す
    33. いらなくなったら、クローズ
    34. シンプル!
    35. 関数定義でサポートされている型 ● void ● 整数 (int8 ~ int64) ● 浮動小数点 (float、double) ● 文字列 (ASCIIとUnicode)
    36. ただ、自分はCore Developerなので、 内部の話にも触れます
    37. xptcall vs js-ctypes は内部的にはどう違うの
    38. xptcall ● Geckoでは内部でxptcallと呼ばれる機能があっ て、そこでJavaScriptとネイティブコードのバイン ディングが行われる ● 各プラットフォーム毎に実装が必要 ● xptcallからxpconnect経由でネイティブコードを呼 び出す ● xptcallを利用するには、IDLが必要
    39. js-ctypes ● js-ctypesがJavaScriptエンジンのAPIを直接 呼び出す ● 言語間バインディングはlibffiまかせ ● エクスポートされているものは呼び出し可能
    40. 同じようなことできるけど、 内部的には まったくやってること違うんですよ
    41. ただ、悲しいお知らせもあります
    42. 現在の制限事項 ● コールバック関数をパラメータとして渡すこと ができない ● 構造体を利用することができない ● 参照も ● ARM環境(MaemoとかWindows Mobileとか)は 現在未サポート
    43. Reference ● Mike's blog (about js-ctypes implementation) http://starkravingfinkle.org/blog/2007/09/hello-js- ctypes-goodbye-binary-components/ ● ctypes.jsm https://developer.mozilla.org/en/JavaScript_code_mo dules/ctypes.jsm
    44. 何かあれば、 Twitter: @makoto_kato Email: m_kato@ga2.so-net.ne.jp
    45. Any Question?

    + Makoto KatoMakoto Kato, 1 month ago

    custom

    286 views, 1 favs, 1 embeds more stats

    This is the presentation for js-ctypes at Firefox D more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 286
      • 219 on SlideShare
      • 67 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds
    • 67 views on http://wontfix.blogspot.com

    more

    All embeds
    • 67 views on http://wontfix.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories