狠狠撸

狠狠撸Share a Scribd company logo
takke




スマートフォン勉强会蔼関东#2   2009/8/29
                              1
?   自己紹介
 ?   MZ3/4とは?
     ? MZ3の開発環境
 ?   WM開発をラクにする方法
 ?   Luaとは?
     ? LuaをWMに組み込む
 ?   Luaを組み込んだmixiブラウザがGMail&2chブラウザにな
     るまで
     ? MZ3とLua
     ? MZ3に機能を追加してみる
     ? L.C.1
     ? L.C.2
                  最後にライブコーディングするよ!
 ?   まとめ
スマートフォン勉强会蔼関东#2                 2009/8/29
                                            2
? たっけ     / 竹内 裕昭 / TAKEUCHI Hiroaki
   ? takke.jp / @takke / id:halts
   ? 81世代
   ? 職業プログラマ(ここ数年はPHP屋)
   ? 趣味ならC++
   ? WindowsCE FANに絡んでる?
     (Aplioのサーバ側)
   ? スマートフォン
     ? W-ZERO3[es] → アドエス → E30HT
     ? iPhone 3G

スマートフォン勉强会蔼関东#2                     2009/8/29
                                                3
? 英単語学習ソフトP-Study         System (PSS)




 ? PSS   for WindowsMobile (MPSS)

? MZ3.i   / MZ4



スマートフォン勉强会蔼関东#2                       2009/8/29
                                                  4
? 知ってた人?




? 使ってる人?




スマートフォン勉强会蔼関东#2   2009/8/29
                              5
?   多機能ブラウザです

 ?   機能がいっぱいです
     ? mixi, Twitter, Gmail, auone, 2ch, RSS, Wassr,
       gooホームひとこと
     ? @kimobiler: 1日だけMZ3で全てをまかなおうとしたが、全て一
       緒のアプリで扱う意義が理解できないのでちーたんと
       wasabi+mixiモバイルだな。別々の方が便利
     ? 「mixi+Twitterは相性がいいはず」と気づいて付けてみた。
     ? 当時はちーたんもSmartterも風見鶏もなく。
 ?   要は???
     ? 自分が欲しかったから。ガラケーでしていることをこれ一本で。
     ? 「もったいない」

スマートフォン勉强会蔼関东#2                                        2009/8/29
                                                                   6
スマートフォン勉强会蔼関东#2   2009/8/29
                              7
? VisualStudio2008Pro./C++/MFC
 ? Windows Mobile 6 SDK
 ? オープンソース(GPL)
 ? http://mz3.jp




スマートフォン勉强会蔼関东#2                   2009/8/29
                                              8
? すまべん関東#1でmikiofukuさんが言ってまし
  た
  「.NET CF のアプリを作るなら、
   .NET で作って、テストして、
   それを .NET CF にコピペすればOK」
 ? MZ3=WM版、MZ4=Windows版
 ? MZ3/4 は同一ソース!
   ? MZ4 をガンガン作って、WM 用にビルドするだけ!
   ? これだけで開発効率は2倍!
   ? でもスクリプト(Lua)を使うとさらに効率アップでき
     るよ!

スマートフォン勉强会蔼関东#2           2009/8/29
                                      9
? Lua知ってた人?




スマートフォン勉强会蔼関东#2   2009/8/29
                              10
?   アプリケーションプログラムを拡張するために設計され
     た、軽くてパワフルなプログラミング言語
     ? ブラジル製「ポルトガル語で月」
     ? 手続き型言語 ? オブジェクト指向、関数型にも擬態(変態)
     ? JavaScriptに似た思想
     ? バイトコードにコンパイルされ、Lua VM で実行
     ? 速い:モノによってはPHPの3倍、Ruby1.9の30倍に。
 ? こんなところに!
     ? Adobe Photoshop Lightroom
     ? Strata 3D
     ? World of Warcraft (WoW)
     ? ソニック ワールドアドベンチャー

スマートフォン勉强会蔼関东#2                    2009/8/29
                                               11
? Luaは移植しやすい:100%          Pure C!
 ? C on ``VisualC++ WM SDK'' is NOT C.
   ? errno.hがない
   ? strcoll() strerror() getenv() localeconv()
     system() remove() tmpname() etc… がない
   ? パッチ作りました!
   ? http://mz3.jp/trac/mz3/changeset/1120




スマートフォン勉强会蔼関东#2                                   2009/8/29
                                                              12
? mixi
   ? 後述???
 ? Twitter,   Wassr, gooホーム
   ? ほぼすべてLua
 ? Luaを組み込んだmixiブラウザが
  GMail&2chブラウザになるまで
   ? GMail, 2ch ? 100% Lua
   ? GMail    ? 3日 くらい
   ? 2ch      ?2時間 くらい

スマートフォン勉强会蔼関东#2               2009/8/29
                                          13
?   mixi
     ? 一部のHTMLパーサはLua化。
     ? HTMLの仕様変更(年に1回くらい)があればすぐに対応でき
       る!
 ?   2009/8/24(月)仕様変更 ktkr!!!!!!(mixiアプリ)
     ? 日記読めない、コメントできない、etc…
     ? 軽く祭りに。
 ?   日記対応→Luaのみ
     ? 暫定版リリースまで:2時間弱
 ?   ドトールさんのご協力により…
     ? お気に入りコミュ?ユーザ機能も対応できた
 ?   まだいくつかの機能は対応待ち…

スマートフォン勉强会蔼関东#2                        2009/8/29
                                                   14
? 用意するモノ
   ? Windows マシン(NOT WM)
   ? MZ4本体
   ? テキストエディタ
   ? Firefox + LiveHTTPHeaders
   ? 注意
     ? 二十歳以上は酒とおつまみ+たばこも必要です
       →この場ではちょっと効率落ちるかもw




スマートフォン勉强会蔼関东#2                  2009/8/29
                                             15
? 「@~     に返信」?「@~ に言い返す」




スマートフォン勉强会蔼関东#2        2009/8/29
                                   16
? メニューに「スターを付ける」を追加する
 ? メニュー押下時のイベントハンドラを作る
        + LiveHTTPHeaders でPOST値を調べる
 ? Firefox
 ? イベントハンドラ内でPOST値を作り、
   アクセス種別を作り、送信する
 ? POST完了イベントハンドラを作る




スマートフォン勉强会蔼関东#2               2009/8/29
                                          17
? Luaを使うと開発がラクになるよ!
    ? 仕様変更も開発環境なしですぐに(?)対応できるよ
 ? テキストエディタだけでMZ3/4のプラグインを
   作れるよ!
 ? Luaで自分好みのAPIを作れるよ。


 ? 最後に、
   ?   「WindowsMobile開発を256倍快適にする言語Lua」
   ?   どこが256倍かって?
   ?   釣りです!!
   ?   タイトルに釣るって書いてたよ!(ルアーって)

スマートフォン勉强会蔼関东#2                  2009/8/29
                                             18
ご静聴ありがとうございまし
   た。




スマートフォン勉强会蔼関东#2   2009/8/29
                              19
以下、没スライド集です。。。




    スマートフォン勉强会蔼関东#2   2009/8/29
                                  20
?   プログラミングしたことある人なら「見れば分かる」
 ?   コメント
            -- 1行コメントだお!
            --[[
            この範囲はコメントだお!
            ]]

 ?   if     if http_status ~= 200 then
                mz3.alert("エラーだよ!“);
            end


 ?   文字列処理が得意!(パターン=疑似正規表現)
            body = line:match('<div class="msg">(.-)</div>');
            body = body:gsub('<WBR>', '');




スマートフォン勉强会蔼関东#2                                                 2009/8/29
                                                                            21
?   MessageBox を Lua から呼び出す
// in main.cpp                                         -- gmail.lua
int lua_mz3_alert(lua_State *L)                        mz3.alert('起動したよ!', 'たいとる');
{
    CString msg(lua_tostring(L, 1));   // 第1引数
    CString title(lua_tostring(L, 2)); // 第2引数

   MessageBox(GetActiveWindow(), msg, title, MB_OK);

   // 戻り値の数を返す
   return 0;
}
static const luaL_Reg lua_mz3_lib[] = {
    {"alert", lua_mz3_alert},
    {NULL, NULL}
};
// in main function
luaL_register(L, "mz3", lua_mz3_lib);


スマートフォン勉强会蔼関东#2                                                      2009/8/29
                                                                                  22
?    Rubyより30倍、PHPより3倍程度速い場合も。
             ?    http://shootout.alioth.debian.org/u32q/benchmark.
                  php?test=all&lang=lua&lang2=yarv&box=1


スマートフォン勉强会蔼関东#2                                         2009/8/29
                                                                      23
? 自分好みのAPIを設計しよう!
 ? APIは全部関数
   ? Luaでラッパーを作る(クラス化)
 ? イベント駆動型
   ? 「通信が終わったよ!」「ユーザが右クリックし
     たよ」といったイベントに対してLua側の関数が
     呼ばれる。
   ? どの関数を呼ぶかはあらかじめLua側から登録し
     ておく(イベントハンドラの登録)
   ? JavaScriptのイベントハンドラと同じ仕組み。


スマートフォン勉强会蔼関东#2           2009/8/29
                                      24
? Twitter
   ? 誰かのタイムライン、お気に入り
     (ストーキング用)
   ? アイコンクリックで返信
 ? 作者も使ってない機能がいっぱい
   ? 巡回とか




スマートフォン勉强会蔼関东#2        2009/8/29
                                   25
? Lua   は VM で動く。
   ? 起動時にコンパイラが走る。
   ? プリコンパイルしておけばもっと速くなる!




スマートフォン勉强会蔼関东#2       2009/8/29
                                  26
? 最近は   WM開発というと
   .NET Compact Framework
   ですよね?
 ? .NET CF + Lua は?
 ? 誰かやって!




スマートフォン勉强会蔼関东#2             2009/8/29
                                        27
? 文字コードがSJIS
 ? Twitterの(というより@kohmiの)「~」
  が化ける!

 ? Lua側の文字コードを UTF-8 にできる。
 ? 組み込むときは UTF-8 にしましょう。
 ? MZ3/4はVer.2くらいでやります、たぶ
   ん。

スマートフォン勉强会蔼関东#2        2009/8/29
                                   28
? cppソースから半自動でluadocを作る方
  法。




スマートフォン勉强会蔼関东#2       2009/8/29
                                  29
以下、1000speakersの
MZ3関連スライド集です。




    スマートフォン勉强会蔼関东#2   2009/8/29
                                  30
? WMのブラウザ(Opera,IE)は遅すぎます
 ? WILLCOMだとモバイルmixi使えない
   (~2006)
 ? mixi&TwitterクライアントMZ3.i / MZ4
   ? mixi : スクレイピング
            (一部API), 仕様変(ry
   ? TwitterとRSS
   ? VisualC++ / MFC
   ? Windows版=MZ4 (仕事中にry

スマートフォン勉强会蔼関东#2               2009/8/29
                                          31
? 2006/08 まこさんがプロトタイプ作成
   ? 2006/11 ソース公開 ? いっちゅうさんが引継ぎ
                  ? たっけが横取りw
               <中略>
   ?   2007/12 絵文字描画対応(仕事人さん)
   ?   2007/12 iPhone風UI?
   ?   2008/04 Twitterクライアント搭載
   ?   2008/05 もっとiPhone風UI?
                 (モりやまさん)
                 RSSリーダ搭載?
   ?   2008/xx プラグイン化?
スマートフォン勉强会蔼関东#2                  2009/8/29
                                             32

More Related Content

WindowsMobile開発を256倍快適にする言語 Lua

  • 2. ? 自己紹介 ? MZ3/4とは? ? MZ3の開発環境 ? WM開発をラクにする方法 ? Luaとは? ? LuaをWMに組み込む ? Luaを組み込んだmixiブラウザがGMail&2chブラウザにな るまで ? MZ3とLua ? MZ3に機能を追加してみる ? L.C.1 ? L.C.2 最後にライブコーディングするよ! ? まとめ スマートフォン勉强会蔼関东#2 2009/8/29 2
  • 3. ? たっけ / 竹内 裕昭 / TAKEUCHI Hiroaki ? takke.jp / @takke / id:halts ? 81世代 ? 職業プログラマ(ここ数年はPHP屋) ? 趣味ならC++ ? WindowsCE FANに絡んでる? (Aplioのサーバ側) ? スマートフォン ? W-ZERO3[es] → アドエス → E30HT ? iPhone 3G スマートフォン勉强会蔼関东#2 2009/8/29 3
  • 4. ? 英単語学習ソフトP-Study System (PSS) ? PSS for WindowsMobile (MPSS) ? MZ3.i / MZ4 スマートフォン勉强会蔼関东#2 2009/8/29 4
  • 6. ? 多機能ブラウザです ? 機能がいっぱいです ? mixi, Twitter, Gmail, auone, 2ch, RSS, Wassr, gooホームひとこと ? @kimobiler: 1日だけMZ3で全てをまかなおうとしたが、全て一 緒のアプリで扱う意義が理解できないのでちーたんと wasabi+mixiモバイルだな。別々の方が便利 ? 「mixi+Twitterは相性がいいはず」と気づいて付けてみた。 ? 当時はちーたんもSmartterも風見鶏もなく。 ? 要は??? ? 自分が欲しかったから。ガラケーでしていることをこれ一本で。 ? 「もったいない」 スマートフォン勉强会蔼関东#2 2009/8/29 6
  • 8. ? VisualStudio2008Pro./C++/MFC ? Windows Mobile 6 SDK ? オープンソース(GPL) ? http://mz3.jp スマートフォン勉强会蔼関东#2 2009/8/29 8
  • 9. ? すまべん関東#1でmikiofukuさんが言ってまし た 「.NET CF のアプリを作るなら、 .NET で作って、テストして、 それを .NET CF にコピペすればOK」 ? MZ3=WM版、MZ4=Windows版 ? MZ3/4 は同一ソース! ? MZ4 をガンガン作って、WM 用にビルドするだけ! ? これだけで開発効率は2倍! ? でもスクリプト(Lua)を使うとさらに効率アップでき るよ! スマートフォン勉强会蔼関东#2 2009/8/29 9
  • 11. ? アプリケーションプログラムを拡張するために設計され た、軽くてパワフルなプログラミング言語 ? ブラジル製「ポルトガル語で月」 ? 手続き型言語 ? オブジェクト指向、関数型にも擬態(変態) ? JavaScriptに似た思想 ? バイトコードにコンパイルされ、Lua VM で実行 ? 速い:モノによってはPHPの3倍、Ruby1.9の30倍に。 ? こんなところに! ? Adobe Photoshop Lightroom ? Strata 3D ? World of Warcraft (WoW) ? ソニック ワールドアドベンチャー スマートフォン勉强会蔼関东#2 2009/8/29 11
  • 12. ? Luaは移植しやすい:100% Pure C! ? C on ``VisualC++ WM SDK'' is NOT C. ? errno.hがない ? strcoll() strerror() getenv() localeconv() system() remove() tmpname() etc… がない ? パッチ作りました! ? http://mz3.jp/trac/mz3/changeset/1120 スマートフォン勉强会蔼関东#2 2009/8/29 12
  • 13. ? mixi ? 後述??? ? Twitter, Wassr, gooホーム ? ほぼすべてLua ? Luaを組み込んだmixiブラウザが GMail&2chブラウザになるまで ? GMail, 2ch ? 100% Lua ? GMail ? 3日 くらい ? 2ch ?2時間 くらい スマートフォン勉强会蔼関东#2 2009/8/29 13
  • 14. ? mixi ? 一部のHTMLパーサはLua化。 ? HTMLの仕様変更(年に1回くらい)があればすぐに対応でき る! ? 2009/8/24(月)仕様変更 ktkr!!!!!!(mixiアプリ) ? 日記読めない、コメントできない、etc… ? 軽く祭りに。 ? 日記対応→Luaのみ ? 暫定版リリースまで:2時間弱 ? ドトールさんのご協力により… ? お気に入りコミュ?ユーザ機能も対応できた ? まだいくつかの機能は対応待ち… スマートフォン勉强会蔼関东#2 2009/8/29 14
  • 15. ? 用意するモノ ? Windows マシン(NOT WM) ? MZ4本体 ? テキストエディタ ? Firefox + LiveHTTPHeaders ? 注意 ? 二十歳以上は酒とおつまみ+たばこも必要です →この場ではちょっと効率落ちるかもw スマートフォン勉强会蔼関东#2 2009/8/29 15
  • 16. ? 「@~ に返信」?「@~ に言い返す」 スマートフォン勉强会蔼関东#2 2009/8/29 16
  • 17. ? メニューに「スターを付ける」を追加する ? メニュー押下時のイベントハンドラを作る + LiveHTTPHeaders でPOST値を調べる ? Firefox ? イベントハンドラ内でPOST値を作り、 アクセス種別を作り、送信する ? POST完了イベントハンドラを作る スマートフォン勉强会蔼関东#2 2009/8/29 17
  • 18. ? Luaを使うと開発がラクになるよ! ? 仕様変更も開発環境なしですぐに(?)対応できるよ ? テキストエディタだけでMZ3/4のプラグインを 作れるよ! ? Luaで自分好みのAPIを作れるよ。 ? 最後に、 ? 「WindowsMobile開発を256倍快適にする言語Lua」 ? どこが256倍かって? ? 釣りです!! ? タイトルに釣るって書いてたよ!(ルアーって) スマートフォン勉强会蔼関东#2 2009/8/29 18
  • 19. ご静聴ありがとうございまし た。 スマートフォン勉强会蔼関东#2 2009/8/29 19
  • 20. 以下、没スライド集です。。。 スマートフォン勉强会蔼関东#2 2009/8/29 20
  • 21. ? プログラミングしたことある人なら「見れば分かる」 ? コメント -- 1行コメントだお! --[[ この範囲はコメントだお! ]] ? if if http_status ~= 200 then mz3.alert("エラーだよ!“); end ? 文字列処理が得意!(パターン=疑似正規表現) body = line:match('<div class="msg">(.-)</div>'); body = body:gsub('<WBR>', ''); スマートフォン勉强会蔼関东#2 2009/8/29 21
  • 22. ? MessageBox を Lua から呼び出す // in main.cpp -- gmail.lua int lua_mz3_alert(lua_State *L) mz3.alert('起動したよ!', 'たいとる'); { CString msg(lua_tostring(L, 1)); // 第1引数 CString title(lua_tostring(L, 2)); // 第2引数 MessageBox(GetActiveWindow(), msg, title, MB_OK); // 戻り値の数を返す return 0; } static const luaL_Reg lua_mz3_lib[] = { {"alert", lua_mz3_alert}, {NULL, NULL} }; // in main function luaL_register(L, "mz3", lua_mz3_lib); スマートフォン勉强会蔼関东#2 2009/8/29 22
  • 23. ? Rubyより30倍、PHPより3倍程度速い場合も。 ? http://shootout.alioth.debian.org/u32q/benchmark. php?test=all&lang=lua&lang2=yarv&box=1 スマートフォン勉强会蔼関东#2 2009/8/29 23
  • 24. ? 自分好みのAPIを設計しよう! ? APIは全部関数 ? Luaでラッパーを作る(クラス化) ? イベント駆動型 ? 「通信が終わったよ!」「ユーザが右クリックし たよ」といったイベントに対してLua側の関数が 呼ばれる。 ? どの関数を呼ぶかはあらかじめLua側から登録し ておく(イベントハンドラの登録) ? JavaScriptのイベントハンドラと同じ仕組み。 スマートフォン勉强会蔼関东#2 2009/8/29 24
  • 25. ? Twitter ? 誰かのタイムライン、お気に入り (ストーキング用) ? アイコンクリックで返信 ? 作者も使ってない機能がいっぱい ? 巡回とか スマートフォン勉强会蔼関东#2 2009/8/29 25
  • 26. ? Lua は VM で動く。 ? 起動時にコンパイラが走る。 ? プリコンパイルしておけばもっと速くなる! スマートフォン勉强会蔼関东#2 2009/8/29 26
  • 27. ? 最近は WM開発というと .NET Compact Framework ですよね? ? .NET CF + Lua は? ? 誰かやって! スマートフォン勉强会蔼関东#2 2009/8/29 27
  • 28. ? 文字コードがSJIS ? Twitterの(というより@kohmiの)「~」 が化ける! ? Lua側の文字コードを UTF-8 にできる。 ? 組み込むときは UTF-8 にしましょう。 ? MZ3/4はVer.2くらいでやります、たぶ ん。 スマートフォン勉强会蔼関东#2 2009/8/29 28
  • 29. ? cppソースから半自動でluadocを作る方 法。 スマートフォン勉强会蔼関东#2 2009/8/29 29
  • 30. 以下、1000speakersの MZ3関連スライド集です。 スマートフォン勉强会蔼関东#2 2009/8/29 30
  • 31. ? WMのブラウザ(Opera,IE)は遅すぎます ? WILLCOMだとモバイルmixi使えない (~2006) ? mixi&TwitterクライアントMZ3.i / MZ4 ? mixi : スクレイピング (一部API), 仕様変(ry ? TwitterとRSS ? VisualC++ / MFC ? Windows版=MZ4 (仕事中にry スマートフォン勉强会蔼関东#2 2009/8/29 31
  • 32. ? 2006/08 まこさんがプロトタイプ作成 ? 2006/11 ソース公開 ? いっちゅうさんが引継ぎ ? たっけが横取りw <中略> ? 2007/12 絵文字描画対応(仕事人さん) ? 2007/12 iPhone風UI? ? 2008/04 Twitterクライアント搭載 ? 2008/05 もっとiPhone風UI? (モりやまさん) RSSリーダ搭載? ? 2008/xx プラグイン化? スマートフォン勉强会蔼関东#2 2009/8/29 32