Scala, ScalatraとかParser Combinatorのメモ

ちょいちょい勉強がてら書いてるのだけど、だんだん楽しくなってきたのでよい傾向である。

Scalatra 2.5 Guides - Scalatra

Specs2 User Guide

Abc Metric

面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiita

scala/scala-parser-combinators: simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module

Building a lexer and parser with Scala’s Parser Combinators · e.near Tech Blog

逆引きレシピは前に購入してちょいちょい読んでたのだが、やっぱり書かないとだめね。

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

Scala逆引きレシピ

Scala逆引きレシピ

とくにいみはないおはなし

github.com

ここ最近githubにコード載せておくと採用時の評価に含めるよという会社があちこちにある(うちの会社もそうだが)。自分も評価する立場になったりするので、実際にコードが見られるのなら「いいんじゃないの?」「うーん……」という判断ができるので非常にありがたい。

翻って自分のgithubやbitbucketのレポジトリをのぞいてみると、たいしたものがあまりなく自分がチェックする側であれば「うーん……」という判断をするかなぁと思ってしまう。*1しかしながら実際には社内のレポジトリにガンガンコミットしているし、チームで開発している以上それなりにプロジェクトを改善していくすべは自分の中にあると思っているのでその内容をgithubのようなものに現れてこないコードの凄みというのは、どうすれば相手に伝えられるのかなぁと考えてしまう。

結局のところなんらかの問題を解くとかそういう方向なんだろうけど、そういう瞬発力の必要なところと実際に設計してコード書くということも若干違うような気もするんだよなぁというジレンマを感じている今日この頃なのです。

*1:びっくりするほどしょぼいね、これ

Cocoa勉強会関西 第52回メモ走り書き

第52回 Cocoa勉強会関西 - iOS/Macアプリ開発勉強会

  • 相変わらず雑なメモ書きですが、置いておく
  • ust配信がうまくいかず開始遅れる

studioshin はじめてのスプライト・キット

Xcode 4 完全攻略

Xcode 4 完全攻略

  • iOS7から搭載された2Dゲーム開発のフレームワーク * ゲーム作ってる人はチェック
  • SKView, SKSene, SKNode, SKAction
  • SKSceneがゲームのコントロールをする。SKNodeがスプライトと思ってよい。
  • SKViewが実際の描画を行う。
  • SKSceneとSKNodeの関係はUIViewとUIWindowの関係と似たようなもの
  • シーン単位でゲーム画面を切り替えるイメージ
    • シーンをアニメーションありで切り替えるtransitionクラスもある
  • 座標系が違う!(Core Graphicsと同じ)左下原点
  • Xcode5から開発用のテンプレートが追加された => Sprite Kitの諸々のクラスが追加される
  • テンプレートを使うと、はじめにあるUIViewがSKViewに入れ替えられている
  • ノードの基準点はアンカーポイントでいじれる
  • Actionを作ってそれに対して、無限に動かすなどできる
  • byとto(相対と絶対)
  • Actionは複数を平行に実行、連続で実行できる
    • 複雑な動きも出来ます
  • 物理シミュレーションできる!
  • Scene1つが物理シミュレーションの世界となる
  • 質疑応答
    • cocos2d-xとの比較
      • OSネイティブであることはやっぱり大きい
        • ある程度Appleがサポートしてくれるであろう安心感
        • Objc-Cで書ける
      • マルチでやるならcocos2dかな
        • C++慣れているならこっち?

はるかまきりとUIKitDynamics

はるかまきり

はるかまきり

  • Yosuke Uno
  • 無料

  • UIKit Dynamics
    • iOS7から追加
    • 現実世界の動きをさせるFramework
    • ゲームはSpritekit
    • インタラクティブなUIが作れる
  • 構造
    • View -> UIDynamicBehavior -> UIDynamicAnimator
    • 物理演算しているわけではなく、それ風の動き
  • 簡単なデモアプリ(2つの箱が下に落ちてバウンスする)
  • そんなに使えるところがないらしい(Appleの人に聞きまくった結果)
  • 勉強するには?
    • WWDCのセッション見ましょう
    • UIKit Dynamicsのサンプルコードが結構ある

7bunnies 文鎮化した3GSに仕事を与えてみた

  • 3GSはなぜ使われなくなるのか
    • 新しいのが出るから
    • OSのアップデートもなくなった
  • 他に何か使い用がないか?
  • 古いiPhoneの使い道
    • 検証機
    • Jailbreak
    • 子供のおもちゃ
  • 第4の道 Web Cron
    • WebベースでCronサービスを!
  • 前提条件と仕様
    • iOS6で動く
    • バックグラウンド
    • Web Cron仕様に準拠
  • バックグラウンドで動かせる動作でWeb Cronで動かしちゃう
    • 無音mp3をループ再生、その間にcronを動かす
  • crontab参照     * 内部的にはパースしてsqite3にinsert, FMDB使用     * 分単位にCronタスクを分割
  • 実行時間とCronタスクの照合方法
    • NSDataComponentsを使い実行時間を取得して照合
  • アラーム等の割り込みからの復旧

t_motooka AustraliaでのiOS

  • 市場規模
    • 意外と人口少ない
  • ランキングの顔ぶれ
    • やっぱり日本とは違う
    • Ninja系はよく見る
    • 特定のベンダーが強いようには見えない
  • ことば
    • 米語と英語の混在
    • アクセントがきつい人もいる
    • iOS7でAustralian English追加
  • その他
  • 開発環境
    • けっこうつらい
  • MapKit新機能 iOS7
    • 日付変更線を超える
    • MKMapView
  • オーストラリアの名所 Singleton
    • 会場わかってる人、笑いを押さえきれない

ラストのSingletonに全部もっていかれた。


オーストラリア 〒2330 ニュー・サウス・ウェールズ シングルトン

ninjinkun GitHubでSDK開発 + iOS7対応Tips(少しだけ)

  • GitHubではてなブックマーク SDK開発
  • はてブSDK
    • 機能を組み込んでもらうためのSDK
    • ブクマコメの追加編集削除など
  • シードデベロッパー募集 => GitHubプライベートレポジトリにシードデベロッパーを追加
    • コラボレータは無限に追加できる
  • 8/30 一般公開 9/8 iOS7対応
  • SDKの実装
    • リクエスト用のHTTPクライアント
    • 書き込みUI全部コード
  • APIのクラスとUIのクラスは分離
  • 画像はresource bundleの下
  • 依存モジュール
    • AFNetworking
      • I/F変わって対応中
    • AFOAuth1Client
      • Oauthの仕様を満たすには足らない => Pull Requestしているがマージされてない
      • Twitterのみ通すOauthがあるので、きっちり仕様を満たしてないのが原因
    • SFHFKeychainUtils
  • テストフレームワーク
    • Kiwi
    • Nocilla
      • HTTP stub
    • Travis CI
  • OSS運営
    • Pocket SDKみたいにしたかった
    • SDKは相手のアプリの中で動く
      • 自分だったら変なものはいれたくない
      • ソースが見えている安心感
    • 開発者を巻き込んで品質を高めたい
    • 個人的にGitHub Enterpriseでなれていたのでやっていけそうと思った
  • 実際に開発が始まって
    • 結構活発なんじゃないだろうか?とのこと
  • マネジメント
    • 結構Pull requestの返信が大変
      • 「善意のコミット」
      • 修正がバッティングしたときどうするか
        • 同じようなコードが社内と社外から!
        • 今何やってるのかを見える化しておかないとだめ
      • いい感じの日本語に落とすのが大変(コミュニケーション!)
    • RubyMotionでバグが!
    • みんな生活時間がばらばら
    • インデントの設定はやっておこう
  • おわりに
    • 社外の人と仕事ができる数少ないチャンス
    • 4つのアプリで採用、さらに出る
    • もっと増やしたいので、採用したら連絡ください
  • 質疑応答
    • インデントの設定
      • xcodeのプロジェクトファイルに標準のインデントを設定できる

Cocoa勉強会関西第50回 メモ

データ

  • 2013/06/01 14:00〜18:30
  • 記念すべき第50回(実は0始まりなので第51回目)
  • 今回、内容が盛り沢山でめっちゃ面白かった。
    • CocoaでUnitTest、BDDは今後チュートリアルみたいなのがほしいな。


 3Dフレームワーク for Mac 意味検索 & SceneKit Wordnet 30分

シソーラス辞書検索

 資料は後ほど公開。

  • WordNet -> iOS!無料!日本語版!
  • 文字判定 -> n-gram形態素解析
  • n-gramなら網羅。いらないもの含む。
  • 形態素解析なら必要な物のみ。抜けはありうる。
  • 使うのに必要なもの
    • wnjpn.dbとかいろいろ

 確かOSXにMecab入ってなかったかなと思ってググるといくつか出てきた。


SceneKit

  • OSXのフレームワーク
  • 3Dの表示が簡単にできる
  • iOSにのる?(のって欲しいなぁ)

  • .deaファイル(COLLADA)

  • 文字が簡単に使える
    • ファイル作らなくてもできる


 アイコンメモを支えるWeb技術 30分

アイコンメモとは? * iPhoneのホーム画面に付箋紙を貼るアプリ

前提条件

  • そもそも審査に通るのか?
    • いろいろしがらみが……

実現の流れ

  • ネイティブ->Safari->Webアプリ
  • Webアプリ
    • Safariの中で動くもの
    • フルスクリーンで動くもの <- こっち!
  • フルスクリーンの仕方やアイコンの指定の仕方がある
    • 書き換えるには? -> サーバの画像を変更、別の街像ファイルを指定
    • サーバサイドの処理 <- 今回はしたくない
    • data URI Scheme
      • Webページに直接データを埋め込むためのURIスキーム
  • テキストを画像に変換するには?
    • HTML5 Canvas!
    • 文字も描画できる!
    • 書いた絵でData URI -> toDataURL()
  • メモの記憶
    • サーバならMySQLとかMongoDBとか
    • localStorage
    • アプリケーションキャッシュ
  • 技術的にはクリア。しかし審査は通るか? -> ネイティブっぽくしたい
  • フレームワーク的なもの -> bootstrapとか
    • jQuery Mobileを使う
      • ネイティブっぽくするために大変な思いをした
  • 軽くしたい
  • デバッグ


 BLEモジュール基板について 30分

  • LSD-BLE112
  • デモとして手旗を動かす。

個人的な感想として、iOS+BLEの発表が多くなってきたなという印象。 ボードを売り出す!4800円ぐらい。


 NJKWebViewProgressについて 20分

  • UIWebVIew Progress Interface -> プログレスAPIを持っていない -> 作ろう
  • GitHUbで300☆

中身

  • ロードされるリソースを数える
    • UIWebView Delegateをフック     * 全部取れるわけではない
  • あくまでそれっぽく見えれば良い
  • UIWebViewとViewControllerで通信したい
  • ViewController -> UIWebView
  • 逆は?
    • iframeを使う
  • プログレス値
    • メンタルモデルに合うように
    • webkitの実装を参考する
    • Sleipnirプログレスバーが面白い(一定の速度でバーが進んだあと、床屋のくるくる回るやつみたいエフェクトで見せる)
  • 組み込みやすさ
    • UIWebViewDelegateが必要 -> もう使ってる
    • プロキシにしよう!
      • 他の方が黒魔術版を作る
      • 個人的にはプロキシのほうがわかりやすい

cocoapodsいい!便利!

  • OSSを意識すると色々捗る


 Kiwi最高 30分

  • OCUnit(ビルトイン)
    • ⌘+U LOVE
    • 非同期とかだとうまくやらないとダメ(よきに計らってくれない)
  • GHUnit
    • Powerful
    • 非同期とか使える
  • Kiwi
    • BDD for iOS
    • Simple to setup and use
    • ⌘+U
    • Blocksを使う
      • 準備・後始末も細かくできる
      • 重要なのはshould
  • Nocilla
    • HTTP stubbing for iOS
    • なんかUnderscore.mを思い起こす書き方
  • テスト難しい

 紹介ではfor iOSとされていたけど、一応KiwiはOSXでもつかえる模様。


 Cocoa で CUI ツールを作る 20分

  • LLとかいろいろめんどくさい -> Cocoaでうまいことやればいいんじゃね?
  • JSONがみづらい
  • Pythonでやる -> 日本語読めない(Unicodeエンコーディングのせいだと思われる)
  • Objective-Cでやる
    • コマンドライン引数どうする? -> DDCli
    • jsonは -> SBJson
  • man pageを書く -> めんどくさいのでmarkdownで書いてPandocで変換
    • Pandocまじ便利です。
  • jqがあったよ……


 ワタシはSingletonがキライだ 45分

前提と問題

Singletonはstatic結合をまねく……Singletonは単体テストの敵

解決策

  • DI(依存性注入)     * 取りに行くから問題になる。必要なら与える!
  • DIコンテナ -> Springとか
  • オブジェクト生成は大仕事
    • 生成と仕様を分ける
  • Cocoa向けDIコンテナ結構ある
  • Typhoon Framework
  • AppleのサンプルにTyphoonを適用 -> AppDelegateに書かれていたコードを一掃
  • DIの気持ち悪さ
  • DIコンテナの誤解
    • コンテナへのアクセスが多発する? -> アクセスはごく一部
    • テストコードでコンテナを使う -> 別に使わなくていい
    • initialzerが長い -> 本当かも
  • Singletonはきらいだー!


次回の予定

 7月の終わりらへん。-> 8月3日。

懇親会

  • 第0回から今回までを振り返るスライド。
    • 懐かしい話題がいっぱい。
  • Singletonはありかなしかで、酒が進む。

AngularJSをいじってたのでjsdo.itにおいてみた

個人的にちまちまやってることがあって、それの勉強として書いてみた。
ここのところずーっと端末の一機能(カード情報読み取ったりとか、バーコード読んだりとか)だったりして、そもそもWebのフロントエンドを弄る仕事がほとんどなかったりしたせいで、むかーしやってたことをだいぶ忘れていたりしたので簡単なコードでもなかなか大変だったりしましたが、Web系の開発も面白いなぁというのがここまでの感想。

ドットインストールの入門とかがわかりやすくて、フォーム系とかはまあまあわかった感じではあるけど、もっと深く突っ込んだところはまだまだピンッと来ていないので、Androiderに贈るAngularJS概説 #AngularJS #JavaScript - Qiitaなどを読みつつ深堀りして行きたい。

GitHub創設者の話を聞きに行ったのでメモをとってみた



http://instagr.am/p/VMXzlhjMGy/

GitHub創設者が語る"立ち上げから利用者300万人までの軌跡" | PeaTiX


Github創業者の話がキャンパスプラザ京都で聞ける!ということを一昨日知り、その場ですぐさま予約しまして、本日聞きに行ってきました。
近くの郵便局によってから会場に行くと、19:10ぐらいに到着。すでに席が半分ほど埋まっており、自分が座った後も次から次に人が受付に並んでいて、ほぼ満席になっていました。注目度の高さがうかがえましたねぇ。

以下、Evernoteに書き取ったメモ。大体のエッセンスを書いていっただけなので、多少意味が違っているかもしれません。

Githubができるまで

 はじめはGitHub COO PJ Hyett氏による今に至るまでの流れ。いろんなプロジェクトに関わったり、Rubyコミュニティで発表なりしていくうちにGithubにたどり着いた……アウトプット大事よねというのが感想。なにより楽しそうにやってるってのがいいなぁ。

 Before Github
 いろんな言語を勉強 -> Rubyにぞっこん 
 Wayfaring : Google Mapsでいろいろできる
 CHOWHOUND : Ruby on railsで一からリライト

 RubyについてのBlog立ち上げ -> 人気になる
 CNETに嫌気 -> ruby on railsのコンサルを始める
 自由にやれると思った -> クライアントがボス
 試しに自由にサイトを作ってみる -> FamSpam -> お金にはならなかった

 Ruby meetups が増えてきた -> Fun!
 meetupsのあとでGithubのアイディアを生み出す -> 翌日にGithubのドメインを取得

 forkをネガティブな意味からポジティブに!(コラボレーションのエッセンスとして)

 初期はヴィジョンが小さかった
  gitの管理がめんどくさい -> そこを解消したい

 Engine Yard : Ruby on railsホスティングサービス -> 提携して良い効果(ホスティングは大変)

 beta版 少数の招待(メール通して)

 オフィス -> 2年ほどカフェ、レストランや自分の家でやってた。
 GithubでGithubを作る。Campfireが重要だった。

 ruby on railsがGithubにホスティングされる

 Scot -> ruby meetups, git meetupsで出会い、最初の社員になる。

 給料を払おう
 -> 毎月売上の目標設定を達成すればちょっとずつ上げていく。最終的にコンサルやっていたときと同じぐらいの給料になった。

 社員の殆どが社内では働いていない。
 オフィスにいることは必須にしていない。オフィスはみんなと交流する場。
 2010年に更に大きなオフィスに引っ越し。
 楽しいことを目的にオフィスをデザイン。仕事をすることが目的ではない。

Q&A

 みんながんがん英語で質問を投げるというなかなかすごい場に居合わせることができたなぁ。さっきの話にしてもQ&Aの内容を聞いていても思うのは、「自分たちが楽しいか、自分たちが必要なのか」がまずあってそこから掘り下げていく力がすごいなと。マネタイズなんか考えてねーよというある種の割り切り感も思考のシンプルさを物語っているなぁと思います。

 自分の好きなことをできるけど、管理出来る人がいないときはどうするのか。
 A: マネージャーがいない -> 好きなときに貢献できる
   たまにガイダンス必要な人がいるときはある。「一人で作業しない」

 Githubにホストされているプロジェクトの質の高さ -> スタンダードが高いから。
 Githubの社員が特別なわけではない。トップダウン型ではなく、みんなが好きな事ができるようにしている。

 なぜ最初からビジネスモデルを立ててやったのか、投資家から資金を募らなかったのか
 -> 以前やったサービスで無料ばらまいたらコストがえらいことになったので、
  はじめからビジネスモデルを定めた。
  投資家には口出されたくなかったのでアプローチしなかった

 Githubでのコミュニケーション
 -> githubで管理、メールやCampfireも使ってる。非同期でやってるよ。

 Githubのテストが早いけど、ほんと? なにか工夫している?
 -> ほんと。テストはたくさんやるので、プライオリティ高いのでリソースをかけてる。

 エンジニアとかパートナーシップはどこでみつける?
 -> ruby meetupsとか2年ぐらいかけて信頼を積み重ねた

 なんでrubyとかrailsを使ったのか。他の技術はどうなのか。
 -> 開発の経験が大きかった。rubyは読みやすい。

 開発者じゃない人にもGithubを使わせるような今後の展望があるか。
 ->それぞれにいいソリューションがある。githubはdiffしてmergeして、振り返れるコードに着目。

 新機能出すときのプロセスは?
 -> オープンソースみたいな感じで開発してて、勝手に新機能を追加。
  気に入ったらパブリックに出される、気に入らなかったら戻される。
  マネタイズの部分は見てない、開発者にとっていいか悪いかを考えている。

 会社つくるときに集まって起業しようという目的意識があったのか? 自然と集まって至ったのか?
 -> 一緒にしたいという気持ちはあったが、どちらかというと自然とそんな感じになった。

 給料とかどう決めてるの?
 -> しばらくみんな同じ給料な時期があったけど、今は前の会社の給料に+5000ドルして決めてる
  互いに評価したりとかしているわけではない。

 その人といて楽しいかどうかが重要! 
 いっしょにいたことがある人とやるのが、大切(前田さん)

 はじめの目的(gitホスティングを簡単にする)から変わってきたのは何がきっかけ?
 -> 自分たちで使ってきてソーシャルコーディングのほうに変わってきた。
  コラボレーションすることがいいよねというのがわかってきた。

 Githubの成功って他のOpensourceにも適応できそうだけど、どう?
 -> ユーザにとって一番いいものにフォーカスしていかないと、成功しないのじゃないか

 Github上で政治的なコラボレーションはどうか?
 -> 実際に例はあるが、githubはプログラムに適応してる。他の場所で同じようなコラボレーションをするところが出てくるのではないか。

 売上の企業と個人の割合
 -> 7:3ぐらい

 Github最大のピンチとそれを乗り越えた方法は?
 -> 特に大きなのはなかったけど、なにか危なそうなところとかはその後できっちり対策たててる。
  情報発信大事! 

 Githubのコラボレーションの側面ははじめから考えがあったのか、それともユーザの中で醸成されていったのか。
 -> 哲学があったわけでもユーザがいたためでもなく、自分たちに必要なものを追加していったらそうなった。

第42回 Cocoa勉強会関西に参加してきた

第42回 Cocoa勉強会関西 : ATND


 ここ最近、写真とけいおん!のブログになっていますが、本当は技術的なことも書いているんですよ?と言いたくなったわけではありませんが、何はともかくCocoa勉強会関西に初参加ですよ。
 

 何気にProject Builder(からXcodeへの移行時期)のころに萩原本とかヒレガス本を使ってそこそこCocoaを触ってたわけですが、就職してからというものC#ばっかりですっかりその頃の学習結果が消え失せた感じになっちゃったので、初心者にかえって聴講してきました。全体を通して見た感じ、やはりiOS寄りの内容が大部分を占めていてOSX系のお話はCotEditor開発・メンテのusami-k氏のみ。
 とはいえ、id:ninjinkun氏の「エラー処理をどう捉えるか」はOS関係なくアプリケーションを開発する人間にとって考えなければいけないお話であるし、kaniza氏のCore DataにまつわるあれこれはOSXアプリケーションにも十分役に立つものだと思いました。MacBook Airの電源アダプタがお亡くなりになるというトラブルに見舞われつつも、非常に為になる勉強会でした。
 以下、さくっと内容。
 

iPod Library Access とサウンド処理

 t_motchy氏。iPod Libraryにアクセスするためのあれやこれや。
 詳しい内容は下のスライドとgithubにあるソースを参照。


iPodLibraryAccessとサウンド処理
motooka/CocoaTests · GitHub

Core Data + UITableView の Tips

 kaniza氏。メールアプリのフラグみたいなUIを実装するときに使えるTips。
 もっと詳しく言うとなにかフラグをつけた項目がViewにあったとき、そのフラグを消すとすぐにViewの表示から消えてしまうので何とかしたい、というところを何とかしましょうという話。キーワードとしてはNSFetchedResultController、NSFetchRequestなどなど。
 こちらもgithubにサンプルがあるので、試してみるべし。
 
 
kaniza/DoubleFetch · GitHub

iOS5の小ネタ集

 itok氏。
 iOS5で色々追加された便利なものを紹介。個人的にCLGocoderが面白そう。
 VCARD読み書きについては、以下にサンプルあり。
 
itok/VCardImporter · GitHub
Cocoa勉強会関西 #42 iOS5の小ネタ集

OS X Lion Versions対応

 usami-k氏。
 CotEditorの開発・メンテを引き継がれたかたで、CotEditorには毎度毎度お世話になっております。
 Lionから登場したVersionsをアプリケーションにどう対応するかという発表。以下の条件ならほとんどのアプリケーションは対応できるようです。
 

  1. Document based applicationであること
  2. NSDocumentクラスのフラグを立てる


 2つ目は細かいメモがとれてなかったので、再度調べてみたらautosavesInPlaceメソッドをオーバーライドすればいいのかな?
 

+ (BOOL)autosavesInPlace{
 return YES;
}
Nacho4d - programming notes


 うまくいかない場合もあって、CotEditorはそれにひっかかってるとのこと。しかし、こんなに簡単にできるのね。

iPhoneアプリの通信エラー処理

 ninjinkun氏。iPhoneアプリが通信エラーを起こした場合、どんな実装・見せ方をすればユーザにストレスを与えないか?というお話。内容的にはこちらの記事に相当。


iPhoneアプリの通信エラー処理を考える - iOS Advent Calendar 2011 - ninjinkun's diary


 発表後にはNSErrorとNSExceptionをどう使い分けるかという話もあったり。結論のメモがきちんと書かれてないので、どう着地したか思い出せない……

そろそろお前もiOSプログラミングを……

 自分がはじめにCocoaに触れた頃からすると、iOSのおかげで情報がたくさん表に出てきた印象が勉強会から感じましたねぇ。非常に面白かった、と同時にやっぱり自分も発表できるくらいのネタが持てるぐらいにはなりたいなと。ええ、そのうち……


 最後に勉強会で話題に出た本を。
 
 

iOSプログラミング 第2版

iOSプログラミング 第2版

  • 作者: アーロン・ヒレガス,ジョー・コンウェイ,Aaron Hillegass,Joe Conway,木南英夫,上堀幸代,内橋真吾
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2011/12/21
  • メディア: 単行本(ソフトカバー)
  • 購入: 11人 クリック: 158回
  • この商品を含むブログ (10件) を見る

About Face 3 インタラクションデザインの極意

About Face 3 インタラクションデザインの極意