万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    第2回 iphone_dev_jp 東京iPhone/Mac勉強会 iOS/Macに関する勉強会です

    ハッシュタグ :#idevjp
    http://atnd.org/events/28693

    資料 ※おそらく全部
    http://slidrs.net/sessions/13

    会場についての諸注意・説明
    @bash0C7さん
    こしばさん。
    パンゲア会場
    建物の写真はOK

    (トイレの場所、無線LANの設定、自販機の使い方など)

    UITableViewハック
    @fladdictさん
    UITableViewHack.pdf

    ・UITableViewのハック。
    UITableViewHack

    UITableViewを拡張は?
    →CoverFlowできるか?。

    ・データに互換性がもたせられる。
    ・Cellの管理棟を実装する必要がない。

    1. 水平で作る
    UITableView.transformを左に90度(-90度)回転
    CellのContentViewのTransfomを+90度回転
    水平方向のTableViewが完成

    ☆2,3行数でできる

    2. セルのカスタマイズ

    フワッフワッ
    Cellの作成場所
    CellのPrepareForResse
    TableViewのスクロール

    ☆重要な関数を作成
    中央からセルまでの距離を相対値で計算する

    評価関数
    ・インプット:
    セルのセンターからの距離(-1〜1)

    ・アウトプット
    センターからの距離に応じてとるべきscaleを返す
    センターからの距離の応じて取るべき色を返す
    →位置、回転、スケール、透明度、色

    位置に応じて色が変換される

    scale for distance
    グラフとスケールと色を組み合わせる。
    選択の反転は後で消す。
    関数のグラフ次第で変形できる。

    ContentView?セル自体?を回転で実装を切り分けられる。
    ベジエ曲線や二次曲線の組み合わせ

    TableViewの関数を呼ぶだけで削除や、追加ができるので楽!
    アニメーションのオーバーライドが自分でやる。

    @fladictでgithubへのせる

    Q. 各アイテムに対してのレイヤーが違うが、どちら側が上になるかを制御できるのか?
    A. 配列につっこんだりして〜〜Z軸の変形ができる。

    ARCのベストプラクティスを考える
    @k_katsumiさん
    idevjp_kishikawa_ARC.pdf

    http://kishikawakatsumi.com/

    ARC & Blocks
    新しい技術をガンガン使って試した。

    循環参照に気をつける。blockやweaksにする。
    →本などで
    やってみないと循環参照になるのがよくわからない。
    理屈だけではわからないことが多い。

    Appleのドキュメントもあるが、体型だって書かれたのがない。
    memory管理ドキュメントは2011年など古い
    Appleのドキュメントよりも詳しい 坂本さんのエキスパートObjective-C

    Clangの公式ドキュメント
    Automatic Reference Counting
    http://clang.llvm.org/docs/AutomaticReferenceCounting.html

    ninjinkunさん 関西で発表

    メモリ管理を自動化数r
    (静的解析にヨテコンパイラが自動的に保持開放のコードを挿入する)

    ARCのはバイナリの互換性がある
    GCオンやオフでビルドしされたバイナリに互換性がない

    Weak references以外はMacOS X v10.6とiOS 4でも使える

    CのとこやARCオフするなど
    JSONキットとか、今後対応しない奴

    ARCはコンパイルオプションでオン・オフできる

    ARCオンでBlocksを使う場合、循環参照を作りやすい

    ブロック内でブロックの呼び出し元を参照しているかどうか
    ブロックをコピーしているかどうか
    ブロックの呼び出し元のオブジェクトを保持しているかどうか
    ブロック内でselfを参照しているかどうか→一番気を使わなければいけない

    ブロック内でブロックの呼び出し元を参照している場合
    ASIHTTPRequest

    __block 記憶指定子
    ARC無効なら_block指定子があるオブジェクトがretainされない

    ARCオンとARCオフの場合で挙動が変わる
    どちらでもretain(保持)されるように
    request = nil

    ARCあり
    __weak

    ◯プロクティス1 結果をブロックの引数で返す

     ブロックをコピーしているかどうか? ARC×
     ブロックをコピーした場合、呼び出し元を参照する循環参照する
     blocks+arcで使う方が間違えにくくするように、引数にする

    ◯プロクティス2 できるだけブロックをコピーしない
     ARC◯
    ブロックの呼び出し元のオブジェクトを保持しているかどうか
    ブロック内でselfを参照しているかどうか

    ブロックの呼び出し元を保持していてもブロックがコピーされないならキャプチャされた自動

    ブロックの呼び出し元を保持していてもブロックがコピーされる場合は循環参照になる

    ◯解決方法
     循環参照を避けるためにselfをローカル変数に代入してローカル変数を通してアクセスする

    BlocksKitのUIKit拡張などコールバックでUIを更新する場合に循環参照を作りがち

    Macの場合、Lion以上でも__weak指定のできないクラスがけっこうある(__unsage_unretainedを使う)

    ◯プロクティス4 delegateやtarget actionで実装することを検討する

    Blocksの使い方は可読性とチームメンバーのり器量などいろいろなバランスを見極めて使い分けられるようにしたい

    "クラスメソッド"にすると使う方法はいろいろ考えなくて楽 ARC◯

    複数のファイルにコンパイラオプションを設定するには

    Build Phases>Compile
    Enterキーを押します。
    ダブルクリックではダメ。→バグ?

    ASIHTTPRequest

    AirPrintで遊んでみた
    @cqa02303さん

    ・本がでる

    Bonjourプロトコル

    ・まとめ
    @"_ipp._tcp" → Bonjour Printer
    @"_ipp._tcp,universal" → AirPrint Printer

    InterfaceBuilder嫌いがStoryboardを愛するようになった訳
    @sonson_twitさん

    研究系、画像処理

    ・Storyboard
    チュートリアルなどはネットにある

    Interface Builder
    autoreleaseのバグ

    Table Viewをstaticにしたら自前で書ける

    つながってないViewもPushして呼び出せる。

    クリックで遷移を作れる
    identiferを使えばあとから呼び出せる
    コードとの親和性

    ON,OFFでchanged switchでdispatchしてTableViewを呼ぶことができる。
    ※昔はもっとテマだった

    常にビジュアルプログラミングしなくてはならないというわけではない
    抜け道がある

    dynamic cell

    Modalは下から出る

    segue左右からパカっと出る
    →dismissは自分で手で書く必要がある

    application controllerを一度破棄されてしまう

    Ibtool
    ファイルを読み込ますと、タイトルにしてリストにしてくれる
    Python文字コードで。

    UITableViewのコードが減る
    StoryBoardではViewの使い回しができないので、共通の部品を使うにはInterfaceBuilder

    自作UIコンポーネント入門
    @cocoponさん

    ・XVim
    https://github.com/JugglerShu/XVim

    ・CMPopTipView
    https://github.com/chrismiles/CMPopTipView


    ・CMPopTipView読むぞ
    PointDirectionUp
    PointDirectionDown

    createしたら必ず開放!

    ImageI/O完全攻略
    @studioshinさん

    http://www.studioshin.com/iphone_dev/iphone_dev_ImageIO.pdf
    http://www.studioshin.com/iphone_dev/ImageIOSample.zip

    Cocoa勉強会 はてな借りてる

    2008年
    世界に2回目の将棋

    アニメーションGIF
    GIDQuickMaker

    Xcode4.3対応

    ・ImageI/Oとは?
    Mac OS X10.4で導入されたApplicationServicesフレームワーク
    イメージ読み書きするためならUIImageとかがいい

    画像のメタデータにアクセス
     JPEGExif
     画像のピクセルデータに直接アクセス
     ・独自の画像フィルターの作成など

    GIFファイルを保存できる。
     アニメGIF作成

    ・反転処理

    		for(int i=0; i < bitmapByteCount; i+=4) {
    			//ピクセルの加工ができる!
    			*(pixelBuff+i+0) = *(ptr+i+0);	// R
    			*(pixelBuff+i+1) = *(ptr+i+1);	// G
    			*(pixelBuff+i+2) = *(ptr+i+2);	// B
    		}
    		CGContextRelease(context);
    	}
    

    ・反転した

    		for(int i=0; i < bitmapByteCount; i+=4) {
    			//ピクセルの加工ができる!
    			*(pixelBuff+i+0) = 255-*(ptr+i+0);	// R
    			*(pixelBuff+i+1) = 255-*(ptr+i+1);	// G
    			*(pixelBuff+i+2) = 255-*(ptr+i+2);	// B
    			*(pixelBuff+i+3) = *(ptr+i+3);	// A
    		}
    		CGContextRelease(context);
    	}
    

    ・1サンプルあたりのビット数
    RGBAの32bitなら32などかく

    4バイトずつ

    NULL, NO, kCGRenderingIntentDefault
    ↑将来のためにNULLにしたり

    CGImageDestinationCreateWithData

    アニメーションGIFを表示するだけならUIWebViewに貼ってしまえばよい。

    リッチテキストエディタについて
    @cathandnyaさん
    http://cathand.org/iphone_dev_jp_02
    iphone_dev_jp_02.pdf

    jsのexecコマンド

    タップした位置をスクロール

    ざっくり iOS × GAE 体験
    @335gさん
    くどうさん
    https://github.com/335g/ZakkuriGAE
    勉強会資料@335g.pdf

    EA FIFA12 Club

    ・NSJSONSerialization(iOS5.0〜)

    Python2.7(GAE)でJSONライブラリ使用可

    表示して消すライブラリ。クラスメソッドで。

    簡単!OpenGL ES2.0フラグメントシェーダー
    @kamiyanさん

    IBGLKit
    C++
    OpenGLライブラリをObjective-Cでかいた。

    vec2、vec4よくつかう
    3Dならvec2とか

    FragColor・・・最小出力先のカラー
    u_alpha
    dotは内積


    いわゆる黄金本

    洋書はオレンジの

    Cameraの露出を制御する
    @takiuchiさん

    AVCaptureDevice

    AE(露出)

    使用したiPhoneMacに出す奴
    ◯Reflaction
    http://www.reflectionapp.com/

    http://www.apptoiphone.com/2012/03/reflection-iphoneipadmacairplay.html

    自動で明るさを決めてくれる機能か?

    mixiiOSアプリ開発
    @k_kinukawa
    衣川
    UX

    mixi 5人くらいiPhone
    2名・・デザイナー
    2名・・ディレクター

    ろくろw
    http://himasoku.com/archives/51704146.html
    http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=002087

    WebViewからネイティブ叩く

    mixi Touchから
    WebViewなので画像の添付ができない triaina

    タイタンを倒したから。Titaniumを意識。

    ◯App Reviwers
    Sinatraベース
    https://github.com/punchdrunker/AppReviewViewer

    コメント返しができる。

    git使ってる。
    CI・・・Jenkins
    gitで変化があったら、自動テストを。自動テストGHUnit

    1年に200回バージョンアップ

    スクラムにハマっている。
    ・今後
    もっと早いデリバリー 一ヶ月→2週間
    ARC,Storyboard対応
    スマートフォンの最適化

    テスト・・・UIや非同期は書きにくい

    なんでもViewコントローラーに書くのはやめよう。

    gitはエンタープライズライセンスではない。


    ◯ライトニングトーク
    WWDC前夜祭

    6/1(金)
    19:30〜

    入口の近く
    Ajito


    @shu223