ちょっとapiかいてみた
TRANSCRIPT
ちょっとAPIかいてみた
株式会社
グローバルサイバーグループ
藪下正美
自己紹介
• 名前 藪下 正美
• 会社 株式会社グローバルサイバーグループ
• どんな人?
–オタク
– @aoi_nagatsuki
–プログラミング言語とかスマホとか好き
弊社紹介
• 株式会社グローバルサイバーグループ
–やる気と人間性を大切にする総合開発企業
–とかはどうでもよくて
• ブログやってます
–GCG研究所で検索!
–ネタ募集中!
• 空いてる人が調べてブログに書くのでなんか聞いてね!
今日のおはなし
• APIの作り方を調べました
• XPIDLとかWebIDLとかありますが今回はWebIDLで
–どちらも弊社ブログにあるので興味があったら調べてね! GCG研究所で検索!
• ざっくり手順を述べてもいいんですが覚えて帰るの大変だと思うので苦労話をします
ある日質問があった
• firefox os APIの開発についての質問
– https://groups.google.com/forum/#!topic/fi
refoxos/io8SLcnHfZc
–ざっくりまとめると
• センサーの値を取るAPI追加したい(質問者)
• 弊社ブログに書いてますよ!(弊社)
• 今はWebIDLでやりますよ(池田さん)
–じゃあやろうじゃないか!
MDNを見に行った
• 池田さんがMDNのURL書いてたので見にいった
• アドレスのen-USをjaに変えたら通って喜んだ
–のもつかの間ほとんど未翻訳。。。
• それでもMDNを読みながらやってみた
–いろいろ書いてなかった。。。
–ソースコード読みましょう!
まずビルド通らない
• コンパイルは通るところまではいけどリンクが通せない。。。
–結局gecko/dom/helloとかにソースコードを置いた場合に
obj-gecko/dom/bindings/HelloBindings.cppから
obj-gecko/dom/hello/Hello.oが見えなくてしょんぼり(´・ω・`)
–あきらめてgecko/dom/baseにおいてお茶を濁した
APIってどう追加されるの?
• 弊社ブログに書いてあるXPIDLだとwindow.navigatorの下に入る
–入らなかった
–念のためwindowも見たけどなかった
–じゃあnew Hello()的な?
newしたら
TypeErrorで死んだ
• C++側のコンストラクタが呼ばれてなかったのでそれかなと思って時間を食った
–ほかのAPIを参考にしたらNavigatorとかnsGlobalWindowとかに登録しててそこらへんのプロパティの初回参照とかでオブジェクト作っててあれー? ってなるなど
FirefoxとかFxOSとか関係ないWebIDLのサンプル
とか眺めてて気づいた
• もしかして:newしたかったら[Constructor]属性必要?
–やってみたらいけた(/・ω・)/
• var h = new Hello();
• h.hello();
–的なのが呼べた!
僕は文字列を返すメソッドが作りたいだけなのに!
• DOMString hello();とかやりたくて
• C++側で↓してみた
void Hello(nsString& ret)
{
// hello, world!を出力する
nsString* tmp = new
nsString((nsString::char_type*)L"hello, world!");
ret = *tmp;
}
どうしてこうなった
どうしてこうなった
僕たちは悲しみを一つ一つ乗り越えていくんだ!
• とりあえずちゃんとhello, world!するまで頑張ります!
–そのあとGonk層とかいじくってみるので乞うご期待!
• 今回の技術的な内容はWebで!
–GCG研究所で検索!
宣伝
• 大事なことなので二回目ですがブログネタ募集してます
–GCG研究所で検索!
• 個人的な宣伝ですが猫でもわかるC++プログラミング第2版の編集協力しました! 買ってね!
– http://www.amazon.co.jp/dp/4797372796/a
oiroyozora-22
著作権表示
• "フォクすけ" (C) 2008 Mozilla Japan
• 背景画像はここで作りました
• フォクすけの壁紙メーカー
– http://wallpapers.foxkeh.com/ja/
続きはWebで!
•GCG研究所で検索!