Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon 2010/05/01 Objective-C 基礎編 Vol1
触ってれば何となるかな?と思ったけど、 さすがにコーディングはJava系じゃないので厳しいわ。
文法がさっぱり馴染めない(T_T)
X-codeの使い方は何とかなりそうですが。

と言う事で、基礎の基礎からGW中にマスターするぞ!
帰省前に本買わなきゃいかんが、とりあえずネットで。

混沌のiPhoneアプリケーション工房を参考にさして貰いました。

コンパイラディレクティブ


>Objective-C 言語のクラスの宣言は、予約語や構文ではなく
>コンパイラディレクティブを利用します。 コンパイラディレクティブは、
>コンパイラに Objective-C で拡張されたクラスの宣言や実装などに用いられ、
>@ マークで始まるという特徴を持ちます。

ふむ。 @ってプロパティ(?)にも出てこなかったっけ?
それも含めてコンパイラディレクティブ? 取りあえず進む。

.hファイルの場合


クラスを宣言するコンパイラディレクティブは@interface で始まり@end .hはインターフェイス定義ファイルって理解でいいのかに?

@interface クラス名 : 親クラス名
{
	インスタンス変数宣言
}
メソッド宣言
@end

.mファイルの場合 .mは実装ファイル?


@implementation クラス名
メソッド定義
@end

メソッド宣言


- (戻り値型) メソッド名 : 仮引数リスト ... ;

・「-」で始まるメソッドをインスタンスメソッド(動的)
・「+」 で始まるメソッドをスタティックメソッド(静的)
・メソッド宣言では型を 「( )」 で囲む
・メソッドが引数を受け取る場合は、コロン : に続いて仮引数リストを指定


この書き方が紛らわしい。
仮引数リストが、これまたよくわからん。

インスタンス生成・メッセージ式


一般的なオブジェクト指向型言語では new 演算子が存在するが、Objective-Cにはない!
って事で登場するのが「alloc クラスメソッド」(ファクトリメソッド)。
インスタンス生成はルートクラスが管理し「+ alloc;」として定義されている。

そして「メッセージ式」と呼ばれる方法で、以下のように呼び出す。

[クラス名 メソッド名:引数リスト...]


なるほど!これが「動的なメソッドの呼び出し」ってことなのね。
処理に時間はかかるが、合理的な記述ができるというカラクリか。

インスタンス参照を使わず、メッセージを入れ子にしてメッソドを呼び出す。

[[Test alloc] method]


なるほど!なるほど!
いまさら何か書いてるコードの意味が理解できてきた!
でも、やっぱ見にくくないかい?w

icon 2010/04/27 Github
頭の中を整理と言いながら、また新しいものに手を出していたり(^_^;)

会社も自宅も「Subversion」を使ってるけど、最近良く目にする「Git」を試してみようかと。
分散バージョン管理Git/Mercurial/Bazaar徹底比較

・サーバリポジトリ(中央)からは、完全履歴を含んだリポジトリの複製を取得
・ローカル環境ごとにリポジトリがあり管理する

うーん。何かメリットあるのかなぁ?と考えてた結果、

■メリット・デメリット
自分のローカルでバージョン戻したりできる!

細かい修正でいちいち、サーバにコミットするのも煩わしいからねえ。

ただ、これにどっぷり漬かると、サーバにアップするタイミングがかなり遅れないか?
つまり自分のマシンがあぼーんしたら、状況によっては目もあてれあれないw

ローカル同士でコミットし合えるのも魅力だけど、
ちゃんとパートナーと話し合って開発しないと、訳わからなくなりそう。

とは言え、評価はしてみないと。

■セットアップ情報
Githubを試してみる。

その前に、SubversionのTracを構築しないと(汗)
icon 2010/04/24 自作ライブラリ「YTwitterLib」はじめ
あぁ、SyntaxHighlighterの弊害。
preタグを使うから、ブラウザによってズレまくりますorz
これだから、HTML嫌い。。。CSS3はノータッチだけど、改善されるのかなぁ?

さて、勉強がたらAirでTwitterツール作ってるんだけど、リファクタリングついでに
Twitterライブラリ「YTwitterLib.swc」も自作してみる。

残念ながら、セキュリティサンドボックス(crossdomain.xml制限)でFlashでは使えません。
(サーバサイドでPHPプロキシかませばできますが・・・)
その他の手法としては、JavaScriptのJSONPと連動でいけるかなぁ?

ライブラリ作成にいたっては、Twitter API 仕様書まとめサイトでAPI調べる。
返ってくるデータはFlexのデバッガーで直接を見て調べる。

「YTwitterLib.swc」の最低限の機能として、タイムライン・フォロワー・友人取得、ツィート投稿を実装
で、「YTwitterLib.swc」使った試作アプリ(デザインそっちのけw)


AirがiPhoneにのらないのが悔やまれるなぁw

■「YTwitterLib.swc」メソッド一覧(未実装含む)
まだ、命名や仕様が練れてませんが。。。

- getUserTimeline(id:String):void
- tweet(message:String, handler:Function=null, isGetHomeTimeline:Boolean=true):void
- deleteTweet(id:Number, handler:Function=null, isGetHomeTimeline:Boolean=true):void
- getHomeTimeline():void
- getFriendTimeline(id:String):void
- getFriends():void
- searchFriends(id:String):void
- getFollowers():void
- getPublicTimeline():void
- searchWordTimeline(word:String):void
- searchUsers(screenName:String):void
- reply(id:Number, handler:Function=null, isGetHomeTimeline:Boolean=true):void
- retweet(id:Number, handler:Function=null, isGetHomeTimeline:Boolean=true):void



■このライブラリ使って、タイムラインとる例
public function onCreationComplete(event:Event):void
{
    twitter = new Twitter();
    twitter.userName = userName; //Twitterのユーザ名
    twitter.password = password; //Twitterのパスワード
    twitter.getHomeTimeline();
}

たった、4行でObject化されたタイムラインが取得できる。シンプルじゃね?

getHomeTimeline()がvoidなのは、非同期通信だから。
getHomeTimeline()で、Basic認証してtwitter.comからリクエスト(JSON)が返ってくる。
JSONを「userTimelines:ArrayCollection」に変換して自動的にバインド。

userTimelinesは、アクセスしやすいようにUserTimeline型オブジェクトでの配列です。

■今後の宿題
▽未実装機能の調査・着手
・reply(返信)
・retweet(リツィート)
・個人設定
とかモロモロの機能も設計しないといけない。

▽認証系
Basic認証経由なので、将来的にはOAuth認証も対応する予定

その場合、Twitter Developerでconsumer key と consumer secretを登録・作成が必要。
Flexのサンプルだと、OAuth Class for Flexがソースで載ってる。

▽その他API調査
TwitterのAPIにはstreaming APIってのもある。
Socket通信でストリーミングするので、超リアルタイムだけど、データをどう使うか?が難しい。

とりあえず、こんな感じでストリーミングできるが、根本的にどうしたらいいかがわからないw

■簡易PHPサンプル
$user = 'xxxx';
$password = 'xxxx';
$stream = fopen("http://{$user}:{$password}@stream.twitter.com/1/statuses/sample.json?delimited=20", "r");
while ($json = fgets($stream)) {
    $twitter= json_decode($json,true);
    if(preg_match('/[ァ-ヶーぁ-ん]/u',$twitter['text']))
        echo $twitter['user']['name'].':'.$twitter['text'] . PHP_EOL;
}

これ抽出によっては、ブラウザが死にます。。。

http://stream.twitter.com/1/statuses/firehose.json
に関しては現在、法人向けで申請しないと使えないとのこと。
<< 最初 < 前ページ 次ページ > 最後 >>

このサイトについて

HTML5 & CSS3化しつつあるので、現在IEには対応してません。
できれば、Google Chromeやら Apple SafariのWebKit系をお勧めします。

DBからプログラムまで一応全て自作なので、バグってたらすいません。
実験でFlash版(Flex版)を先に作りましたが、ちょっと停止してます。

プロフィール

新宿近辺でSE & プログラマーしてます。
Webアプリの開発・設計とか、最近はiPhoneとか奮闘してます。
デザインはさっぱりです。

音楽は、昔からCubase打ち込み人間で、そっちの方が経歴は長いですが、最近はやる暇がないです。。。

今は、Gon's Privates ってバンドのキーボードやってます。
単発的に、なんちゃってジャズ系のライブもやってます。

名古屋生まれなのでドラゴンズ好きです。

Info && SNS

Gmail

 yohei.yoshikawa@gmail.com

Twitter

 http://twitter.com/yoo_yoo_yoo

あんまつぶやきませんが、一応技術系メインで使ってます。情報交換はこちらへ

FaceBook

 http://www.facebook.com/#!/profile.php?id=1439130626

海外の知り合いがいないので閑散としてます。

mixi

 http://mixi.jp/show_profile.pl?id=230072

音楽仲間とかはこっちメインでやってます。興味があればこちらへ