2012年01月01日

iphone_devはてなグループでもブログを書いています。こちらですので、あわせてどうぞ。
2011年09月16日
■[iOS][cocos2d] cocos2d入門書「cocos2d for iPhoneレッスンノート」が出ます
拡張現実ライフの@akio0911さんとの共著で、cocos2dの入門-初心者向けの「cocos2d for iPhoneレッスンノート」 なる本を書きました。3つのゲーム作成を通じて、cocos2dの中身や扱い方が学べるようになっている本です。
- 作者: 加藤寛人,佐藤伸吾
- 出版社/メーカー: ラトルズ
- 発売日: 2011/09/22
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 69回
- この商品を含むブログ (8件) を見る
cocos2dの本と言えば「cocos2dで作る iPhone&iPadゲームプログラミング」*1が有名ですが、その中にない情報もいくつか載っています。
たとえば、書籍としてはあまり紹介されることのない高性能サウンドエンジン:CocosDenshionについて、基本の使い方からサウンドのフェードイン/フェードアウトエフェクトを簡単に扱う方法などを説明しています。また、使いこなせるとすごく役立つイージングアクションの丁寧な説明が載っているのもポイントです。Flashコンテンツによくあるような、物体の滑らかな移動を使いこなせるわけですね。
cocos2dは、iOS上で動く2Dゲームエンジンとしてはかなり強力なものであるにも関わらず、高速で使い勝手もよいフレームワークです(執筆している最中、何度もそのことを再認識しました)。世界中の開発者も使っているエンジンを使って、いっしょに楽しいアプリを作りませんか?
発売は9月22日です。どうぞお楽しみに。→ (2011/9/28追記)発売されました!サンプルコードのダウンロードなど、サポートページはこちらです。
リンク
*1:こちらでも、監修としてほんの少しお手伝いさせてもらいました
2011年03月01日
■ [Mac][SIMBL][Bookmarklet] SafariでもSpellBookの感動が得られるプラグイン「LibraMagico」を書いてみた
注意:本SIMBLプラグインは5.1以降のSafariには対応していません。どなたかGithubからフォークして開発してくださいませんか?<(_ _)>
fladdict氏によるステキな Chrome 拡張である「SpellBook」がうらやましいので、Safariでも同じような体験ができるようプラグイン(要SIMBL)を書きました。
■「LibroMagico」って何?
Safari上で右クリックしたときのコンテキストメニューからブックマークレットを実行できるプラグインです。
ブックマークレットは、ブックマークバー上の"Bookmarklets"フォルダに入っているものが自動的に表示されます。
ちなみに「LibroMagico(リブロ マヒコ)」とは、スペイン語で「魔法の本」の意味です。ええ、そのまんまな名前とか機能ですねすみません。
■ダウンロード
LibroMagicoプラグインは、ソースコードと共にgithubで管理しています。下のリンクからダウンロードできます。
新BSDライセンスです。
本プラグインはブックマークにアクセスするためにSIMBLを使用しています*1。まだインストールしていない方は、下のサイトからSIMBLをダウンロード&インストールしておいてください。
■インストール
- 事前にSIMBLをインストールしておきます
- ダウンロード、あるいはソースコードからビルドしたLibroMagico.bundleを「ホーム/ライブラリ/Application Support/SIMBL/Plugins」(~/Library/Application Support/SIMBL/Plugins)フォルダに置いてください。SIMBL/Pluginsフォルダが存在しない場合は作成しておいてください。
- Safariを再起動する
アンインストールは、SIMBL/PluginsにコピーしたLibroMagico.bundleを削除するだけです。気に入らない場合でも簡単に削除できますね!
■LibroMagicoの使い方
- Safariのブックマークバー(タブの上にブックマークが表示される場所です)に、「Bookmarklets」という名前でブックマークフォルダを作成してください。
- 現在はタブバー上、かつBookmarkletsという名前で対象を検索しています
- Bookmarkletsフォルダに、使いたいブックマークレットをどんどん突っ込みます(ここはSpellBookと同じですね)
これで、右クリックしたときのメニューに現れる「LibroMagico」という選択肢から、ブックマークレットが自由自在に実行できます。
ブックマークレットって何が便利?SpellBookってすごいの?
そんな方は、まず以下のサイトを覗いてみてください。なんかもう、世界がガガッと広がる感覚にとらわれますですよ。
- [share] Bookmarkletに知の連鎖がやってきた♪ | 普通のサラリーマンのiPhone日記
- Chrome拡張で右クリからBookmarkletを起動する♪ | 普通のサラリーマンのiPhone日記
- ブックマークレットを右クリックメニューから使えるChrome拡張機能「SpellBook」 - WEBマーケティング ブログ
- 「SpellBook」はブックマークレットを右クリックメニューに追加してくれるお手軽&便利なChrome拡張機能! : ライフハッカー[日本版]
■制限事項
- SpellBookと異なり、ブックマークバーに"Bookamarklets"フォルダを手動で配置する必要があります(自動作成されません)
- フォルダに対応していません
待てない方は githubからどんどんフォークしてくださいませ。
■今後の予定
- 右クリック毎にBookmarks.plistを読みに行かない
- Bookmarklets内のフォルダに対応させる
- Bookmarkletsフォルダ自身、あるいはフォルダ内にブックマークが無い場合はコンテキストメニューにLibroMagicoを表示させない
- アイコンの追加
なお、Bookmarkletsフォルダを自動的に作成する機能は、今のところ予定していません。現在はBookmarks.plistファイルを直接開いて情報を読んでいるため、同じレベルでブックマークを追加しようとすると最悪ブックマーク情報の破壊に繋がってしまうと考えたためです。
Safari内部のAPI解析が進んで、ブックマークをSafari経由で追加出来るようになったときに検討させてください。
■更新履歴
- 2011/3/6 0.3リリース アイコンを追加しました
- 2011/3/5 0.1修正版リリース 動作しないbookmarkletがあったのを修正しました
- 2011/3/1 0.1リリース
■謝辞
SpellBookという「0から1」を作り出したfladdict氏に対して、そしてプラグイン作成時に色々なアドバイスをしていただいたmoyashi氏に感謝します。
■One more thing, というか
id:nakamura001 氏が 画面を薪割りするブックマークレットを作成しています。・・・ノーコメントですが、こんなのもありますよということで。
*1:Safari機能拡張からではブックマークにアクセスできない、らしい
2011年01月26日
■ [jQuery] テーブルの一部の色を分ける
「jQuery逆引きマニュアル」を読んでいたら、だんだんjavascriptが面白くなってきています。
145ページに載っている、テーブルの装飾をjQueryから行う方法について試してみました。
試してみたページはこちら(サンプルをほぼそのまま入力しただけですが)
trやthに対してevenやoddフィルタを適用して、その要素にCSSが適用されるためのクラスを追加する、というのがキーになる方法だと分かりました。
もう少し踏み込んでみる
これらodd,evenの他にも、フィルタには幾つかの種類が用意されています(17ページ)。
他にどんなのがあるか、どういう実装になっているのかなと興味が出てきましたので、jquery-1.4.4.jsのソースを読んでみました。
3638行目くらいからの記述で、
setFilters: { first: function( elem, i ) { return i === 0; }, last: function( elem, i, match, array ) { return i === array.length - 1; }, even: function( elem, i ) { return i % 2 === 0; }, odd: function( elem, i ) { return i % 2 === 1; }, lt: function( elem, i, match ) { return i < match[3] - 0; }, gt: function( elem, i, match ) { return i > match[3] - 0; }, nth: function( elem, i, match ) { return match[3] - 0 === i; }, eq: function( elem, i, match ) { return match[3] - 0 === i; } },
となっていました。
iが何個目の情報かを表していて、matchの3番目に'tr:nth(2)'としたときの「2」が渡ってきているようです。
ここに記述されている各フィルタは3330行前後のPOSで、正規表現のルールとして定義されています。
match: { ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ },
ということはつまり、
POS: /:(nth|eq|gt|lt|first|last|even|odd|everythird)(?:\((\d*)\))?(?=[^\-]|$)/, everythird: function( elem, i ) { return i % 3 === 1; },
をjqueryのソースに加え、このフィルタを先ほどのテーブルで記述すれば自分のフィルタが作れるのでは?と試してみたら、意図通り2個おきで表示されました。
まとめ
- テーブルを1行おきでスタイルを変えたい場合は、trをoddやevenでフィルタして、その要素にcssで装飾してあげればよい(146ページ)
- oddやevenの他にも種類がある(17ページ)
- 自分のフィルタを追加するのは、けっこう簡単
ちなみに、jqueryのソースを直接いじるらずに済む方法はあるのでしょうか?
2011年01月21日
■ [Mac][CUPS] 過去の印刷履歴は全てMacが覚えている
Show Print History in Mac OS X に記してあるように、自分のMacが過去にどんな印刷をしてきたかがバッチリ分かってしまうことを知ったので、メモ。
印刷履歴を確認する手順は以下のとおり。
- ブラウザを開く
- アドレスバーに http://localhost:631 と入力して開く
- 出てくるページの上部にある「ジョブ」を選択
- 「完了したジョブを表示」ボタンをクリック
これだけの手順で、過去のジョブすべてがズラリとブラウザ上に表示されます。使用プリンタ-ファイル名-ユーザー-サイズ-ページといった情報が並び、誰がどんな印刷をしたかが分かるわけです。印刷しようとしてキャンセルしたものも、もちろん表示されます。
CUPS(Common UNIX Printing System)の管理画面から、こうした情報が得られるとは知りませんでした。面白いですね。
2011年01月20日
■ [jQuery] jQuery逆引きマニュアルの読者モニターに当選しました
幸運にもインプレスから出版された書籍『jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践』 の読者モニターに当選しまして、手元に同書のPDFファイルが届きました。
jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践
- 作者: 西畑一馬,中村享介,徳田和規
- 出版社/メーカー: インプレスジャパン
- 発売日: 2010/12/17
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 158回
- この商品を含むブログ (9件) を見る
ただいまパラパラと読んでおりますが、逆引きマニュアルというカテゴリには収まらない良書の予感がしています。私自身、あまりjQueryに詳しくない(というかほとんど知らない)状況にも関わらず、
- 前半ではjQueryの肝と言えるセレクタやフィルタについての解説が順序立てて行われているので読みやすい(トピックが乱雑に散らばっておらず、関連した知識を前後から得やすい)
- トピックそれぞれに対して「初級」「中級」「上級」と但し書きがあるので、自分みたいな初級者は初級の項をまず眺めて全体像を把握する、というのが容易にできる
という本書の特徴のおかげで「理解しながら」「自分の分からないことに気づきつつ(←重要!)」読み進められています。
Twitterのハッシュタグ#jQuery_Manualで高く評価されたツイートが多いことからも、多くの人に勧められる内容なのかなあ、と。
しばらくjavascript+jQueryの世界に浸かりますね。
本書とは関係ないけれど電子書籍について思ったこと
目次と索引だけは印刷させてほしいです。PDFだと印刷OKか一切ダメかのどちらかにしか倒せ込めない仕組みなのでやむを得ませんが、なんとかなると嬉しい。
Webサイト上にある目次が、印刷用ページを用意してくれていたりなんかすると嬉しいですね。
2011年01月10日
■ [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました
本記事はiPhone-devグループで書かれている同じ記事のコピーです。まったく同じ内容で恐縮ですが、ご容赦くださいませ。
今月から発売される書籍「iOS4プログラミングブック」に、共同執筆の一員として参加しました。
この本は、iOS4で新しく追加された機能をメインに「どんな機能か」「どう使ったら良いか」、そして「使うときに気をつけたい箇所は何か」を詳細に説明した本です。
目次
Amazonでも確認出来ますが、本書は次のような構成になっています。
第1章 高解像度ディスプレイ
1-1 高解像度ディスプレイの概要
1-2 高解像度ディスプレイのリソース
1-3 Core Graphcisの高解像度ディスプレイ対応
1-4 UIKitの高解像度ディスプレイ対応
1-5 Core Animationの高解像度ディスプレイ対応
1-6 OpenGL ESの高解像度ディスプレイ対応
第2章 マルチタスキング
2-1 マルチタスキング
2-2 マルチタスキングのキーワード
2-3 目的別のマルチタスキング適用方法
2-4 マルチタスキングのまとめ
第3章 マルチメディア
3-1 AV Foundation概要
3-2 カメラ制御
3-3 ビデオの編集とエクスポート
第4章 アセットを使ったフォト/ビデオへのアクセス
4-1 Assets Libraryとは
4-2 クラス構造
4-3 基本的な使い方
4-4 Assets Libraryを使用する時の注意点
第5章 マルチスレッド
5-1 Blocksの概要
5-2 Blocks解説
5-3 Grand Central Dispatchの概要
5-4 Grand Central Dispatchの解説
第6章 ローカル通知
6-1 ローカル通知の概要
6-2 Local Notificationの実装
6-3 Local Notificationの応用
第7章 イベントキット
7-1 Event Kitの概要
7-2 Event Kitの実装
第8章 広告エンジン
8-1 iAdとは
8-2 iAdのiTCの登録
8-3 iAdの実装方法
8-4 iAdと他の広告との比較
8-5 iAdと他の広告の実装方法
第9章 ジャイロセンサー
9-1 ジャイロセンサーの概要
9-2 ジャイロセンサーの実装方法
第10章 ユニバーサル対応
10-1 ユニバーサルアプリケーション
10-2 デバイス識別方法
10-3 古いiOSバージョンへの対応
第11章 misc.
11-1 ドキュメントプレビュー
11-2 リソースファイル
11-3 データ保護
私が担当した箇所と、どういう内容を書いたか
上の目次のうち、私が担当したのは
- 2章のマルチタスキングについて
- 4章のAssets Libraryフレームワークについて
- 8章のiAd(これはサポートだけですが)
の3つです。
マルチタスキングでは標準的な説明だけでなく、アプリケーションの振る舞いがどうなっているのかを丁寧に説明することに注力しました。自分がマルチタスキングをサポートするアプリを作りたい場合に、どういう作法に従うべきかを解説しています。
Assets Libraryフレームワークでは、とかくマイナーな存在であるこのフレームワークについて、基本を丁寧に解説することに注力しました。ユーザーのiOSデバイスに保存されている、ユーザーにとっての貴重なデータを活用出来るという夢広がるフレームワークです。これまでに発売されている洋書でもほとんど解説されていない箇所ですので、貴重な資料になっています。
iAdでは、自分のアプリにiAdを組み込むにはどうしたらよいか、という点を丁寧に解説するよう心がけました。iAdはAppleの示す作法にしたがった実装が行われていないと審査でRejectされてしまいます。作法自体は簡単なものですが、それらを分かりやすくまとめています。
それ以外にも、超強力な執筆陣によるとても役立つ内容が揃っています。Mac OS Xアプリ作成にも役立つ(←重要!)BlocksやGCD、iOS4で格段に機能拡張されたAVFoundationをはじめ、「iOS4の機能を使いつつiOS3デバイスもサポートしたい」「iOS4でカメラ周りのAPIが変わったけどどうしたらいい?」「OpenGLをRetina液晶で使うベストプラクティスを知りたい」といった要望にも応える内容が満載です。
他の執筆者の紹介記事
最後に、他の執筆者の皆様が本書に言及されている記事を紹介します。それぞれがどのような内容になっているかを窺い知ることができますので、ぜひご覧ください。
- Seasons.NET(書籍「そのまま使える iPhoneアプリプログラム」の著者でもあります。まだ本書に言及した記事はありませんが、そのうち書かれることでしょう)
- splhack: 本を書きました (iOS 4プログラミングブック 第5章/第10章)
- 執筆参加しました - iOS4プログラミングブック - Radium Software
- We written iOS4 Programing Book| RE:START
- iOS4プログラミングブックの紹介 | EVERYTHING FOR THE REST OF US
また、南東京iPhone開発者勉強会を精力的に主催していらっしゃる@cqa02303氏も、得意のカメラアプリについての情報を惜しみなく記しています。
発売までもうすぐですので、もうしばらくお待ちくださいませ!
2011年01月06日
■ [linux][kernel] カーネルのImage Nameを変更(文字列の追加)する方法
uname -r,--releaseコマンドで表示されるリリース情報には、カーネルをビルドしたときに出力される「Image Name」が使用されています。
Image Name: Linux-2.6.36 # ← ここの情報! Created: Thu Jan 5 21:39:39 2011 Image Type: ... Data Size: ... Load Address: 0x00000000 Entry Point: 0x00000000
この情報を変更することは出来ないものかと調べていたら、カーネルソースのinit/Kconfigに次のような記述があるのを見つけました:
menu "General setup"
config LOCALVERSION
string "Local version - append to kernel release"
help
Append an extra string to the end of your kernel version.
This will show up when you type uname, for example.
The string you set here will be appended after the contents of
any files with a filename matching localversion* in your
object and source tree, in that order. Your total string can
be a maximum of 64 characters.
つまり、make menuconfigで「General setup」→「Local version」で文字列を入力すると、ソースツリーの最上位ディレクトリに「localversion*」という名前で保存され、そのファイル内容を全て連結したものがリリース情報として表示されるようになる(ただし最大64文字)、ということです。
以下のような操作で、実際に情報が更新されるのを確認しました。
$ echo "-hogehoge" > localversion-hoge $ make -j2 bzImage : Image Name: Linux-2.6.36-hogehoge # ← ここ Created: Thu Jan 5 22:56:12 2011 Image Type: ... Data Size: ... Load Address: 0x00000000 Entry Point: 0x00000000
環境(何の環境?)によっては、最大文字数が32文字になったりもするようです。
2011年01月01日

iphone_devはてなグループでもブログを書いています。こちらですので、あわせてどうぞ。
2010年12月13日
■[Dropbox][tips] 謎のファイル「Icon$'\r'」を消してしまった場合の復旧方法
Dropboxフォルダをターミナルで見ていたら、「Icon?」という謎のファイルがありました。ファインダでは表示されない、不可視ファイルのようです。
% ls
Documents Photos Public
なんだこれ、こんなの作った覚えはないぞ?と思ってrmで消したところ、ファインダに表示されるはずのDropbox用にデザインされたアイコンが表示されず、ただのフォルダアイコンに。
どうやらアイコン情報を管理してくれていたファイルだったようです。あらら。
どうしたものか、再インストールかなあと思って面倒くさがっていましたが、どうやらこれ、Dropboxアプリが起動したときに自動的に配置してくれるファイルのようで、実際のところは何もしないで復旧してくれました。アイコンも、無事に復活です。
よかった、よかった。


