ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

3月3日 mixi Engineers' Seminar

mixi Engineers' Seminar #1 : ATND
iOS端末もAndroid端末も持ってない男ですが、これからのトレンドなので参加してきました。
(一応、Android端末は近々購入する予定)
セミナー聞きながらの雑メモなので読みづらいですがご容赦を。

Objective-C一巡り (衣川憲治さん@mixi)

2010年11月入社
k_kinukawa、k.kinukawa
Trangram(タングラム)・・・2009年下期未踏スパクリ認定


Obj-Cはエンジニア需要あるが供給がおいついてない
今後はネイティブ+Webアプリの流れ
ビジネスとして定着してきた・・・Obj-Cも武器になる


特徴

  • 動的
  • C言語上位互換
  • Smalltalk仕込みのオブジェクト指向
  • クラス継承できる
  • iOS向けはGCできない
    • でも、こうすればOKというパターンはもう決まってる
  • 納税しなくてもプログラムは実行可能(ライセンスなくても勉強できる)


型は中身は全てid型
クラス名は型チェックするが、警告はするがエラーにはならない。


Objective-Cは「メソッドを呼ぶ」とは言わない。「メッセージを投げる」
[]で書く書式がそんなイメージらしい


動的結合
メッセージを投げてどのオブジェクトに対して動作するかは、実行時に決まる


セレクタ:メソッド名の文字列表現
SEL型:セレクタの内部表現
IMP型:メソッドの実装を保持。クロージャーっぽい?

  • 実際はO-Cのメソッド尾は内部的にはCの関数
  • なので、その関数ポインタをIMP型で扱える

「かみやんさんの技術者日記 2011-02-20 メモリ管理」を参照してください。


プロトコル:interfaceみたいなもの
カテゴリ:Mixinに近いもの・・・Traitかな、どちらかというと。
デリゲート:処理の委譲。Cocoaではイベントなんちゃらで使ってる


Blocks:いわゆるクロージャー。AppleによるC言語の拡張。ISOに提案中。

  • ただし、所詮C言語なので、型指定を厳密にする必要有り
  • メモリ管理も必要。素のCの知識必要。

Blocksを利用した機能

  • ランドセントラルディスパッチ
    • マルチスレッド?が簡単に扱える、らしい
  • アセットなんちゃら


まとめ

  • 面白いよ
  • つらいのは最初の内
  • 覚えると重宝されるよ。


宣伝
mixi graph APIライブラリfor iPhoneプライベートで作ってる

GREEHTML5iOS+Android対応(熊谷健太郎さん@GREE

@
2010年6月末に入社


アーキテクチャの選択肢
画面構成・遷移


動的なHTML組み立て

  • DOM
    • App cache、Web SQL DB等と組み合わせて高度なWebAppを作れる
    • ネイティブアプリとAPIを共通化可能
    • 開発はまま大変
  • innerHTML:

GREEajax+innerHTMLを採用


ライブラリ(iUI、jpTouch、SenchaTouch)

  • レイアウトのパターンが制約されるのでその範囲内で作るならOK
  • androidでもiOSっぽいみためになってしまうが、それでよければ
  • 例があまりない(mixi Touchくらい)


今から作るなら

  • jQuery Mobile
    • 規約に従ってHTML書くとtouchデバイスに最適化された表示にしてくれる
  • 手作り
    • ボタンを大きくするだけでも結構快適になる
  • Titanium Mobile
    • jsでネイティブアプリ


Emoji
iOSは2.2から対応。Androidは非対応
iOSSoftBankの絵文字と1:1対応(TMだけ例外)
Android OS標準では非サポート
2.3以降で対応?
でもフォントが用意されてない。。。


Push通知
iOS 3.0、Android2.2から

  • Apple Push Notification
    • メール、コメント、いいねの到着通知
    • 遅延は5秒くらい
    • 送信料は制限無し(Appleの人がいってた)
    • 非同期実装で送る
      • php-apns AnyEvent::APNS
      • GREE プラットフォームも対応予定
  • C2DM(Android)

アメーバピグ/AIR for Android (切通伸人さん@サイバーエージェント)

FLASH OOP for AS3.0書いた人
Twitter:@modeplus


Adobe AIR特徴
Webブラウザと違いローカルファイルにさわれる


Air for Android
2010年?月リリース
Android2.2以上


Ameba pigg
現在600万人
2009年2月リリース
約60名で開発。でざいなー半数
FlashPlayer10.1以上で動作
Android版は2010年11月1日リリース。
開発体制5人。
Android2.2以降
業務時間外で作った


Android2.2以降でFP10.1動くので、ブラウザで動かしてみた。
結果:動くけど操作が難しい

  • アドレスバー邪魔
  • ボタン小さい
  • チャットするとキーボードが閉じない
    • フルスクリーンモードにしてみたら・・・テキスト入力ができない
    • jsポップアップなら・・・画面がフルで使えない


環境構築が大変だったが、移植は楽だった
環境構築

  • 当初ツールが余り用意されて無くてコマンド叩いたり
  • SDKが毎週アップデートされて、下位互換無かったり

移植

  • PC版がもともと汎用性のある設計にしていた
  • AIRだから、PCデスクトップで動くものはほぼ動く
  • デバッグも楽
    • Androidはコンテキストメニューがないので、PC用でカスタマイズしてる場合は削除
    • マウス周りはそのままいけた
    • backボタンを無効化
      • 間違っておして閉じることがあったので
    • piggはリアルタイム重視なので、バックグラウンドに回ったらアプリ終了するようにした

tagletではじめる、誰でも簡単ゆるふわWeb系NFCプログラミング!(井上恭輔さん@mixi)

twitter @kyoro353
2006年度 未踏のひと


巫女萌えでgoogle1位
mixiが女子高生開発w 広報ぶち切れwww


ガラパロイドw
Android2.3からNFC対応


taglet
スイカ・パスモなどにtwitterIDなどを関連づける
クラウドで全世界に共有
無料で使える
pokenみたい)


開発の話
スイカ等に内蔵されてるIDがかざすと取れるので、それをHash化してデータ管理
3連休で寝ずに作ったとか!
インテントを活用。tel:、mailto:など、URLの頭が違うだけ


2011年2月9日:mixiリアルチェック、リアルチェックインをリリース
実物(本に仕込むとか)にタッチしてチェック・チェックインする
イベント会場でリアルチェックインとか面白そう


でも、日本未発売端末w

雑感

taglet面白そうだなぁ。
NFCはそれこそ一般に浸透したら、今の赤外線通信で連絡先交換に取ってかわるようになるかも。
合コンに便利そう(笑)


それにしても、未踏認定の経歴あるエンジニアの方が2名いましたが
そのパワーや発想力、素晴らしいなぁと感じました。
未踏の方は、他のセミナーでも何人かみてるのと
以前仕事でちょっとだけ絡んだことある人が過去にいるんですが
その仕事で絡んだことある1人は、意外とたいしたことないなw という印象だったんですが
それ以外は本当に実力者であることをまざまざと感じました。
そんな未踏の事業してるIPA事業仕分けでばっさり・・・というのは切ないですね。。。
資源が無くて、技術立国の国の政府がそれではね・・・
もっとそのあたりに精通した方が多数政治に関わるようになって欲しいな・・・と思ったりもしました。

2月26日 第五回ライブドア・テクニカルセミナー

まだデブサミとCodeIgniterカンファレンスの記事を書いてないのですが
ちょいと時系列飛んで、先週行ったこちらのセミナーの記事を先に。


livedoor Techブログ : 第五回ライブドア・テクニカルセミナー開催のお知らせ

「開発者から見たAndroidiOSアプリの違い(仮)」(佐孝太郎さん)

とても端的にそれぞれの特徴をまとめていてわかりやすかったです。
概ね

  • 最初の入り口は敷居低いけど、手の込んだことをしようとすると急にハードルあがるAndroid
  • 最初の敷居高いけど、慣れれば柔軟に対応可能なiOS

といったところでしょうか。



途中あるスライドがあまりに衝撃的で、TwitterのTLが一時そのスライドで埋まってましたねwww

HTML5で動くFlash Playerを作ってみた」(紀平 拓男)さん

ニコ動「1時間でテトリス作ってみた」の人


HTML5はFlashの代替となるポテンシャルを持っている
泥臭い作業を延々と続ける時に「心を折らない」のおはとても大切
Canvasの描画は遅いが、工夫次第ではSVGの倍程度早くなる


それにしても、涙ぐましいまでのパフォーマンス向上への取り組みはすごい。
まさに「心を折らない」が大事ってことですよね。

「対談: 新進気鋭のSAPに聞いた現場事情」

【スピーカー】石井 武さん
【聞き手】伊勢 幸一さん

元「ブラウザ三国志」の人
現「ダービーズキングの伝説」(プラットフォームはGREE)の人


本番のリリースは1日平均4〜8回!
「開発期間が1ヶ月しかなかったので、小さく産んで大きく育てようという方針で」


今後は「比較的早いタイミングで課金が来る設計」が必要
→課金したアプリはユーザに覚えてもらいやすい


今のソーシャルアプリ市場は、ファミコンに似た市場
(これは別のところで他の人も言ってた記憶がある)
海外からビックタイトルがやって来そうなタイトル、facebookで流行ってるものはやめよう。
10万から20万の分母(ユーザベース)ができると、バイラルが効いてくる
ゲームの面白さ、国産のよさ、「ゲームは輸出産業です」。


Flash LiteはAndroid2.1への移植は難しい(2.2ならそれほど難しくない)
iOSの方は覚えてしまえば作法は1つ。Androidの場合はこっちで表示できたのがあっちで表示できるとは限らないというのがかなり厳しい。
女性ターゲットであればiPhone対応を考えた。男性ターゲットなのでAndroidに絞った
(競馬ゲームをやる層とあっている)


他、「平気徹夜時間」「会社に寝れる場所必要」などの名?言も。

スマートフォン向けソーシャルアプリ開発の現在」(伊藤 直也さん)

※発表内容はデブサミのものと概ね同じ。


世界的な動向として、PCからスマホへの移行がすすんでいる
出荷台数はすでにスマホが上回った。利用時間もPCは減少
アプリ内課金が急成長している
→ダウンロード課金からシフトしている


NFC(Near Field Communication)
 Android2.3 iPhone5/iPad2にも搭載との見方
 taglet・・・情報共有サービス、mixiチェックイン


HTML5+CSS3+JS
AndroidiOSもカメラには(HTML+JSでは)アクセスできない。
・・・HTMLだけでできないことをネイティブが補う


ネイティブはバレンタインイベントなど、特定の日付けを狙ったものがうちにくい。
特にAppleは特定の日にリリースできない、rejectされる可能性もある


GIFアニメーションAndroidで再生できない
→ライブラリを作って対応(GREE Labブログに記事あり)


クロスプラットフォーム開発

2月16日 ZendEngine勉強会@GREE

ZendEngine勉強会@東京 : ATND


CやC++なんてもう久しく触っていないので
新鮮だった反面、ついていくのがほんと大変でした。。。
でも、勉強会自体はすごくためになりました。
とにかくね・・・一言で言うと、「神々の競演」というか、「神々の戯れ」というか。。。


以下、題目・概要と当日とってたメモを。

php session_handler pecl☆magica(rtiさん)

新潟修飾子の人
独自のセッションハンドラをPHP拡張で作る話
あいかわらず独特のプレゼン資料と語り口が良い

zend_hashを知る者はZend Engineを制す(rskyさん)

PHP拡張作るならまず押さえたい仕様:zend_hash
rskyさんのgithubにphp-extension-snippets っていうスニペット集がある
zend_hashを使ってmixinを実現する例
(おまけ)ZendEngineを改造して演算子オーバーロードを実現
↑これはさすがに拡張だけでは実現できず、コアを一部書き換えた

ZENOP(ZendEngine is not Only PHP)(masaki_fujimotoさん)

冒頭に「俺とZendEngine」w おっぱいおっぱいw
ZendEngineはPHPと切り離して動作させることができるライブラリで
それを使って商売をたくらんでいたらしい。


結論:PHPでいいじゃんw


さらに、演算子オーバーロードネタがかぶるという奇跡もw
神々の戯れのいきつくところは同じってことか?

拡張ライブラリでなるべく簡単に構文を追加する方法(anatooさん)

XHPライブラリ
facebookの人が作った
PHPの中にxmlを埋め込むような形で記述
マクロみたいなもの

Boost.PHPの話 (moriyoshiさん)

C++PHP拡張を記述
※LTなのでメモしてる余裕なかった。。。

2月10日 PHP勉強会@コンテンツワン

第55回PHP勉強会@関東 - events.php.gr.jp

PHP勉強会自体も久しぶりだし、僕が参加するのも久しぶりでした。
会場はコンテンツワン様。ありがとうございます。

Behat入門(k-kishidaさん)

TDDすらできてない自分ですが、BDD、なかなか興味深い。
Rubyもまたあまり詳しくないのですが
RubyでいうところのCucumberにあたるのがBehat。RSpecにあたるのがPHPSpec。
(ただ、PHPSpecはあまりメンテナンスされてないらしい)


BehatはSymfony2ベースで作られてるので、PHP5.3.1以降対応。


「要求を検証する」というのがいいですね。
特に、非技術者の人がシナリオみても、なんとなくわかりそうなところはポイント高いかと。

Samurai Frameworkについて(grateful_deadさん)

フルスタックMVCフレームワーク
Mapleからのfork
O/Rマッパ ActiveGateway、migrate、PHPSpec
BDDを推奨
(期せずしてBDD推しな勉強会になりましたね)
Actionがメソッドではなく固有のクラスになっている


今後の予定

  • 国際化対応
  • 携帯関連(絵文字)
  • SPECランナーをラップ


自社のソーシャルアプリ案件で、10万PV/日は捌けているとのこと。

SL4A+PFA(shimookaさん)

SL4A = Scripting Layer 4Android
PFA = PHP for Android


PFAはSL4Aの上位レイヤで動く。
Android1.5以上対応
PHPはver5.3.3
拡張はjson、sockets、opensslのみ
phpコマンドだけ。PEAR/PECLは無し
PEARや他のライブラリの導入はできる
PECLは難しそう


肝心のデモをやっているところで、電話が入ってしまい見れなかったのが痛恨。。。
それにしても、AndroidPHPを動かすって発想がすごい。

雑記

今回は時間の都合か、LT枠は無し。
LTくらいであれば今度話してみたい。いくつか小ネタはあるので。

1月29日 株式会社びぎねっと 設立10周年記念セミナー 『Linuxサーバー構築入門』 参加

こちらももう1ヶ月前か。
実務ではバリバリLinux触ってる人間が、今更こういうセミナー受ける?という気もしますが
実務の時は、必要に迫られて、必要な知識を断片的に身につける、みたいな形になってしまうので
時々リセットしてちゃんと体系的に学ぶ、ということも大事なんじゃないかなと思いまして。
あと、特にDNSサーバは自分も触ったことないので、というのもあり。

で、このセミナーは聴くだけの形だったのですが
やはり自分で触って動かしながらやりたいですね。
しかし、マシン3台調達するのが面倒・・・というか、調達はまだしも、それを置く物理的なスペースがないんだよなぁ。。。
やはり仮想化で自分もやるしかないかな。

あと、セミナー中では、VirtualBox使ってたんですが
だいぶ使いやすそうでしたね。
なんか以前はあんまり使い勝手よくないような話を聞いていたのですが。
こちらは近々試してみたいと思います。

びぎねっとブログ » 株式会社びぎねっと 設立10周年記念セミナー開催のご案内

1月28日 Vol.32 発表資料

もう完全に周回遅れなんですが、資料挙げ忘れてたので晒しておきます。

テーマは2010年の漢字に選ばれた「暑」。
真冬に「暑」ってどういうことだよ?という感じですけど、テーマの決定過程上仕方ないですよね。。。
で、考えたあげく、100%趣味丸出しのLTにしてしまいましたw
こっちのブログで趣味のことを全面に出すの初めてかも。。。

そもそもこのブログのタイトルも、Mr.Childrenに由来しますしね。
JASRACに引っかからないよう、歌詞からではないところから引用するという絶妙な技使ってますがw

で、発表当日は、ちょいと小道具を用意しまして
こんな風に夏フェス参戦してるんですよ〜、てな感じで
タオルはおったり、帽子かぶったり。

で、実はLT5分に収まらなくて喋れなかったんですが
最後の方で、「水分補給重要」って話もありました。
ほんと、真夏の炎天下に7時間もいるのは、普通なら正気の沙汰じゃないです。
水分は絶対手元から切らさないこと。
てのを、ブログで補足しておきますw

Events/2011/01 - Genesis Lightning Talks (a.k.a. GLT) Wiki

バレンタインチョコ欲しい!

欲しいプレゼントは…

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

買いたい、買いたいと前から思っているんだけど
値段が張るのでいまだに買えてないので。


あと、すいません。最近参加したイベントのレポ書けてないので、後で書きます。