SlideShare uma empresa Scribd logo
1 de 58
NSAttributedStringに
      ついて
        2012.8.25
       Cocoa勉強会
        大森智史
• スライド、サンプルは基本的にすべて公開し
 ます。
あんた、誰?


• と、いうわけで自己紹介。
• 大森智史といいます。

• Objective-Cで遊んでます。

• 印刷会社勤務。
• と、いうことで本題に
• 職業柄、電子書籍系のレビューなどは気に
 なっています。

• 先日、ある電子書籍の案内を見ていたら、す
 こし違和感を覚えました。
2012 AppStore
2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
サンプル画面




2012 AppStore
2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
気がつきましたか?
2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
おかしいでしょ?
2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
• そこで、研究熱心な私は、購入して詳細を見
 て見ることにしました。
初めに言っときますけど
組版の研究目的です。!
やっぱり変です。




2012 ミナミ・リエロ/株式会社日本文芸社/株式会社メディアタブレット/アドベンチャー 「女医が教える最高のセックス」より引用
組版         の


研究ですからね!
  本当ですよ!
きっと
• どうも横書き用のグリフを並べているだけな
 んでしょう。

• 縦書きは縦書き用のグリフを使わないと!全
 体にバランス悪い。

• 「。」「、」だけは処理しているようだが。
いいかげんな実装は
  やめていただきたい!

• きちんと実装しましょう。

• 縦書きは単に文字を縦にを並べれはいいとい
 うものではないです。
と、いうことで
きちんと実装するには
• フォント情報を読んで

• グリフを読んで

• レイアウトして
• 参考資料

• 日本語組版の要件

• W3C

• http://www.w3.org/TR/2012/NOTE-
  jlreq-20120403/ja/
そこまでする
必要はありません
CoreTextで属性付きテキストを
        描画
     こんな感じでいいです。
どうするか?
属性付きテキストとは
• フォント、色、サイズ

• 下線

• 段落設定 左    え右   え

• NSAttributedStringを使います。
• 属性付きテキストだけでは段落設定や縦組み
 などはダメだけどCoreTextと組み合わせるこ
 とで、多彩な表現が簡単に。
だが、しかし
• 今、iOS 5.1では、コンテキストを使ってしか
 書く方法がない!

• OS XにはdrawStringとかdrawRectとかView
 に書く方法がある!

• 将来に期待したい!
コンテキスト
•   とりあえず、コンテキストで書く方法


•   - (void)drawRect:(CGRect)rect {

    //コンテキスト
! CGContextRef context = UIGraphicsGetCurrentContext();



•   ....書いていく


•   }
• コンテキストを取得

• AttributedStringを作成

• フレームを作成

• 描画
• 以上です。
コンテキスト
•    レイヤーのコンテキストに書いていく方法


•    - (void)drawRect:(CGRect)rect {

    //レイヤーを作成
     CGLayerRef          layer;
     CGContextRef        layerContext;

    layer = CGLayerCreateWithContext(context,CGSizeMake(800,
800),NULL);
    //レイヤーのコンテキストを取得
     layerContext = CGLayerGetContext(layer);

•    ....書いていく


•    }
属性
フォント


ヒラギノ角ゴ ヒラギノ明朝
フォント
CTFontRef aFont1 =
    CTFontCreateWithName(CFSTR("HiraKakuProN-W6"), 20, NULL);

NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

          (__bridge id)aFont1, @"NSFont"
            ...
            ,nil ];
NSAttributedString *grayString = [[NSAttributedString alloc]
initWithString:@"リガチャnn ffi fln"
attributes:fontAttributes1];
カラー

カラー  カラー
カラー
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         (__bridge id)darkGrayColor, @"CTForegroundColor",
            ...
            ,nil ];
リガチャ(合字)
リガチャ
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         [NSNumber numberWithBool:YES],kCTLigatureAttributeName,
            ...
            ,nil ];
下線
下線
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

        (__bridge id)redColor,kCTUnderlineColorAttributeName,
 [NSNumber numberWithInt:0x0100],kCTUnderlineStyleAttributeName,
            ...
            ,nil ];
段落設定
(センターそろえ)
段落設定
              センターそろえ
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:
         paragraphStyleAttr, kCTParagraphStyleAttributeName,
            ...
            ,nil ];
id paragraphStyleAttr = ((^ {

        CTParagraphStyleSetting paragraphStyles[] = (CTParagraphStyleSetting[]){
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierAlignment, sizeof(alignment), &alignment},
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierLineHeightMultiple, sizeof(float_t),
(float_t[]){ lineHeight } },
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(float_t), (float_t[])
{lineHeight } },
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(float_t), (float_t[])
{lineHeight } },
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierLineSpacing, sizeof(float_t), (float_t[])
{ 0.0f } },
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierMinimumLineSpacing, sizeof(float_t),
(float_t[]){ 0.0f } },
            (CTParagraphStyleSetting)
            { kCTParagraphStyleSpecifierMaximumLineSpacing, sizeof(float_t),
(float_t[]){ 0.0f } }

        };
CTParagraphStyleRef paragraphStyleRef = CTParagraphStyleCreate(paragraphStyles,
sizeof(paragraphStyles) / sizeof(CTParagraphStyleSetting));
        return (__bridge id)paragraphStyleRef;

    })());
デモ
TEST1
縦組み用
縦組み用文字
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         [NSNumber numberWithBool:YES], @"CTVerticalForms",
            ...
            ,nil ];
+フレーム設定
     が必要
AttributedStringじゃないけれど
フレーム設定
//フレーム作成
    CTFrameRef frame = CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, 0), path,
 (__bridge CFDictionaryRef)[NSDictionary
dictionaryWithObjectsAndKeys:

[NSNumber
numberWithUnsignedInt:kCTFrameProgressionRightToLeft],
@"CTFrameProgression",

nil]);
文字間を等幅に
 (デリゲート使用)
文字間を等幅に
CGFloat MyGetWidthCallback( void* refCon ){
    NSLog(@"Width being set %s",refCon);
    return 30.0;
}
- (void)drawRect:(CGRect)rect{
    CTRunDelegateCallbacks callbacks;
    callbacks.getWidth = MyGetWidthCallback;
    CTRunDelegateRef delegate = CTRunDelegateCreate(&callbacks,
NULL);
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         delegate,kCTRunDelegateAttributeName,
            ...
            ,nil ];
文字間を調整
(カーニング使用)
文字間を調整
NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         [NSNumber numberWithFloat:5.0],kCTKernAttributeName,
                                     ,
            ...
            ,nil ];
リンク情報
リンク情報

NSDictionary *fontAttributes1 =
         [NSDictionary dictionaryWithObjectsAndKeys:

         @"http://www.apple.co. jp/" ,@"NSLinkAttributeName",

            ...
            ,nil ];
デモ
TEST2
まとめ

• NSAttributedString+CoreTextで簡単にきれい
  なレイアウト

• iOSではコンテキスト描画...。Macでは
  drawRect()とかあるし、シャドウも掛けられ
  たりするし...将来に期待!
ありがとうございました

Mais conteúdo relacionado

Mais procurados

今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/PrismNaoki Aoyama
 
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章aomori ringo
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめYoichi Hirata
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swiftnecocen
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!Kazuya Hiruma
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~Fujio Kojima
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesTakeshi Komiya
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)Suguru Hamazaki
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜勝成 鈴江
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列miyosuda
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 

Mais procurados (20)

今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/Prism
 
 
  
 
 
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章
 
CG2013 03
CG2013 03CG2013 03
CG2013 03
 
Aaなゲームをjsで
AaなゲームをjsでAaなゲームをjsで
Aaなゲームをjsで
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
CG2013 05
CG2013 05CG2013 05
CG2013 05
 
機械学習
機械学習機械学習
機械学習
 
CG2013 07
CG2013 07CG2013 07
CG2013 07
 
20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift
 
Processing
ProcessingProcessing
Processing
 
CG2013 02
CG2013 02CG2013 02
CG2013 02
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfes
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 

Semelhante a Cocoa勉強会201208

中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成Akineko Shimizu
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)Shoji Haraguchi
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Yuto Takei
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連OCHI Shuji
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalazTomoharu ASAMI
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61TATSUYA HAYAMIZU
 
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回- CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回- SORACOM, INC
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 

Semelhante a Cocoa勉強会201208 (20)

中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
Aaなゲームをjsで
AaなゲームをjsでAaなゲームをjsで
Aaなゲームをjsで
 
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回- CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
IgChart 入門編
IgChart 入門編IgChart 入門編
IgChart 入門編
 

Mais de Satoshi Oomori

Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードSatoshi Oomori
 
Cocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみるCocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみるSatoshi Oomori
 
Word net cocoa勉強会201306
Word net cocoa勉強会201306Word net cocoa勉強会201306
Word net cocoa勉強会201306Satoshi Oomori
 
Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306Satoshi Oomori
 
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイルCocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイルSatoshi Oomori
 
Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月Satoshi Oomori
 
Cocoa勉強会201203公開
Cocoa勉強会201203公開Cocoa勉強会201203公開
Cocoa勉強会201203公開Satoshi Oomori
 
Cocoa勉強会2011年11月
Cocoa勉強会2011年11月Cocoa勉強会2011年11月
Cocoa勉強会2011年11月Satoshi Oomori
 

Mais de Satoshi Oomori (9)

Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコード
 
Cocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみるCocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみる
 
Word net cocoa勉強会201306
Word net cocoa勉強会201306Word net cocoa勉強会201306
Word net cocoa勉強会201306
 
Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306
 
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイルCocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイル
 
Cocoa勉強会201302
Cocoa勉強会201302Cocoa勉強会201302
Cocoa勉強会201302
 
Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月
 
Cocoa勉強会201203公開
Cocoa勉強会201203公開Cocoa勉強会201203公開
Cocoa勉強会201203公開
 
Cocoa勉強会2011年11月
Cocoa勉強会2011年11月Cocoa勉強会2011年11月
Cocoa勉強会2011年11月
 

Cocoa勉強会201208

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n