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

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

コントローラを多層化する

http://d.hatena.ne.jp/noopable/20090205/1233792325
のコメント欄を見て知った。
Zend Frameworkは、コントローラの多層化できるんだ。
もっと早く知っていれば…

具体的な方法。
コントローラは

controllers/Foo/Bar/BazController.php

というパスで、クラス名は「Foo_Bar_BazController」とする。

ビューも同じようにファイルパスは

views/scripts/foo/bar/baz/index.phtml

で、アクセスするURLは

http://example.com/foo_bar_baz/index

となる。

ちなみに、モジュール構造を採用している場合は
クラス名は「<モジュール名>_Foo_Bar_BazController」
ビューのファイルパスは

views/scripts/<モジュール名>/foo/bar/baz/index.phtml

で、URLは

http://example.com/<モジュール名>/foo_bar_baz/index

となる。

ちなみに、コントローラ名が複数語で構成されている場合
例えば「Foo_Bar_MyHogeFugaController」とすると
アクセスURLは

http://example.com/<モジュール名>/foo_bar_my-hoge-fuga/index

となる。
多層化のパスの区切りがアンダーバー。
単語の区切りがハイフン。
…という、ちょっとわかりにくいルール…
まぁこのあたりは、Zend Frameworkのデフォルトルーティング使わず
ちゃんとマッピングルールを作った方がいいでしょうね。

社会人復帰します。

昨日、久しぶりにエントリー書いたんですが、実はこれのため。

ほんとは当日に書きたかったんですが、時節柄、嘘っぽくなるので(笑)
前日にご報告。

昨年暮れから長らくニート生活しておりましたが
4月から社会人復帰します。

勤務先は・・・別に言ってもいいんだろうけど
何となく伏せときます。ここで書くのはどうも気恥ずかしいので。
気になる方は、メールなりツイッターDMいただければ。

就職活動自体は、3月上旬にほぼ終結していて
最終的に結論出したのが・・・3月9日だったんですよね。
こういう言い方はあまりよくないのかもしれないですが・・・
滑り込んだというか・・・3月11日前という意味で。
現実問題、知り合いの新卒の若いやつで、震災を理由に内定取り消されたのを2人ほど知っているもので・・・

こういうご時世で就職先決まったのはほんとによかった。。。

気を引き締めて、4月から、新しい環境で精一杯がんばりたいと思います。

このブログもできるだけ書いて情報アウトプットして行きたいなと思っておりますので
引き続きごひいきいただければ幸いです。
それでは、また。

あの日のこと。

もう3週間経とうとしているんですね・・・

今更ながらではありますが、あの日以来記事を書くのが初なので・・・

東日本大震災にて、亡くなられた方々のご冥福をお祈りいたします。
また、今現在被災地で避難生活を余儀なくされている方々にお見舞い申し上げます。


私自身は、地震の当日、自宅近辺を自転車で走っていまして。
外の比較的開けた場所にいたので、幸い怪我をすることもなく
また、自宅も震度5弱の揺れにしては奇跡的にものが壊れたり
本棚やCDが散乱することもなく。
また、親や親戚縁者もほとんど埼玉在住なので
特に被害を受けることなく済みました。

自分も普通に仕事をしている立場であったならば
おそらく帰宅難民になっていたはずだったのですが
離職中という身が今回は幸いにはたらいて
すぐに自宅に戻って情報収集と、TwitterMixiを通じて
帰宅難民になってる方々に情報提供していたりしました。


あれからほぼ3週間。
余震は関東地方ではほぼ収束に向かいつつあるかなというところですが
一方で、原発問題、そして電力不足・計画停電という
いまだかつて経験したことがない状況になっていますね。
まだ今の季節はエアコン需要がないからいいものの
夏場にどういう状況になるのか・・・今から空恐ろしく思いますね。。。

被災された方々のことを思うと・・・というのもあるのですが
様々な映像・写真・ブログ記事などが伝える現地の状況をみると
僕のようなほぼ何の被害もなかった人間が、
現地の状況を想像すること自体が余りにナンセンスというか
たぶんその想像をはるかに上回る困難さがあるのだろうと思い
打ちひしがれる気持ちにもなってしまうのですが。。。

しかし、いつまでも立ち止まってるわけにもいかないのもまた事実。
特に、元気に動ける人は、より積極的に動いて
日本経済を回していかないと、復興もままならないですからね。

現地で困難を窮している人に思いを馳せつつ。
現地で奮闘している方々に最大限の敬意を抱きつつ。

自分は自分にできることを、精一杯やっていきたいと思います。
今後ともよろしくお願いいたします。

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くらいであれば今度話してみたい。いくつか小ネタはあるので。