1 / 32

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

WindowsMobile 開発を 256 倍快適にする言語 Lua. t akke. アジェンダ. 最後にライブコーディングするよ!. 自己紹介 MZ3/4 とは? MZ3 の開発環境 WM 開発をラクにする方法 Lua とは? Lua を WM に組み込む Lua を組み込んだ mixi ブラウザが GMail&2ch ブラウザになるまで MZ3 と Lua MZ3 に機能を追加してみる L.C.1 L.C.2 まとめ. 自己紹介 (1/2). たっけ / 竹内 裕昭 / TAKEUCHI Hiroaki

rana-hanson
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WindowsMobile開発を256倍快適にする言語 Lua takke スマートフォン勉強会@関東#2

  2. アジェンダ 最後にライブコーディングするよ! スマートフォン勉強会@関東#2 • 自己紹介 • MZ3/4とは? • MZ3の開発環境 • WM開発をラクにする方法 • Luaとは? • LuaをWMに組み込む • Luaを組み込んだmixiブラウザがGMail&2chブラウザになるまで • MZ3とLua • MZ3に機能を追加してみる • L.C.1 • L.C.2 • まとめ

  3. 自己紹介(1/2) スマートフォン勉強会@関東#2 • たっけ/ 竹内 裕昭 / TAKEUCHI Hiroaki • takke.jp / @takke / id:halts • 81世代 • 職業プログラマ(ここ数年はPHP屋) • 趣味ならC++ • WindowsCE FANに絡んでる?(Aplioのサーバ側) • スマートフォン • W-ZERO3[es] →アドエス→ E30HT • iPhone 3G

  4. 自己紹介(2/2)/ つくったもの • PSS for WindowsMobile (MPSS) • MZ3.i / MZ4 スマートフォン勉強会@関東#2 英単語学習ソフトP-Study System (PSS)

  5. MZ3/4とは?(1/2) • 使ってる人? スマートフォン勉強会@関東#2 知ってた人?

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

  7. さて、そろそろ開発寄りの話をしようか。 スマートフォン勉強会@関東#2

  8. MZ3/4 の開発環境 スマートフォン勉強会@関東#2 VisualStudio2008 Pro./C++/MFC Windows Mobile 6 SDK オープンソース(GPL) http://mz3.jp

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

  10. Luaとは?(1/2) スマートフォン勉強会@関東#2 Lua知ってた人?

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

  12. LuaをWMに組み込む スマートフォン勉強会@関東#2 • 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

  13. MZ3とLua スマートフォン勉強会@関東#2 • mixi • 後述・・・ • Twitter, Wassr, gooホーム • ほぼすべてLua • Luaを組み込んだmixiブラウザがGMail&2chブラウザになるまで • GMail, 2ch ⇒ 100% Lua • GMail⇒ 3日 くらい • 2ch ⇒2時間 くらい

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

  15. L.C.: MZ3/4に機能を追加してみる スマートフォン勉強会@関東#2 • 用意するモノ • Windows マシン(NOT WM) • MZ4本体 • テキストエディタ • Firefox + LiveHTTPHeaders • 注意 • 二十歳以上は酒とおつまみ+たばこも必要です→この場ではちょっと効率落ちるかもw

  16. L.C.1:Twitterのメニューを変える スマートフォン勉強会@関東#2 「@~ に返信」⇒「@~ に言い返す」

  17. L.C.2:GMailでメールにスターを付ける スマートフォン勉強会@関東#2 メニューに「スターを付ける」を追加する メニュー押下時のイベントハンドラを作る Firefox + LiveHTTPHeadersでPOST値を調べる イベントハンドラ内でPOST値を作り、アクセス種別を作り、送信する POST完了イベントハンドラを作る

  18. まとめ スマートフォン勉強会@関東#2 • Luaを使うと開発がラクになるよ! • 仕様変更も開発環境なしですぐに(?)対応できるよ • テキストエディタだけでMZ3/4のプラグインを作れるよ! • Luaで自分好みのAPIを作れるよ。 • 最後に、 • 「WindowsMobile開発を256倍快適にする言語Lua」 • どこが256倍かって? • 釣りです!! • タイトルに釣るって書いてたよ!(ルアーって)

  19. ご静聴ありがとうございました。 スマートフォン勉強会@関東#2

  20. 以下、没スライド集です。。。 スマートフォン勉強会@関東#2

  21. Luaの文法 -- 1行コメントだお! --[[ この範囲はコメントだお! ]] if http_status ~= 200 then mz3.alert("エラーだよ!“);end body = line:match('<div class="msg">(.-)</div>'); body = body:gsub('<WBR>', ''); スマートフォン勉強会@関東#2 プログラミングしたことある人なら「見れば分かる」 コメント if 文字列処理が得意!(パターン=疑似正規表現)

  22. Luaの組み込み例 // in main.cpp intlua_mz3_alert(lua_State *L) { CStringmsg(lua_tostring(L, 1)); // 第1引数 CString title(lua_tostring(L, 2)); // 第2引数 MessageBox(GetActiveWindow(), msg, title, MB_OK); // 戻り値の数を返す return 0; } static const luaL_Reglua_mz3_lib[] = { {"alert", lua_mz3_alert}, {NULL, NULL} }; // in main function luaL_register(L, "mz3", lua_mz3_lib); -- gmail.lua mz3.alert('起動したよ!', 'たいとる'); スマートフォン勉強会@関東#2 MessageBoxを Luaから呼び出す

  23. Luaは速い! スマートフォン勉強会@関東#2 Rubyより30倍、PHPより3倍程度速い場合も。 http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=lua&lang2=yarv&box=1

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

  25. MZ3 の便利な使い方 スマートフォン勉強会@関東#2 • Twitter • 誰かのタイムライン、お気に入り(ストーキング用) • アイコンクリックで返信 • 作者も使ってない機能がいっぱい • 巡回とか

  26. Luaの高速化テクニック スマートフォン勉強会@関東#2 • Luaは VM で動く。 • 起動時にコンパイラが走る。 • プリコンパイルしておけばもっと速くなる!

  27. .NET CF + Lua スマートフォン勉強会@関東#2 最近は WM開発というと.NET Compact Frameworkですよね? .NET CF + Luaは? 誰かやって!

  28. MZ3 +Luaのイケテナイところ スマートフォン勉強会@関東#2 文字コードがSJIS Twitterの(というより@kohmiの)「~」が化ける! Lua側の文字コードを UTF-8 にできる。 組み込むときは UTF-8 にしましょう。 MZ3/4はVer.2くらいでやります、たぶん。

  29. その他のネタ スマートフォン勉強会@関東#2 cppソースから半自動でluadocを作る方法。

  30. 以下、1000speakersのMZ3関連スライド集です。 スマートフォン勉強会@関東#2

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

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

More Related