2012/04/30

[jQuery]nodeNameを取得する方法

naitiveの時、nodeNameを取得したい場合は、nodeNameと書くだけでおkなのですが、果たして、jQueryの場合は?

alert($j('#info-list')[0].nodeName);

via:javascript or JQuery でタグ名(node名)取得 メモ
同じじゃないかーい!!

2012/04/29

[game]ドラゴンクエストX 目覚めし五つの種族

いよいよオンラインゲームとして、新作がでるようだ。

ぶっちゃけ、どうなんだろう??

ドラクエは、ファイナルのようにあまり冒険をしないタイトルだと思っていたのだが、今回、オンライン化されることで、どう転ぶんだろうか?

吉とでるか凶とでるか?

2012/04/28

[php]isset関数

どうやら同じ悩むを持っていた人がいたようだ。

PHPで、ある変数が既に宣言済みか…、もしくは既に使用されているかどうか確認するすべはありますか?

via:人力検索はてな
これ、ColdFusionの場合は、isDefinedを使えばいいのだが、それに相当するのはどれかなと思い、検索したら、isset関数を使えという回答があり、試しにこの関数を使ったら確かに変数の確認を行うことができました。

なんと便利なことでしょう!!

2012/04/26

[JavaScript]3桁区切り

お金の表示で、3桁に区切って表示する場合があるが、一体どうすればいいのだろう?

function commify(dpc){
var re_digit = new RegExp('([0-9]+)([0-9]{' + dpc + '})', 'g');
alert(re_digit);
return function(str){
str = str.replace(/([0-9]),([0-9])/g, function(m0,m1,m2){ return m1 + m2 });
while(str.match(re_digit)){
str = str.replace(re_digit, function(m0,m1,m2){ return m1 + ',' + m2 });
};
return str;
};
};

via:perl+javascript - 1,234,567,890を12,3456,7890に
これを少し改良して、このようにすればいい。
function commify(dpc){
  var digit = new RegExp('([0-9]+)([0-9]{3})', 'g');
  return function(str){
    while(str.match(digit)){
      str = str.replace(digit, function(m0,m1,m2){ return m1 + ',' + m2 });
    };
    return str;
  };
}; 
いっそのことjQueryのプラグインにしたいぐらいです。

2012/04/25

[本]グーグル Google 既存のビジネスを破壊する

読了


第1章 世界を震撼させた「破壊戦略」
第2章 小さな駐車場の「サーチエコノミー」
第3章 一本の針を探す「キーワード広告」
第4章 メッキ工場が見つけた「ロングテール」
第5章 最大の価値基準となる「アテンション」
第6章 ネット社会に出現した「巨大な権力」

via:目次
本書は、2006年に出版されたものだが、今読んでみても、ものすごくおもしろかった。

なにがおもしろかったのかというと、一番は、著者の言っている通り、Googleは、本書がでた後、GoogleDocsをリリースし、さらにクリス・テイラーが予想した通り、android(本書では、googleモバイルと書かれていた)、GoogleTV、Google Books(しまいには、OSとブラウザまで)と次々と新サービスを打ち出しており、予想が的中している一方で、2006年当時と今では状況ががらりと変わっていることがおもしろいのである。

それは、ずばり、Facebookによるソーシャルサービスの台頭である。

Facebookのユーザー数は、今や9億人に達している。

かつ、Googleの広告ビジネスと違うのは、個人情報をFacebookはあらかじめ保持しているので、本当の意味で、双方向性のある広告を配信することができるので、今、相当あせっているそうである。

たった6年、されど6年で、こんなに状況が大きく変わってしまうのが、ITのおもしろさであり、醍醐味であるんだなーっと実感した次第である。

と言っても、結構なgoogle好きなので、新しくリリースされたサービスを随時チェックするようにしているのだが、それでも、google baseや、無線LANサービスの存在は知らなかった。(無線LANは、是非、日本でも展開してほしいなー。Googleさんお願いします。)

Googleはページランクシステムはオリジナルだが、それでも、検索システム自体(あるいは、検索ビジネスと言い換えてもいいかもしれない。)は、Yahooが最初であり、2匹目のドジョウだったのは、理解していたが、それに加えて収益モデルも、ビルグロスの発明を模倣したというのだから、やはり、商売は、先行者利益という言葉があるとは言え、参入の仕方によっては、2番目の方がいいのではないのかなーっと思えてきた。
(AppleのiPodやiTunesの例もそうだったので。)

模倣の仕方を誤ると、Zyngaのように訴訟されるかもしれない。

Googleができた当時、ベンチャーキャピタルが見向きもしなったのが、おもしろい。
当時は、いっぱい検索サービスがあったそうで、秋元康ではないが、やはり、どんなプロでも、優良株を見逃すときがあるんだなとつくづく感じた。
なので、プロが見込みないと判断しても、先に進みたければ、行っていいんだなーっと感じた。

話は変わって、ITは便利だし、おもしろいし、おかげで、こうして職を得る事ができたのだが、その一方で、本当に貢献しているのだろうか?と疑問に思う事がある。従来のコストよりも低い金額(あるいは、生産性)で、多くのことを成し遂げることができるのだろうかと。

そんな疑問を見事に解消してくれる例が、ありがたいことに、三和メッキ工業と、ヤート本社と2件紹介されており、非常に心強いなーっと思った。

というわけで、まだまだGoogleという司祭の裾の下にはドジョウが何匹もいそうである。あなたもこのドジョウすくいに参加してみますか?

via:すべてを一度懐疑していく - 書評 - グーグル 既存のビジネスを破壊する
今は、Googleだけではなく、Facebookも司祭の候補にあがっていることを追記して、本エントリーを閉じる。

2012/04/24

[GoogleAppEngine]自動的に日付を登録

Google App Engine上のデータストアを使うとき、他のSQL DBと同様に、データが追加されたときに、登録日付を入れたくなるときがあります。

そんな場合は、どうすればいいのかなーっと思ったところ、答えがありました。

class DateTimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)
日付と時刻プロパティです。

auto_now が True の場合、モデル インスタンスがデータストアに格納されるたびに、プロパティ値に現在時刻が設定されます。プロパティの前の値は上書きされます。これはモデル インスタンスの「最終更新」日時を追跡する場合に便利です。

auto_now_add が True の場合、モデル インスタンスがデータストアに最初に保存されたときの現在時刻がプロパティ値に設定されます(プロパティ値が既に割り当てられている場合を除きます)。これはモデル インスタンスの「作成」日時を格納する場合に便利です。

via:型とプロパティ クラス
つまり、auto_now_add引数をTrueに設定すればいいわけですな。

実際に試したところ、確かに日時の追加ができたのですが、タイムスタンプが日本日時ではないので、どうにかならんもんかのー。

2012/04/23

[open social]gadgets.window.adjustHeightで絶対高さを調節する方法

まさにその通りなのであります。

Gadgets API の gadgets.window.adjustHeight を使うと、ガジェットの高さを自動調整できますが、実際のところは、画像のロードタイミングや、ブラウザごとに仕組みの異なる gadgets.rpc が影響して、期待どおりの高さに自動調整されないことが多々あります。

via:gadgets.window.adjustHeight で、確実に !? ガジェットの高さを自動調整する方法
確かに、余分なスクロールが表示されてしまう時がある。

そこで、同エントリーでは、setIntervalを使った方法が書かれていたが、そのやり方だと、clearIntervalをしない限り、実質、無限ループ状態となり、メモリにもあまりよろしくない。
なので、もっと一発でできる方法はないのかなーっと模索する。

で、ありました。

adgets.window.adjustHeight
gadgets.window.adjustHeight(opt_height)

via:Gadgets.window (v0.9)
つまり、number型のopt_heightを設定すれば、好きな高さに設定することができるんですな。

なんて、すてきな魔法なのだろうか。

2012/04/22

[design]ボタンのクリック率が評価できる時

ちょっと以下のエントリーにおいて提案というか意見があったので、1エントリー

こういったCall-To-Actionのボタンのテストですがたまにクリックのみで評価されてしまっているケースがあります。しかし、これはテスト結果を間違って評価してしまいかねないので注意が必要です。というかクリック率だけで評価とかは、基本はダメです。

via:ボタンをCTRで評価しない理由
確かに、サイト全体の評価を行う時は、クリック率だけでは、ダメだが、個々の構成要素、つまり、ミクロ的に見た場合、個別のページにいては、クリック率で評価はしていいんじゃーないのかなーっと。

例えば、アンケートページの構成を考えると以下のようになると思う。
Photobucket
で、もちろんサイト全体の評価を行う場合は、「アンケート数をある一定の数以上まで集めるようにする」ということを念頭におく必要があるのだが、TOPページに最初訪問して、すぐに他のサイトへ行ってしまった場合、結果として次のページにクリックされずに終了ということになります。
TOPページ単体でみた場合の評価基準は、次のページへのクリック率であり、数字が悪い場合の要因として、
  • キャッチが弱い
  • ボタンがどこにあるかわからない
  • イメージが伝わりづらい
と次のアクションへ向けての反省がクリック率をベースとしてできるのかなと。

そう言った意味で、やはりクリック率もある種評価基準にはなるんじゃーないのかなーっと。

2012/04/21

[design]ユーザビリティと経済的影響について

ちょっと下記のエントリーにおいて思うところがあったので、1エントリー

抜本的革新はすぐに日用品になる。例えば、電気や蒸気機関車、コンピューターは今や誰もが使っている。肝心なのは企業がそうしたものを使って何をするかだ。鉄道会社が穀物のより優れた輸送方法を考案すれば、蒸気機関車を発明した会社より、たくさんお金を稼ぐかもしれない。iPhoneは偉大な進歩だが、Android等の競争相手によって、徐々に市場シェアを食われていっている。

via:A/Bテスト、ユーザビリティエンジニアリング、抜本的革新: どれが最も有益か
確かに、今や、スマホは日用品となりつつあるし、市場シェアも喰われてしまっているが、その一方で利益で考えた場合はどうなのだろう?

コンピュータで見た場合、Appleと他社メーカーの利益率は、全然、違う。
iPhoneで見た場合もそうだ。

なので、上のエントリーでは、ネガティブな感じで書かれているが、本当にそうなのだろうか?と思うし、例としても、不適切だと感じました。

2012/04/19

[blogger]zenbackを設定しなおし

どうやら、Bloggerのドメインが「.com」から「.jp」になったため、zenback側から連絡があり、新しく設定しなおす羽目に。

2012/04/18

[facebook]uploadできる写真の最大数

今、iOSでFacebookのアカウントでログインを行い、写真を投稿できるアプリを作っているのだが、ここでの問題点は、アップロードする先のサーバー選択。

Google App EngineのBlobStorageだと、5GBまでだし、
AmazonのS3なんかは、いきなり有料iだし、
Facebookにも投稿できるようだが、GraphApiのPhotoセクションを読んでみると、1アルバムにつき、投稿できる最大(max)枚数が、200枚となっている。

うーん、どうしたものだろうか??

2012/04/17

[objective-C]NSURLConnectionDelegateリファレンスにはないメソッド

NSURLConnectionDelegateのリファレンスにはないのだが、URL Loading System Programming GuideのUsing NSURLConnectionには、がっつり書かれているメソッドがある。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
ここらへんのメソッドは、確かに、NSURLConnectionDelegateに定義されている。

なので、リファレンスにも反映してほしいなー。

2012/04/16

[Objective-C]NSDataをNSStringに変換

HTTPリクエストを送ると返ってくるデータがNSDataなので、NSStringに変換してデバッグできないかなーっと思ってぐぐったら、回答がありました。

NSString* aStr;
aStr = [[NSString alloc] initWithData:aData encoding:NSASCIIStringEncoding];




NSData* aData;
aData = [aStr dataUsingEncoding: NSASCIIStringEncoding];

via:Convert NSData to NSString or vise versa
NSLogにこの変換結果を引数に設定すれば、デバッグできますねー。

便利、便利。

2012/04/15

[blogger]「+1 ボタン」と「Google+ バッジ」が追加

これは、いいかも

Blogger に新しいガジェットが追加され、Google+ との連携がさらに強化されています。

via:Blogger に新ガジェット「+1 ボタン」「Google+ バッジ」が登場
時間があるときにためそうーっと。

2012/04/14

[photoshop]iOSのAppアイコン作成テンプレート

これなんだけどー。

iOSのAppアイコン作成用PSDテンプレート。
次のようなアプリケーションアイコン作成用のキットが公開されています。
Retina iPadにも対応しています。

via:iOSのAppアイコン作成用PSDテンプレート
というわけで、さっそく、appicontemplateからpsdファイルをダウンロードしました。

ただ、Photoshop CS2以降対応なので、そもそも、Photoshop Elementに対応しているか不安。。。

2012/04/13

[本]ワーキングプア いくら働いても報われない時代が来る

ワーキングプア いくら働いても報われない時代が来る (宝島社新書)
ワーキングプア いくら働いても報われない時代が来る (宝島社新書)
門倉 貴史

はじめに
第1章 日本の労働者の4人に1人は生活保護水準で暮らしている
日本の労働者の4人に1人は「ワーキングプア」という悲惨さ
なぜ「ワーキングプア」が増えるのか?
増加する生活保護を受ける世帯
今後の拡大が予想される日本の所得格差
米国で増加するワーキングプア
ワーキングプアからホームレスへの転落
ドキュメントワーキングプア(1)
「年収14億円の会社社長から、時給900円のコンビニバイトに」
ドキュメントワーキングプア(2)
「元大手100円ショップ店長。激務の末に・・・」
第2章 働き盛りの中年家庭を襲う「ワーキングプア」の恐怖
『アメリカン・ビューティー』の主人公がもし生きていたら...
40万人にも上る中高年男性の「ワーキングプア」
会社の倒産やリストラで中高年男性が「ワーキングプア」に
抑えられない諸々の支出
今後、深刻化するとみられる中高年のニート・フリーター問題
「ワーキングプア」を苦にして自殺する中高年層
中高年の「ワーキングプア」の増加はノンバンクの業績にも悪影響
中高年サラリーマンに重くのしかかる教育費の負担
ドキュメントワーキングプア(3)
「55歳、元SE。年収800万円から路上生活者に」
ドキュメントワーキングプア(4)
「46歳、非常勤講師。家族経営の会社が倒産して借金一億円に」
第3章 日本型雇用形態の崩壊
二人三脚で歩んできた終身雇用制度と年功序列賃金制度 なぜ終身雇用・年功序列制度は崩壊したのか? 派遣社員とはなにか? 1990年代以降急増する派遣社員 派遣労働者の弱い立場を象徴する事件 働きすぎの正社員は心のワーキングプア
ドキュメントワーキングプア(5)
「31歳、内装工。ボーナスをもらった経験があまりないので・・・」
ドキュメントワーキングプア(6)
「30歳、元教師。結婚しても普通の家庭を作るのは無理かな・・・」
第4章  非正社員で働く若者たち―「3人に1人が非正規雇用」という現実
非正社員として働く若者たち
深刻化する若年雇用の問題
正社員になれない若者が「ワーキングプア」に陥るリスク
「パラサイト・シングル」となる若年の非正社員
増加するフリーターとニート
ニートとそうでない人の所得格差が拡大
フリーターやニートの増加は経済にもマイナスの影響
若者がニート化する原因は雇用環境の悪化
改善が見込まれるマクロの雇用環境
若年層で深刻化する雇用のミスマッチの問題
ドキュメントワーキングプア(7)
「32歳、アルバイト。『10年後の未来は見えない』」
ドキュメントワーキングプア(8)
「33歳、元鉄道会社勤務。意欲が高まってもがんばれない」
第5章 「構造改革」による自由主義経済と民営化の果てに
聖域なき構造改革で得たものと失ったもの
非正社員から正社員への門戸を広く開放することが必要
ワークシェアリングで「ワーキングプア」の問題は解決するか?
消費税の増税は「ワーキングプア」の負担をさらに高める
セーフティ・ネットとしての最低賃金の引き上げが必要
外国人労働者の参入で非正社員の生活がさらに苦しくなる
ドキュメントワーキングプア(9)
「31歳、障害者施設者職員。周囲との格差うんぬんは気にしない」
ドキュメントワーキングプア(10)
「35歳、シングルマザー。『生活保護には自由がない』」
あとがき

via:目次
ワーキングプアの現状と問題について、これでもかというぐらい深くえぐった一冊。
ものすごい量のグラフと図が紹介されており著者の一方的な主張というより客観的な視点にもとづいた内容だと言える。
その観点からするとものすごくいい本だと感じた。

ドキュメントが一番堪えた。

他人事とはとても思えなくなってしまう。

子供が成人したときは、どうなってしまうのだろうかと思わずにはいられなかった。

少なくともよくなってほしいなと願う。

たとえば本書ではワーキングプア対策として、所得税と消費税をあわせたともいえる「支出税(expenditure tax)」の導入と最低賃金(minimum wage)の増額を提案しているが、後者はとにかく前者はあまりに現実離れしていている。

via:書評 - ワーキングプア
この支出税に関しては、人にいえない仕事はなぜ儲かるのか?と同じだったので目新しさを感じなかったので、違う主張がほしかった。

2012/04/12

[iOS][Objective-C]UITabBarDelegateについて

UITabBarControllerクラスを継承したサブクラスにおいて、UITabBarDelegateを設定し、下記のコードを入れたところ、エラーになってしまう。

self.tabBar.delegate =self;
これが正常動作しないと、下記のメソッドがコールできないと思い、さてどうしよう。。。
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
もしかしたら、そもそも、delegateの設定をしなくても、自動的に、コールしてくれるのではないかと思って、試しにコメントアウトしたら、呼び出されていた。

なので、結果的に、delegateの設定をする必要ななかったということですねー。

2012/04/11

[Objective-C]外部データの型判定について

これ、

Twitter等のWebサービスと連携をとったiPhoneアプリを開発する際には、WebからデータをXMLなりJSONでデータを取得してパースして使うことになります。この時に、各APIによって決められた型にそって取り出すことになりますが、取り出すデータの種類がNSArrayなのかNSDictionaryなのか、見分ける方法があります。

via:[Tips]XML等で取り出したデータがNSArrayなのかNSDictionaryなのか判別するには?
とあり、この後、NSLogを使ったデバッグ方法にいくわけだが、これだと、動的に判定することはできない。

なので、以前、型判定に書いたような方法で判定するのはどうでしょうか?

という提案でした。

[JavaScript]node.jsとかはどう?

floatingdays: JavaScriptライブラリ備忘録 のエントリーで、

「使うことがありそうな」

というくだりがあったので、node.jsはいかがでしょうか?と身勝手におしてみる。

2012/04/10

[facebook]電力使用状況アプリを中止

昨年、6月にリリースを行いました電力使用状況アプリですが、諸事情によりいったん中止にすることにしました。

今まで、お使いいただきありがとうございました!!

2012/04/09

[iOS][Objective-C]SIGKILLエラー

シミュレーター上でデバッグしているときに、このエラーに直面するときがあります。

なぜかなーっと思って調べていたら、

2011/04/25: デバッグ時に、program received signal SIGKILLと出る。

に答えがありました。

結果的に、XcodeのSTOPを押せば解消するとのことで、実際に試したら確かにエラーがなくなりました。

ドツボにはまる前に、すぐにわかってよかったです。

2012/04/08

[facebook]プロフィール写真の大きさを指定

前回、facebookのプロフィール写真の取得方法について書きましたが、その際に、大きさを指定できるようです。

指定できるのは、
square:50x50
small:50
normal:100
large:200
となっているようです。

毎回、毎回、Developerサイトを覗くのはめんどいので、メモとして1エントリー書きました。

2012/04/07

[本]facebook

たった今、読了

第1章 「ファイナルクラブ」で出会った男
第2章 ハーバードヤード
第3章 「ハーバードコネクション」
第4章 フェニックスの通過儀礼
第5章 ハッキング
第6章 寮への侵入
第7章 予想外の反響
第8章 エリートたちの思惑
第9章 勧誘
第10章 電子版ファックトラック
第11章 双方向のソーシャルネットワーク
第12章 マークの言い訳
第13章 「ザ・フェイスブック」運用開始
第14章 寝耳に水
第15章 警告状
第16章 学長への直訴
第17章 「ナップスター」創業者の登場
第18章 大金持ちの予感
第19章 マークの野望
第20章 タイラー達の逆襲
第21章 創業者の資質
第22章 ショーン主催のパーティー
第23章 踏み潰されるライバルたち
第24章 疎外されるエドゥアルド
第25章 「ペイパル」創業者への売り込み
第26章 フェイスブック株の行方
第27章 エドゥアルドの油断
第28章 株の売却
第29章 弁護士からの通達
第30章 ビリオンダラーベイビーの誕生
第31章 訴訟
第32章 ショーンのスキャンダル 
第33章 冷徹な決断
第34章 パーティーは終わった

via:目次
伝記作家がインタビューして当事者目線で書かれたスティーブ・ジョブズ Ⅰスティーブ・ジョブズ Ⅱとは、違い、facebook創業者であるマークザッカーバーグを取り巻く人たち目線から描かれたfacebook誕生秘話。

映画「ソーシャルネットワーク」の原作なのだが、上映後に読んだ今となっては、順序的にもよかったと思っている。

当たり前と言ったら、そうなのかもしれないが、映画と違っている部分がかなりあったりとおもしろかった。


2012/04/06

[facebook]graph apiからプロフィール写真を取得

すっごい下の方に記載されていたので、気がつかなかったのですが、どうやら、個人のプロフィール写真を取得するAPIは別途容易されているようです。
Picturesで確認すると、下のようにアクセスすることで取得できるようです。

<img src="https://graph.facebook.com/maitokuwahara/picture"/>
これ実際に、個人のユーザー名から検索をかけているが、idでもおkです。

2012/04/05

[JavaScript]からOSを判断する

前回、スマホを判定する方法について書きましたが、同様に、PCの判別もできるようです。


var os, ua = navigator.userAgent;
if (ua.match(/Win(dows )?NT 6\.1/)) {
os = "Windows 7"; // Windows 7 の処理
}
else if (ua.match(/Win(dows )?NT 6\.0/)) {
os = "Windows Vista"; // Windows Vista の処理
}
else if (ua.match(/Win(dows )?NT 5\.2/)) {
os = "Windows Server 2003"; // Windows Server 2003 の処理
}
else if (ua.match(/Win(dows )?(NT 5\.1|XP)/)) {
os = "Windows XP"; // Windows XP の処理
}
else if (ua.match(/Win(dows)? (9x 4\.90|ME)/)) {
os = "Windows ME"; // Windows ME の処理
}
else if (ua.match(/Win(dows )?(NT 5\.0|2000)/)) {
os = "Windows 2000"; // Windows 2000 の処理
}
else if (ua.match(/Win(dows )?98/)) {
os = "Windows 98"; // Windows 98 の処理
}
else if (ua.match(/Win(dows )?NT( 4\.0)?/)) {
os = "Windows NT"; // Windows NT の処理
}
else if (ua.match(/Win(dows )?95/)) {
os = "Windows 95"; // Windows 95 の処理
}
else if (ua.match(/Mac|PPC/)) {
os = "Mac OS"; // Macintosh の処理
}
else if (ua.match(/Linux/)) {
os = "Linux"; // Linux の処理
}
else if (ua.match(/^.*\s([A-Za-z]+BSD)/)) {
os = RegExp.$1; // BSD 系の処理
}
else if (ua.match(/SunOS/)) {
os = "Solaris"; // Solaris の処理
}
else {
os = "N/A"; // 上記以外 OS の処理
}

via:OS 別に振り分ける
jQueryのプラグインとして用意するのもありかなーっと思ったり。もしかして、すでにあったり。。。

2012/04/04

[facebook]GraphAPIで自分の情報を取得

iOS上でfacebook sdkをつかっているのだが、GraphAPIを経由して、個人情報を取得する方法について

まず、webの場合だと、Userセクションで確認して、

https://graph.facebook.com/me
でアクセスすればいいのだが、iOSの場合は、
[self.facebook requestWithGraphPath:@"me" andDelegate:delegateMethod];
と指定すればいい。

ちなみに、項目を絞る場合は、
meの後に、querySrtingで、fieldキーに、カンマ続きで、指定すればおk


[self.facebook requestWithGraphPath:@"me?fields=id,name,username,gender,email" andDelegate:delegateMethod];
これは、頻繁に使うので、覚えておきたい。

2012/04/03

[Objective-C]型判定

詳解 Objective-C 2.0で確認しても明確な答えは手に入らなかったので。

idは、すべてのobjctに共通する型なのですが、もっと細かく知りたい場合は、どうすればいいのだろうか?

if ([object isKindOfClass:[NSString class]]) {
// object is NSString class
}

via:型の動的判別
「isKindOfClass」メソッドと「class」メソッドを使えば、判定をすることができるんだなと。

型によって、もちろん、使えるメソッドが全然、違ってくるので、この判定方法は、便利だなと。