ゼロからはじめるsymfony
symfonyは,オープンソースで開発されている PHP5のWebアプリケーションフレームワークです。
symfonyの特徴といえば'フルスタックフレームワーク'ですが,機能や設定項目,ドキュメントもチュートリアルにリファレンスと沢山あります。
しかしながら,あまりにもドキュメント量が膨大なため「どこから始めたらいいか分からないの…」という人も少なくないのではないでしょうか?
そんな中,「symfony1.4によるWebアプリケーション開発―オープンソース徹底活用」が発売されました!
本書の「はじめに」から一部引用させて頂くと,下記の通りゼロから始めるのにふさわしい内容となっています。
<本書の対象読者>
- 必須の知識
- あると望ましい知識(必須ではありません)
<本書の読み方>
Symfonyの公式ドキュメントを読む前と,公式ドキュメントを読んだあとに読む本という位置づけで執筆しています。
第1部 入門編 第1章〜第3章
第2部 初級編 第4章〜第5章
第3部 中級編(symfonyのさまざまな活用方法) 第6章〜第9章
第4部 実践編(実践的なTIPS) 第10章〜第12章
一通り読み終えましたが,私のお勧めの読み順は下記の通りです。
- 第1章:symfonyの基礎知識を押さえる
- 第2・3・4章:symfonyに実際に触れ体で覚える
- 第11-2章:symfonyでTDD(テスト駆動開発)に触れる
- 第5章:公式サイトのドキュメントの種類を知り,次の道を知る
- (symfony 1.x legacy website)
- 第10・11章:symfonyを使った実践的なTIPSを知りたい場合
- 第12章:symfonyを使った事例を知りたい場合
- 第6・7・8・9章:symfonyの内部をより詳しく知りたい場合
- (symfony 1.x legacy website)
この本を読み終える頃には,簡単なWebアプリケーションであれば十分に開発出来ると思います。
1点注意が必要かなと思ったのは,コマンドがunixベースなのでwindowsユーザは適宜読み替える必要があります。
symfony1.1を試して以来触っていませんでしたが,この本をきっかけにsymfony1.4でWebアプリケーションを開発してみようと思います!
symfony1.4によるWebアプリケーション開発―オープンソース徹底活用
日本Symfonyユーザー会
秀和システム 2011-03

Effective JavaScriptをPDFにしました
[twitter:@bleis]さんのつぶやきを見て,ここにあったのか!という驚きでした。
2003年頃の記事ですがJavaScript 1.5 (Mozilla 1) ベースなので,まだ参考になると思います。
Googleドキュメントに置きましたので必要な方はどうぞ!
Effective JavaScript - Dynamic Scripting.pdf Powered by Google ドキュメント
HTMLアーカイブもGithubに置きましたので,こちらも必要な方はどうぞ。
https://github.com/renoiv/EffectiveJavaScript
2月発売のTitanium関連本
近頃話題のTitaniumですが,今月はTitanium Mobile関連の本がいくつか発売されますので紹介しておきます。
JavaScriptパターン ―優れたアプリケーションのための作法
Stoyan Stefanov 豊福 剛
オライリージャパン 2011-02-16

Titanium MobileはJavaScriptを使って開発するのですが,もっとJavaScriptを勉強したいと思っていたところでした。
目次を見る限り非常に良さそうなので,これを読んでレベルアップしたいと思います。
Androidアプリケーション開発ガイド ―HTML+CSS+JavaScriptによる開発手法
Jonathan Stark 増井 俊之(監訳)
オライリージャパン 2011-02-24

iPhoneアプリケーション開発ガイドのAndroid版でしょうか。
私はこの本を読んでiPhoneアプリ開発を始めたので,Android開発したいけど何から始めて良いか分からない!という方に(まだ読んではいないのですが)良いと思います。
目次を読むとPhoneGapが中心のようですが,付録に「PhoneGapとTitaniumMobile」とありますのでTitaniumな方も要チェックです。
WEB+DB PRESS Vol.61
WEB+DB PRESS編集部
技術評論社 2011-02-24
先日参加したTitanium新年会でWEB+DBでTitanium特集するよ!と聞いていて,遂に表紙も公開されました。
「実践!Titanium JavaScirptでiPhone&Android本格アプリ開発」という特集が組まれていますので,気になってたという方やこれから始めたいという方には良いのではないでしょうか。
何かを始めるのに遅すぎるということはないので,上記本などをキッカケにスマートフォンアプリ開発者が増えていくといいですね!
Titanium新年会に参加してきました
Titanium新年会 : ATNDに参加してきましたので,LTして頂いた内容などをブログにまとめておきます。
「マウントポジション流Titanium開発」 by [twitter:@hamasyo]さん
- Titaniumで開発したアプリをリリースしました。
- http://itunes.apple.com/jp/app/id397089560
- WEB+DB PRESS Vol.62(2/22発売)にTitanium記事書きました!
- Window毎に分業して開発。I/F設計重視し,Windows間のデータ受け渡しは極力やらないという指針
「エンジニアでなくてもTitaniumならiphoneアプリ開発にチャレンジ出来る」 by [twitter:@h5y1m141]さん
- Titaniumで自社ブログのリーダーアプリを開発中です
- 当初Google Code Archive - Long-term storage for Google Code Project Hosting.を見なかったので1ヶ月位無駄にしてしまった…みんなは見てね><
- Titaniumで開発して,パフォーマンスとか改善したかったらXCodeで修正すればいいやってのはできないよ><
「Titanium開発事例紹介」 by [twitter:@KeiyaKanno]さん
- Titaniumでhttp://diet.kilokun.com/ や 聖書のiPhoneアプリ開発してます
- 妹さんがデザイナー(コードだとcss位)ですが,Titaniumならアプリ作れちゃいました!
- http://itunes.apple.com/jp/app/tshirt-farm/id415594766
- デザインの仕事もできますよ!
「xib2jsで高速モック作成デモ」 by [twitter:@daoki2]さん
- JavaScriptしらなくてもiPhoneアプリのモック作れるよ,xib2jsならね!
- Interface BuilderのGUIコンポーネントには全部対応してるはず
- 生成したjsの一部分をコピーしてスニペットとして使うのもアリ
- もし上手く変換できなくても怒らないでね><
「ちょっとしたTips(バッドノウハウ?)」 by [twitter:@kaz_konno]さん
「Titanium Mobileの紹介」と「私がAppceleratorに入ったワケ」 by [twitter:@masuidrive]さん
- 私はこうしてAppceleratorに入社しました
- Google Code Archive - Long-term storage for Google Code Project Hosting.の[twitter:@donayama]さんに感謝のメンションを!
- 日本でもサイトを立ち上げます。appcelerator.jp上にQ&AとかBBS的なモノを用意しようと思っています。
「MogSnapサービスの紹介」 by [twitter:@toru0325]さん
- Titaniumで MogSnap というiPhoneアプリを開発してます。(
まもなく2月中旬リリース)*1 - はてな技術勉強会 Hackathon : ATND で絶賛
- 本日のTitanium新年会でも感嘆の嵐
- [twitter:@masuidrive]さんも現時点でTitaniumで作ったアプリで一番凄いアプリじゃないか?!
Titaniumで開発してるよ!リリースしたよ!という事例が増えつつあり,
参加者のモチベーションは凄く高いと思いました。
今後の展開に関してもAptanaを買収しましたし,これ1つインストールすればプログラマーじゃなくてもアプリ作れるもん!
という状況になり,一気に拡がっていくのではないでしょうか。
日本語での情報も今後増えていくでしょうし,後はAndroidなどのクロスプラットフォーム対応に期待したいですね。
企画して頂いた方,LTして頂いた方,参加された方,本当にありがとうございました!
*1:http://itunes.apple.com/jp/app/mogsnap/id418843885 2/14にリリースされました!
Cinderのサンプルを一挙紹介
クリエイティブなC++ライブラリ "Cinder" の紹介 | Preferred Research
Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。
同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、Windows、MacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。
を読んでCinder楽しそう!と思ったものの作品を見てしまうと自分で出来る気しないなぁ。。
簡単なサンプルでもあればいいのにと思って中を見てみたらサンプルが50個以上もありました!
沢山サンプルがあったのでCinderでこんなこと出来るよ!っていうのをスクリーンショット&一行説明で一挙に紹介していきます。
※動作確認はWindows XP SP3 + Cinder 0.8.2で行いました。
samples (cinder\samples\_AllSamples\vc10\AllSamples.sln Debug構成)
| # | プロジェクト名 | スクリーンショット | 一行説明 |
|---|---|---|---|
| 1 | ArcballDemo | ![]() |
マウスで立方体をクルクル回転できる。 |
| 2 | AudioAnalysisSample | (no image) | Runtime Error |
| 3 | AudioGenerative | ![]() |
マウスを上下に動かして波形(音)を変更。 |
| 4 | AudioGenerativeAdvanced | ![]() |
マウスでクリックした位置によって音を鳴らす。 |
| 5 | AudioInputSample | (no image) | _AllSamplesソリューション外だったため未確認。 |
| 6 | AudioPlayback | (no image) | マウスでクリックすると音が鳴る。 |
| 7 | basicApp | ![]() |
マウスのドラッグで線を描画する。 |
| 8 | BasicParticle | ![]() |
未稿。 |
| 9 | bezierPath | ![]() |
未稿。 |
| 10 | bspline | ![]() |
未稿。 |
| 11 | Buddhabrot | ![]() |
CPU喰い。 |
| 12 | CairoBasic | ![]() |
クリックしたところを中心に描画。 |
| 13 | CaptureAdvanced | ![]() |
f:フルスクリーンON/OFF r:retain a random surface to exercise the surface caching code u:unretain retained surface to exercise the Capture's surface caching code とあるがr押すとアプリが落ちるので注意。 |
| 14 | CaptureTest | ![]() |
f:フルスクリーンON/OFF SPACE:キャプチャの開始・停止 だがMac専用で確認できず。 |
| 15 | Earthquake | (no image) | Runtime Error |
| 16 | eventTest | ![]() |
マウスダウン&アップ,キーダウン&アップのサンプル。 |
| 17 | FBOBasic | (no image) | Runtime Error |
| 18 | FBOMultipleTargets | (no image) | Runtime Error |
| 19 | flickrTest | ![]() |
flickrから画像を取得して表示。 |
| 20 | fontSample | ![]() |
キーダウンで出力文字が変更。クリックするとDebug Error。 |
| 21 | FrustumCulling | ![]() |
「3:test points」をキーダウンして緑のポイントに変更した状態 |
| 22 | GLSLLighting | (no image) | Runtime Error |
| 23 | HodginParticles | ![]() |
マウスカーソルに緑の玉がついてきて,クリックするとオレンジのが弾ける。 |
| 24 | HodginParticlesRedux | (no image) | 起動後即終了で確認できず。 |
| 25 | ImageFileBasic | ![]() |
ファイル選択ダイアログが表示され,ファイルを読み込んで表示。 |
| 26 | ImageHeightField | ![]() |
ファイル選択ダイアログが表示され,ファイルを読み込んで3D表示。 マウスで画像を回転できる。 |
| 27 | imageWriterSample | (no image) | ファイル保存ダイアログが表示され,ファイル名を入力するも保存されず。 |
| 28 | iPhoneAccelerometer | (no image) | _AllSamplesソリューション外だったため未確認。 |
| 29 | ListenerBasic | ![]() |
■をドラッグアンドドロップで移動可。 クリックorドラッグで●を描画。 |
| 30 | MandelbrotGLSL | (no image) | Runtime Error |
| 31 | MultiTouch | 上手く動作させられなかったので,参考動画を。 (future) Multitouch Cinder sample from flight404 on Vimeo. |
|
| 32 | NormalMapping | (no image) | Runtime Error |
| 33 | OBJLoaderDemo | (no image) | Runtime Error |
| 34 | OpenGLLighting | ![]() |
照明のサンプル。A・S・Eをキーダウンした状態。 |
| 35 | ParamsBasic | ![]() |
立方体と照明の各パラメータを設定して確認できる。 |
| 36 | perlinTest | ![]() |
パーリンノイズ。 |
| 37 | Picking3D | (no image) | Runtime Error |
| 38 | QuickTime | (no image) | 未確認。 |
| 39 | QuickTimeAdvanced | (no image) | 未確認。 |
| 40 | QuickTimeIteration | (no image) | 未確認。 |
| 41 | QuickTimeWriter | (no image) | 未確認。 |
| 42 | rayMarcher | ![]() |
よく分かりません。 |
| 43 | RDiffusion | (no image) | Runtime Error |
| 44 | resizeTest | ![]() |
512*512のpngをごにょごにょ。 |
| 45 | rotatingBox | ![]() |
文字が描かれている立方体が回転する。 |
| 46 | SaveImage | ![]() |
クリックで落ちる。 |
| 47 | SerialCommunication | (no image) | 起動後即終了で確認できず。 |
| 48 | shaderTest | (no image) | Runtime Error |
| 49 | shadowMap | (no image) | 起動後即終了で確認できず。 |
| 50 | RDiffusion | (no image) | Runtime Error |
| 51 | SurfaceBasic | ![]() |
二値化。 |
| 52 | TextTest | ![]() |
テキスト描画。 |
| 53 | VBOSample | ![]() |
よく分かりません。 |
| 54 | VoronoiGpu | ![]() |
Runtime Error |
| 55 | waterSim | ![]() |
よく分かりません。 |
| 56 | Wisteria | ![]() |
枝が生え花が咲きます。 |
チュートリアルも5つほどあります。
tour (cinder\tour Debug構成)
| # | プロジェクト名 | スクリーンショット | 一行説明 | |
|---|---|---|---|---|
| 1 | Chapter 1: Getting Started |
![]() |
In the first chapter, we will set up a new project and learn how to load and display images. We go on to show how to draw simple shapes and we even set up a basic Particle engine. | |
| 2 | Chapter 2: Personality and diversity |
![]() |
We continue to expand our Particle engine. We also learn how to pull color data from images and put that information to good use. | |
| 3 | Chapter 3: Influence |
![]() |
In chapter 3, we show how to use keyboard and mouse input to control our Particle engine. | |
| 4 | Chapter 4: Fine tuning |
![]() |
A birth/death cycle is added to our Particle class and Perlin noise is introduced. | |
| 5 | Chapter 5: External Forces |
![]() |
We show you how to use nested iterators to allow the Particles to interact with each other. We then tie everything together and marvel at how far we have come. |
3Dプログラミングやビジュアルデザインやってみたかったんだ!って方は,Cinder試してみるといいと思います!
開発環境は無料で手に入るので,Download :: Cinder をまずダウンロード&解凍してWelcome.html を参照してみてください。
ちなみにWindowsな方は,以下をダウンロード&インストールすることになります。
- Visual C++ 2008 or Visual C++ 2010 Express -- ここからダウンロード
- Windows Platform SDK -- ここからダウンロード
- DirectX SDK -- ここからダウンロード
- QuickTime SDK -- ここからダウンロード
アプリ内課金についての調査メモ
iPhoneアプリでアプリ内課金を実現すべく,「In App Purchaseプログラミングガイド」と「iTunes Connect デベロッパガイド」を読んで勉強しています。
その中で自分用に気になった点をメモ代わりに列挙しておきます。(読中なので随時追記予定)
In App Purchaseプログラミングガイド
- In App Purchaseは、問題なく購入された後のアプリケーションにパッチを適用する機能を提供しません。プロダクトでアプリケーションのバンドルを変更する必要がある場合、App Storeにアプリケーションの更新版を配布しなければなりません。(P11)
- サーバを使用してコンテンツを配布するアプリケーションの場合、iPhoneアプリケーションとサーバ間のやり取りに使用するプロトコルの設計と実装の責任はデベロッパにあります。(P26)
- Store KitはiPhoneシミュレータ上では動作しません。Storeのテストは実際のデバイス上で行う必要があります。(P31)
- iPhone Developer Programに登録する必要があるということ。
iTunes Connect デベロッパガイド 6.0
- 新たに導入されたVersion Release Control(バージョンのリリース制御)を利用すると、アプリケーションの新バージョンを審査終了直後に公開させずに、特定の日を選択してAppStoreで公開できます。(P11)
- App Storeで配布するためのデベロッパアカウントは主言語と会社名は以後編集できません。(P19)
- 本社が日本国外にある場合は、日本の納税申告用紙は任意です(日本国内にある場合は不要です)。(P32)
- iTunes ConnectユーザのロールにはAdmin,Legal,Finance,Technicalがある。(P34)
- iTunes Connectにおいて、1つのアプリケーションにつき、最大3,000個の異なるプロダクトID を作成し、In App Purchaseに割り当てることができます。(P142)
参考リンク
- 英語版
- 日本語版
- KRAY - みんなで考え、作り、価値を生み出す
- StoreKitDemo
CakePHPでVARCHAR(256以上)の値を取得すると255byteにカットされてしまう
- 環境
- CakePHP1.2.8
- SQL Server 2005
- VARCHAR(512)
上記の環境で,VARCHAR(512)をSELECTすると255byteでカットされてしまうようです。
以下のファイルを中心に調べてみたのですが,根本に辿り着けずで断念してしまいました。
- cake\libs\model\datasources\datasource.php
- cake\libs\model\datasources\dbo_source.php
- cake\libs\model\datasources\dbo\dbo_mssql.php
cake\libs\model\datasources\dbo\dbo_mssql.phpにそれらしき'255'があったので,書き換えてみるも変化無し。。。
<?php /** * MS SQL column definition * * @var array */ var $columns = array( 'primary_key' => array('name' => 'IDENTITY (1, 1) NOT NULL'), 'string' => array('name' => 'varchar', 'limit' => '255'), 'text' => array('name' => 'text'), 'integer' => array('name' => 'int', 'formatter' => 'intval'), 'float' => array('name' => 'numeric', 'formatter' => 'floatval'), 'datetime' => array('name' => 'datetime', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'), 'timestamp' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'), 'time' => array('name' => 'datetime', 'format' => 'H:i:s', 'formatter' => 'date'), 'date' => array('name' => 'datetime', 'format' => 'Y-m-d', 'formatter' => 'date'), 'binary' => array('name' => 'image'), 'boolean' => array('name' => 'bit') );
今回は根本原因は判りませんでしたが,VARCHAR型で長さが256以上のカラムをTEXT型に変更することで解決しました。
CakePHP1.3にアップデートするや他のDBは試していません。
主要なDBのVARCHARサイズを調べたので参考までに載せておきます。
| DB | Min | Max | 出典 |
|---|---|---|---|
| SQL Server 2008 R2 | 1 | 8,000 | char および varchar (Transact-SQL) - SQL Server | Microsoft Docs |
| MySQL 5.1 | 0 | 65,535 | http://dev.mysql.com/doc/refman/5.1-olh/ja/char.html |
| Oracle 11g | 1 | 4,000 | Oracleデータ型 |
| PostgreSQL 9.0 | 1 | 正の整数 | http://www.postgresql.jp/document/9.0/html/datatype-character.html |





































