火曜日, 12月 29, 2015

Link list 2015-12

Ambient Website

http://ambient.website/

figma

https://www.figma.com/
Webベースで共同作業可能なデザインツール。スクリーンメディアのデザインのあり方などが書かれた記事も参考になる。iOSのAuto Layoutと近い制約ベースのレイアウトもできるっぽい。

買えるものを作ることの意味

http://makezine.jp/blog/2015/12/whats-the-point-of-making-something-you-could-buy.html

「ない」状態の見せ方

http://emptystat.es/
忘れがちだけど本当に大事。

CSSで使えるカーソル表現

http://css-cursor.techstream.org/

30 days, 30 demos

http://mattdesl.svbtle.com/codevember

芸術家のスタイルを模倣するAI

http://www.anishathalye.com/2015/12/19/an-ai-that-can-mimic-any-artist/

Tumblrは新しいインターネットのフロントページ

https://www.washingtonpost.com/news/the-intersect/wp/2015/03/11/move-over-reddit-tumblr-is-the-new-front-page-of-the-internet/
3月に書かれた記事をアップデート。今やTumblrはBuzzfeedのソース1位となり、バイラルインターネット界の新しいグラウンドゼロとなったのかも知れないとのこと。かつてはTumblrの「クールなキッズ」をfollowして面白い記事を見つけていたが、Exploreでその必要はなくなった。ちゃんと読解できてるか怪しいがTumblrにおけるトレンドはアンダーグラウンドの濃さを保ったまま表に出てきているということだろうか。Tumblrミームの司書の話も面白い。地元の図書館のようにインターネットのあるコミュニティで起こったことをアーカイブしていく。Tumblrは考えてることが違う。

2015年は人類にとって最高の年である11の理由

https://medium.com/future-crunch/11-reasons-why-2015-was-a-great-year-for-humanity-70db584db748#.180ff0pcy

  1. 子供達の10人中9人が読み書きできる世界になった。
  2. 1日1.9ドル以下で暮らす人が10%以下に減った。ここ200年で一番低いとのこと。
  3. インターネット接続人数が史上最高になった。15年前は4億人だったのが、今年は8倍の32億人に。そのうち20億人が発展途上国から。
  4. モバイルマネーの普及で金融機関にアクセス可能になった人数が激増。
  5. AIDSによる死がここ15年で最低になった。2030年には流行が終わる見通し。
  6. マラリアによる死が史上最低になった。
  7. ポリオがもう少しで根絶。
  8. 飢餓が史上最低になった。
  9. 綺麗な水を得られる人が増えた。
  10. 乳幼児死亡率は下がり続けている。
  11. 気候変動に抗う転換点になった。2015年は最高気温を記録し、産業革命以後1度ずつ上昇している。温暖化否定説はますます馬鹿らしくなった。

2015: THE YEAR IN PRODUCT DESIGN BY ATOMIC.IO

http://2015.designweekly.atomic.io/

The Best Design Things I Read in 2015

https://medium.com/@tedgoas/the-best-design-things-i-read-in-2015-95c54edb11dc#.zch9shaf8

月曜日, 12月 28, 2015

2015年を振り返る

仕事

引っ越したボストークに席を置かせてもらっている。クライアントの会社で作業することも増えてきていて、少しずつワークがシフトしている。

相変わらず電子書籍関連の仕事を請けつつ、地方創生的な案件も企画と開発で関わっている。同世代のfacebookを見ていると規模やクライアントの違いはあれど、どこかしらの地方を創生しているので、我々世代のミッションなのかもしれない。それぞれ別の分野で仕事をしていた友人と同じイベントで偶然再会したりして、いい感じに人材が溶けてきている。CollaVolイノベーション東北などオンラインで可能なボランティアやプロボノ活動から地域に関わり、仕事や知人を得るという選択肢ができ始めている。いきなり移住とか、骨を埋める覚悟を決める前に、グラデーションを作っていく仕組みが必要。

初めて非常勤講師として連続の授業を受け持った。プログラミングの経験があまりない学生が多かったが、課題に対して真摯に取り組み、形にできていた。少し手応えを感じたのだけれども来年度は授業の枠自体がなくなってしまった。

今年は仕事量が多かった。それに応じて収入も上がったのだけど、持続可能な感じはしない。量を減らし、質を高め、単価も高めたい。

個人活動

ハッカソンに参加してみた。結果はうまくいかなかったけど、問題設定は良かったと思う。普段の仕事では実現可能性がある程度見えている枠の中で思考しているので、理想ありきで調査し、手を動かすことの楽しさを思い出した。

Typetalks分科会に参加し、欧文組版の基礎や考え方を学んだ。デザインのテクニカルな話というよりは、歴史や文化に関わるコンテクストの話が多かった。石碑や写本の時代からすると、誰でも情報にアクセスし、意見が言える現代のテクノロジーは本当に革命的。

NNNNYで展示をした。個人的に失敗が多く力を出し切れなかったので反省してる。

Dropophoneを作り直した。作り直す話をしてから1年半、ずっと心に引っかかってたので本当に良かった。TwitterやApp Storeでの反応を見てると、iPhoneの世代が変わっても残しておいてくれてたり、アップデート前の解像度に懐かしさを感じてくれてたりして、デジタルおもちゃのあり方について考えさせられた。まさか5年振りに更新の通知が来るとは思わなかっただろう。見てない間に機能が充実してたiTunes Connectによれば全期間のダウンロード数は約11万。Lullatoneの音のエヴァーグリーンさよ。

生活

暮らし向きは確実に良くなっているのだけど、妻が少しの間入院したことで、それが非常に危ういバランスの上で成り立っていたことが分かった。看病してるからといって仕事が少なくなるわけでも、その分の補助金が出るわけでもない。むしろ時間は圧迫され、医療費もかかってくる。予防が大事であることは言うまでもないが、防ぎようのないこともある。今まで自分が仕事や勉強に打ち込めたのは、意識するしないに関わらず周りがそのような環境を作ってくれていたからであり、恵まれていたとしか言いようがない。

Apple Music、Netflixでサブスクリプション元年。事前にレビューを読んで色々と検討するよりも、とりあえず再生してみた方が早くなった。お金を使うことから時間を使うことに意識がシフトする。

インターネット

相変わらず地獄が続いているが、希望は捨てていない。

ただ、仕事でもプライベートでもいくつかSNS公開禁止の場に居合わせて、めちゃくちゃいい思いをした。インターネット経由での私刑が増えた結果、そういう世界の情報は外部に出なくなり、アクセスも難しくなる。

感情の政治学
行動経済学と同様、政治においても人間が合理的な選択をするとは限らない。これを読んで少し政治に対して新たな視点を持つことができた。
イスラーム国の衝撃
池内先生の情報発信は非常に心の支えになった。宗教は非科学的で不合理なもの、というイメージがあったのだが、律法的な側面に着目すると、コミュニティの統制を保つ上で非常に合理的。
かくかくしかじか
美術なり何なり作ることを志した人なら誰でも共感できると思う。ただ「描く」という単純なことを皆いつの間にかやめてしまう。愚直に続ける人の尊さを分かっていながらその人にも美術にも踏み込めない自分。

音楽

Mixを聴くようになって個別の楽曲に執着がなくなった2005年頃からそういう状態ではあったが、Apple Musicによって特定の作品を繰り返し聴くことがさらになくなって(乃木坂46以外)、毎日何かしらおすすめされたものを受動的に聴いていた。

ミュージシャンが集まる場で何となくDJ的なことをしてもらってると高確率でいい曲に出会えるのでああいうのもっと体験したい。自分のディグの深度が浅くなってるのは日々感じる。

機械がレコメンドしても人間は聴かなくて、やはりピアプレッシャーというか、同じコミュニティの共通言語みたいなものにならないといけない気がする。最適なものが提示されれば良いというのでもなく、いやあれクソでしょみたいな話がしたいのではないか。

シェパニーズ(カリフォルニア州バークレー)
アメリカ出張で同行した人がシェフと知り合いで、今年で辞めてしまうそうなので行くことに。ディナーで3万円くらいなんだけど、その価値はあった。
Sweedeedee(オレゴン州ポートランド)
住宅街に突然あるカフェ。テーブルが空くのを待っている間は外でコーヒーが飲める。自然と隣り合った人と会話が始まる感じが良かった。BEAMSでポップアップストアを開いていたミシシッピレコードが隣にある。
たべごと屋 のらぼう(西荻窪)
野菜がとても美味しい。三鷹で採れたものもある。驚きのある料理。
ディラン(御茶ノ水)
職人ぽい店主が作るカレー。南インド料理、北インド料理の両方を兼ね備えているらしい。

火曜日, 12月 15, 2015

D3.jsによるデータビジュアライゼーション 0

11月から12月にかけて、長岡造形大学でD3.jsを使用したデータビジュアライゼーションの授業を担当した(全4回)ので、その際に調べたことなどをまとめる。授業の中で触れられなかった内容など、補足的な資料と個人的な興味。

データビジュアライゼーションとは

その名の通りデータを視覚的に認識できるようにすること。

視覚化することの利点

数字だけでは把握しにくかった事実を見つけることができるというのもあるが、デザイナー的な視点からするとデータをグラフィックの要素に活かせるというのも魅力的。

インフォグラフィックスとの違い

インフォグラフィックスの一部と考えられるが、より扱うデータ量が多く、人間の手による編集を加えない。

データビジュアライゼーションのための7つのステージ

Ben Fry著「Visualizing Data」によると、データビジュアライゼーションのための7つの手順が示されている。

  1. Acquire 入手する
  2. Parse 分析する
  3. Filter 除去する
  4. Mining 発掘する
  5. Represent 表現する
  6. Refine 洗練する
  7. Interact 対話する

発見のためには、仮説を立てるのも大事だが、とりあえずやってみるというのも大事。

データの集め方

公開データを利用する
インターネット上には自由に使えるデータが存在している。D3.jsではCSVやTSV、JSONなどをパースできる。公開データをよく見てみると、ファイルの形式こそCSVだがExcelをそのままExportしたのか余計なデータが入っていたりして使えない場合がある。

自分で集める
ないデータは集めなければならない。マナーや法律は守る。スプレッドシートやOpenDataKitを活用する。

D3.jsとは

Data-Driven Documentの略。

データをDOM上で表現できるツール。JavaScriptだけでDOMの操作をしようとすると煩雑になるものを、D3が楽にしてくれる。 自由度が高い分、逆に何をすればいいのか分かりにくいところもある。単純なチャート化であれば表計算ソフトなどで十分。 データから何か意味のあるパターンを見つけ出すための視覚化(exploratory visualizations)と、既に分かっていることを解説するための視覚化(explanatory visualization)があって、D3は後者に向いている。

D3はSVGが扱いやすいので、作ったデータをIllustratorに持っていくことも簡単。

関数型プログラミングの特徴を活かした設計になっている。色々触ってみて少し感覚は掴めたかも。

参考

原書はほとんどSafariで読めて、本当に助かった。特定の領域を片っ端から調べるのにこんなにいいサービスはない。末長く続いて欲しい。英語にアクセスできるかどうかで情報の量も質も全然変わってくる。

2017年5月現在ではVersion 4に対応した本は少ないが、基礎的な考え方は同じ。

月曜日, 11月 30, 2015

Link list 2015-11

First Edition

https://design.google.com/articles/first-edition/
Googleのデザイン&テクノロジーカンファレンス。MonikerとかPaul Soulellisが参加してる。

スタートアップでのデザイナーの役割

https://medium.com/swlh/what-is-the-role-of-design-in-a-start-up-529fc5cba8cf
すんごく共感できる。

Jan Vantommeさんのスケッチ

http://generative.systems/

服の模様をジェネレート

https://paom.com/profiles/processing/#/profile-apps
Processing Foundationがやってくれたね。1から8のキーを押して色を買えつつ、いいタイミングでPを押すとデザイン決定とか。p5.js使ってる。

https://preview.unmade.com/
前に注文しようとしたけど日本からは買えなかったKNYTTANと同じだなと思ったら名前が変わったっぽい(KNYTTANは技術(仕組み)の名前でそれを使って作られたブランドがUNMADEてこと?)。前出のMonikerも関わってる模様。相変わらず日本からは買えない。×の片方が透けてるのお洒落。

色を音に変換するアプリ

http://bugg.gg/
インタラクションデザインが良い。同じ会社(Linked by Air)が作ったShrubも良い。

メッセージングアプリでコンピュータサイエンスおたくがデザイン偏重のWebに復讐する

http://jp.techcrunch.com/2015/11/20/20151119messaging-apps-and-revenge-of-the-computer-science-nerd/

Keynoteでソースコードにハイライトする方法

https://gist.github.com/jimbojsb/1630790
もっと早くに知っていれば。。

Wikipedia からスクレイピングして… とか言ってる人におすすめしたい,DBPedia からの情報抽出

http://qiita.com/pika_shi/items/eb56fc205e2d670062ae

Zachary Liebermanの学生へのレッスン

https://medium.com/@zachlieberman/lessons-for-students-cf1acf200ee#.nlx2trjae

LINE WOW終了

http://wow.line.me/

似ている画像をつなげる

http://dinakelberman.tumblr.com/

A Song A Dayのキュレーターが感謝する27のアルバム

https://medium.com/a-song-a-day/27-albums-to-be-thankful-for-from-the-a-song-a-day-community-cf776391904c#.2foykcs46

プロフェッショナル・ルール

http://tahi.hatenablog.com/entry/2015/11/25/010157

なんでも自動化するエンジニアが残していったライフハック・スクリプト

http://developer.cybozu.co.jp/akky/2015/11/engineer-automated-his-life-things/

火曜日, 11月 10, 2015

Link list 2015-10

色々なデバイスやセンサを組み合わせることで幸せになれたのか発表してきた #おうちハック

http://tips.hecomi.com/entry/2015/10/10/230000
自動で作動するのではなく提案型にする。

デザインをめぐる夜話

http://www.iamas.ac.jp/iamasbooks/introduction/concerning-design-today/
入江先生の公開講義まとめ。

Facebook見学記

https://www.facebook.com/notes/hayashi-yosuke/10153057438700563
アメリカ出張の際にFacebook本社を見学させてもらった。

人工知能でFacebookの写真を解説

http://www.fastcompany.com/3052194/elasticity/how-facebook-is-using-ai-to-help-bring-photos-to-life-for-the-blind
アクセシビリティに対しても本気。

Googleがベネチアビエンナーレをオンライン化

https://www.google.com/culturalinstitute/u/0/project/la-biennale-di-venezia
GoogleもGoogleのやり方で美術に取り組んでいる。ちなみにこのCULTURAL INSTITUTEは貧しい地域で育ったエンジニアが、全ての人に美術を開放してあげたいとの思いから始まったらしい。

コンピュータ・アートの創生 CTGの軌跡と思想 1966-1969

http://www.nttpub.co.jp/search/books/detail/100002367
「オリジナルプログラムの失われたCTG作品を今日のプログラミング言語で再現」楽しみ。

Kahoot!

https://getkahoot.com/
カンファレンスの合間に使われてたクイズゲーム。Websocket使ってて、かなり盛り上がった。インタラクションデザインが素晴らしい。

階級闘争としてのシェアリング(またはオンデマンド)エコノミー

http://chikawatanabe.com/2015/09/22/sharing_economy_labor_issues/
アメリカ出張中にはUberを利用した。美術大学に通う子持ちの女性と昼間はエンジニアとして働いている男性で、専業ではなかった。

ハイハットの作り方

http://joesul.li/van/synthesizing-hi-hats/

デジタルが分からないレガシー代理店人材が絶滅危惧種なら、ネット領域しか知らない(その外側の世界に何があるかも知らない)人材はもっと危機的

http://g-yokai.com/2015/10/post-360.php
これは割と実感としてあって、以前は自分のネットの感覚と世の中が合ってた気がしてたんだけど、それが大分なくなった。単に老害化したのもあると思うけど、ネット人口の構成比率が変わったんだと思う。

土曜日, 10月 03, 2015

Link list 2015-09

Kippt閉鎖

Deliciousから移行して愛用してたKipptが閉鎖。Pocketに移行しました。 http://kippt.com/

Oyster閉鎖

日本では使えなかった電子書籍のサブスクリプションサービス。デザインが綺麗でいいなと思ってたんだけど。http://recode.net/2015/09/21/oyster-books-shuts-down-team-heads-to-google/

MOMAコレクションのデータセット

https://github.com/MuseumofModernArt/collection

Patternity | Archive

http://patternity.org/archive/

robinhouston’s blocks

http://bl.ocks.org/robinhouston

Pt Point, Form, and Space — an experiment

https://medium.com/@williamngan/pt-93382bf5943e
http://williamngan.github.io/pt/index.html

MUTANT SOUNDがDublabで復活

http://mutant-sounds.blogspot.jp/2015/09/mutant-sounds-is-reborn-as-dublabs.html

Art + Music + Technology

Miller Pucketteとか出てくるPodcast。IAMASの先輩ジャンも。http://artmusictech.libsyn.com/

Axoloti

ソフトウェア上でパッチを組んで、基盤に書き込める。http://www.axoloti.com/

Warp Films

安定のStudio Remote仕事。http://warpfilms.com/

Audio Visual作品まとめ

http://s-v-m.tumblr.com/svm-index

仕事

伊勢丹の買えるミュージックビデオの制作を手伝いました。やり残したことはあるけど制約の中でベストは尽くした。プレス向けイベントの乃木坂46縛り選曲(伊藤さん桜井さん参加曲を中心に)とか。
https://www.youtube.com/watch?v=ANmO8XdStYA
https://www.youtube.com/watch?v=Kt4hsdqzBlk

火曜日, 9月 01, 2015

Link list 2015-08

Processing.jsとWebpd

http://ma101jl.tumblr.com/post/52527605109/simple-processingjs-webpd-tutorial

UI Movement

http://uimovement.com/

The Art of PNG Glitch

http://ucnv.github.io/pnglitch/

Sennep seeds

http://seeds.sennep.com/

フォントの作り方

https://medium.com/@typographias/learning-to-make-a-font-the-hard-way-5c5c7045e92f

サイゼリヤ100%☆活用術 前編

http://inadashunsuke.blog.fc2.com/blog-entry-38.html
規格化されたメニューから新しい楽しみを生んでるところが面白い。APIを駆使したマッシュアップ的な。

日曜日, 8月 02, 2015

Link list 2015-07

なぜモバイル技術が世界のノマド民に重要なのか

http://magazine.good.is/articles/nomadic-technology-herding-urbanization-mongolia
モバイルでの法律相談やデジタルマネーなど、遊牧生活の質を上げ、実行可能にする技術が整いつつある。友人が仕事でケニアに行くそうなので、現地の様子を教えてもらいたい。

思想としてのインターネットとネット原住民のたそがれ

http://wirelesswire.jp/2015/07/44145/

【高城剛氏トークライブ】旅は、人を幸せにするのか?イベント書き起こし

http://miraie-future.net/feature/tsuyoshi-takashiro/
ブルックリンの話が面白い。クロアチアは本当に最高(海行ってないけど)。大移動の時代はエネルギー資源がどうなるかによると思う。

On Wax

https://onwax.co/
HipHopに特化したProduct Hunt的な音楽サイト。Apple Musicの銀河系からどうやって出るかというのは日々考えるようになった。

BLTをマスターする! その1 - 食パンで作る基本のサンドイッチ講座

http://panjyoshi.jp/sandwich/lesson/lesson01.html
BLTの挟む順番はBTLだった。

Oh-My-ZshとZでコマンドラインを使い倒す

http://www.smashingmagazine.com/2015/07/become-command-line-power-user-oh-my-zsh-z/
Oh-My-Zshはずっと使ってる。Zはこの記事を読んで入れたのだけど便利。cdを記録して重み付けし、フォルダ名からパスを一発で呼び出してくれる。

フヅクエ

http://www.fuzkue.com/
行ってみたいお店。記事が面白い。

出演情報

https://www.youtube.com/watch?v=AJK-BWOXwW0
池田晶紀さん監督作。撮る準備してると思ったらもう撮られてた。流石。

https://www.youtube.com/watch?v=iI8KrpkkWo4
面白いアプリ(というかサービス)になったと思います。とはいえ実際に使えるかどうかはこれから次第なので、運用方法や開発体制含めて考えていきたい。

水曜日, 7月 01, 2015

Link list 2015-06

赤塚不二夫とトンデモない仲間達!!

https://www.youtube.com/watch?v=apTgGZ6JmQ8
ほんとにすごい。ちばてつや先生が怪我で入院して原稿落ちそうになった時に、トキワ荘のメンバーが引き継いで仕上げたんだけど、周りの反対を押し切って「やる」と決めたのが赤塚不二夫らしい。

Nadège Abadie Les Passagers

http://nadegeabadie.fr/wp-content/uploads/2014/06/les_passagers_2.jpg
実家の車がTOYOTAで、後部座席に揺られて眠るあの安心感と郷愁が込み上げてきた。

まこみな

http://mixch.tv/u/44841
MixChannelのカリスマ女子高生とのこと。ミクチャのある高校時代。カップル動画に落ち込む自分を想像する。avexが目敏くキャッチしてて、ちゃっかりAWAの宣伝もさせて(?)て、偉いなと思った。

Superhypercube for Project Morpheus brings the puzzle game into virtual reality

http://boingboing.net/2015/06/18/superhypercube-morpheus.html
美術の文脈でゲームを作るKOKOROMI CollectiveがProject Morpheus向けに作品を出すみたい。2016年はfunomenaの新作Wattamも出る。

remote year

http://www.remoteyear.com/
リモートワークしながら旅ができる。途中で仕事なくなった場合でもコンサルティングしてくれるっぽい。

URL is the new MP3

http://blog.cubic.fm/url-is-the-new-mp3/
直近ではHTML5 Experts.jpでもそういうことが言われてるし、細金くんもそういう話してる。藤幡さんはもっと前から言ってるんだけど。

KOLLECT.FMてのもあって、これもいい感じ。サブスクリプション型の方がメジャーにはなりそうだけれども。

Algorithmic Music Generation with Recurrent Neural Networks

https://www.youtube.com/watch?v=0VTI1BBLydE
持ってる音楽のコレクションから抽出されてできた音楽

p5/D3 Cookbook

http://sciutoalex.github.io/p5-D3-cookbook/

書評:ハリー・G・フランクファート『ウンコな議論』、山形浩生訳・解説、筑摩書房

http://www2.ipcku.kansai-u.ac.jp/~tsina/shohyo060317.htm

集団的自衛権と集団安全保障

http://blog.livedoor.jp/hosoyayuichi/archives/1906036.html

マクドナルドの失敗が告げる「戦後モデル」の終わり(前篇)

http://wedge.ismedia.jp/articles/-/5020

月曜日, 6月 29, 2015

iOS開発再入門 4 pd-for-iosをSwiftで使う

AudioKitやめる

AudioKit、忙しさにかまけているうちに2.1までバージョンが進み、軽い気持ちでアップデートしたらAPIが変わっていて、最新版に合わせて書き直したんだけど音が変に割れてしまうようになったので、使うのをやめた。

Pure Data for iOS

pd-for-iosはご存知Pure DataをiOSで使えるようにしたもので、Pure Dataの資産がそのままiOSで活かせるめちゃめちゃGame changingなライブラリ。デスクトップで使えるPd-extendedとは違うので、gateがないとか諸々注意する点はあるけれども、試した範囲ではパフォーマンスも問題なく、非常に便利。音の生成は全部Pure Dataに任せてしまって、XcodeではUIの部分だけ書けばいい。

  1. githubからcloneなりダウンロードなりで入手。
  2. Xcodeプロジェクトを作成(言語はSwift)し、プロジェクトファイルにFinderからlibpd.xcodeprojをドラッグ&ドロップ。
  3. プロジェクトファイルを選択し「TARGETS」の「Build Settings」にある「Search Paths」の「User Header Search Paths」にlibpdまでのパスを追加(検索窓で「user header」と入力すると早い)。$(SRCROOT)がプロジェクトファイルがあるフォルダを表す変数なので、そこから相対パスで指定するといい。ドロップダウンは「recursive」にする。
  4. 「Build Phases」にある「Link Binary With Libraries」の+ボタンを押して「libpd-ios.a」を追加(赤いままだが問題ないらしい)。

pd-for-iosはObjective-Cで書かれているので、Swiftで使うにはブリッジが必要。(プロジェクト名)-Bridging-Header.hというファイルを作成し、

#import "PdAudioController.h"
#import "PdDispatcher.h"
と書く。

「TARGETS」の「Build Settings」に「Objective-C Bridging Header」という項目があるので、ブリッジングヘッダファイルのパスを追記する。これ忘れがち。

正しく設定するとオブジェクト名やメソッド名がSwiftに変換された形で補完候補に出てくるようになる。enumがそのままだと受け取れないみたいだけど、いったん放置。

クラス変数として

var audioController: PdAudioController!
を宣言し、

AppDelegate.swiftの最初に呼ばれるメソッド内でサンプリングレートなどを設定。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.audioController = PdAudioController()
    self.audioController.configureAmbient(withSampleRate: 44100, numberChannels: 2, mixingEnabled: true)
    
    return true
}

アプリがアクティブでなくなった場合と、

func applicationWillResignActive(application: UIApplication) {
    self.audioController.isActive = false
}
アクティブになった場合の状態を切り替える。
func applicationDidBecomeActive(application: UIApplication) {
    self.audioController.isActive = true
}

ViewController.swiftでは、viewDidLoadメソッド内などで

    let dispatcher = PdDispatcher()
    PdBase.setDelegate(dispatcher)
    PdBase.openFile("dropophone.pd", path: NSBundle.mainBundle().resourcePath)
    PdBase.sendBangToReceiver("start")
とすれば、pd側のstartという名前のreceiveオブジェクトでBangを受け取れる。

お互いのやり取りはここを参考にする。

「readsf~」などでサウンドファイルを読み込む場合は、Xcodeでのリソースパスに準じる。wavじゃないと駄目だったり、afconvertで作ったwavだとヘッダが不正とか言われて再生できなかったのでiTunesで作り直したりして、情弱な感じのはまり方をした。

Dropophoneの音を鳴らす仕組み自体はpdで簡単に実装できた。あとはレイアウトとアニメーションなんだけど、これがまた曲者。

参考

Making Musical Appsという本を読んだ。Safari Books Onlineにもある。

YouTubeでLearning libPD for iOSというチュートリアルがあって、親切。インストールの手順など多少違うので後で確認する。

土曜日, 5月 30, 2015

Link list 2015-05

絵文字のエンジニアリング

http://instagram-engineering.tumblr.com/post/117889701472/emojineering-part-1-machine-learning-for-emoji
絵文字の意味を機械学習で解析。

mDrawBot Kit - Makeblock

http://www.makeblock.cc/mdrawbot-kit/
10年前にメディアアートだったものが全部入りになってる。

ニューヨークで考え中

http://akinokondoh.com/webcomics/
単行本面白かった。線が本当に綺麗で絵を読む快楽がある。コマ割りが海外文化と日本文化が絶妙に混ざってる感じがする。

Tobias Schalken

http://www.tobiasschalken.com/
『ニューヨークで考え中』で思い出した人。この人も美術家で漫画を描いている。学生時代にEilandを読んで衝撃を受けたんだけど、タイトルとか思い出せなくてIAMASの図書館に問い合わせて教えてもらったので忘れないように。

わが星

http://wagahoshi.com/
ようやくみられたので安心してDVDみれる。構造的な作りになっていて、「繋がった!」という瞬間にカタルシスがある。単語を言ってるだけなのに泣きそうになったりする。

岩井秀人×快快(FAIFAI)「再生」 感想とかもろもろ!

http://togetter.com/li/825158
すごく良かった。この大変さを想像すると結構ずっしりくるものがある。使用楽曲のリストも良い。ど才能の集まり。

ÖHLIN/D

http://www.ohlin-d.com/
お洒落で遊び心がありつつ機能面も細かく作り込まれていて良い。商品詳細でNEXTをサジェストする方法とか、決済画面とか。

cero / Obscure Ride

http://www.kakubarhythm.com/special/obscureride/

社会と趣味

http://cocolog-nifty.hatenablog.com/entry/2015/05/10/200000

「賢い有権者」だけで政治はよくなるのか?

http://www.huffingtonpost.jp/synodos/post_9516_b_7457804.html

金曜日, 5月 01, 2015

Link list 2015-04

桉田餃子

http://andagyoza.tumblr.com/
割と近くに引っ越したのでようやく行けた。水餃子定食。スパイスが利いてて豚そぼろ飯、スープも美味しく、BGMなど雰囲気も最高。

Aerial Bold

http://letterhunt.aerial-bold.com/
機械学習で航空写真からアルファベットを検出するプロジェクト。「教師あり学習」なので、まず人間がデータを集める必要があり、クラウドソースしている。

Why I Don’t Worry About a Super AI

http://kk.org/thetechnium/2015/04/why-i-dont-worry-about-a-super-ai/
和訳:私はスーパー人工知能を不安に思わない
AIは指数関数的に賢くならず、やばそうなら止めるので、いきなり人類を超える知能ができて暴走し、人類が滅亡するシナリオは考えにくいとのこと。

Elisa van Joolen

http://www.11x17.nl/
今月のお洒落大賞。

The Making of Alto's Adventure

http://www.harrynesbitt.com/blog/the-making-of-altos-adventure/
シンプルで美しい今一番好きなゲームの開発話。Unityで作ってるらしい。風の旅人やProcessingのサンプル、Windosillを参考にしてるようなので、好きなものが近そう。

サイバネティック・セレンディピティ~システムの時代と芸術の未来

https://www.academia.edu/11788060/
森岡先生のテキスト。10年位前に特別講義を受けたことがある。その時既にメディアアートには飽きていたようだったが、リリースされたばかりのジャンのcv.jitを知ってて「あれはよくできてますね」と言うくらいには感度が高かった。facebookも面白いのでfollowしてる。
この展覧会、アーカイブが残っていて、音源もダウンロードできる。http://cyberneticserendipity.net/
Yuri Pattisonというアーティストがまとめてるみたいだけど、この人の活動も興味深い。

ドップラー効果を利用したモーションセンシング

http://danielrapp.github.io/doppler/
音源が動くのではなく自分が動く場合でもドップラー効果が起こる点に着目している。

Processingでlivecoding

https://github.com/gutugutu3030/RealTimeTweakMode

LINE WOW

LINE WOW
フードデリバリー。おねがいWOWで買物代行もしてくれる。そのうちTaskRabbitみたいなこともやりそう。TaskRabbitみたいなのは仕事が多様化しそうで面白い。専門家から素人までをなめらかにつなぐというか。

木曜日, 4月 02, 2015

極私的浅草

3年ほど住んで、結婚式やパーティを開いた思い出深い浅草を離れた。その前は蔵前に住んでおり、東日本橋に勤めていたので、浅草〜東日本橋周辺には非常に愛着がある。何かのきっかけで近くにお立ち寄りの際は是非。

鮒忠/浅草

地元の人に愛される居酒屋。チェーン店だけどマニュアル化されたそれではなく、いい意味で雑。ハムカツが名物。コーン茶割とかウコン茶割も好き。

尾張屋/浅草

並木藪蕎麦がレストランで、尾張屋が食堂というのが地元の人の認識。かしわせいろ一択。

いちかわ/浅草

家の近くの蕎麦屋で、お酒を飲みたい時に。一品料理が凝ってて驚きがある。

米久/浅草

伝統あるすき焼き屋。長居はせずにさっと次に行くのが粋らしい。親とかが来たら行く。近くに正直ビヤホールという素敵な店があるが10年早い。

本とさや/浅草

打ち上げでよく行った。サービスカルビで十分。

大成苑/浅草

店の雰囲気が良い。タンがおすすめ。浅草は肉も美味しい街。

フルーツパーラーゴトー/浅草

毎日変わるパフェは庶民の楽しみ。フルーツはもちろん生クリームも美味しい。お歳暮などはここで。

Ourbs/浅草

浅草では珍しい若者向けのお洒落なカフェでご飯も美味しい。タイ料理とイタリアン。服も売っている。

ナカムラヤ/浅草

ここも珍しいお洒落なバル。漬物屋の2代目が始めたらしい。

酒の大桝/浅草

洒落たビールとかすず音とか売ってる。イベント用のお酒はここで買っていく。

あづま/浅草

DXラーメンがシンプルで美味しい。純レバ丼はレバー苦手でも大丈夫というかむしろ好き。入るのは少し躊躇する。

釜飯むつみ/浅草

釜飯が美味しいのは勿論だけど、店の雰囲気が親戚の家っぽくて良い。海鮮も美味しい。

ロッジ赤石/浅草

朝5時までやってる喫茶店。深夜の散歩コース。カツ丼とかタマゴサンドが美味しい。

龍園/浅草

汁なし担々麺が上品で複雑な味。チャーハンも美味しい。

フェブラリーカフェ/田原町

朝によく行った。バタートーストはペリカンのパンに糖蜜をかけるのだけど、これが絶品。アイスカフェラテの季節が恋しい。持ち帰りだと100円安くなる。

遠州屋/田原町

浅草では意外と少ない使いやすい定食屋。

デイリーズマフィン/蔵前

甘いやつもおかずになるやつもある。カスタードクリームのベーグルも良い。

Nui/蔵前

既に数多くのメディアに取り上げられてるゲストハウス。1階がカフェ&バーになっててほとんど外国。

ブラッスリージョンティ/浅草橋

一番好きな店。始めはアルザス料理という見慣れない文言に興味を持ったのだけど、勇気を出してランチに入ってみたらお手頃な価格で、にも関わらず帰る時に外まで見送ってくれたのが衝撃だった。料理やワインについて分からないことは何でも教えてくれるし、好みに応じてアレンジもしてくれる。自家製ジンジャーエールがめちゃめちゃ濃厚で美味しい。高級な感じではなく、家庭料理っぽい親しみがあって2週間に1回は食べたくなる。休日ランチがおすすめ。めでたい時、親や友達が遊びに来た時はここ。主にキャンセルが出た時Twitterでの発言味わい深い

つけ麺 素家/浅草橋

ここに行けるくらいの時間帯に退勤することが目標だった。

やまらぁ/人形町

どろっとしたスープが特徴。塩が好き。

肉のやまや弁当/東日本橋

駐車場を時間借りしてる肉屋の弁当。11時に行かないとすぐに売り切れる。ここでお昼を買えるくらいの時間帯に出勤することが目標だった。

料理川治/東日本橋

東日本橋のランチで海鮮ならここ。開店と同時くらいに行かないと激混み。客のほとんどは会社勤めの老人(昼の早めの時間に出られる偉いか逆に全く偉くない人)で、自分たちが来るのは20年早いと思う。入れなかったら近くの魚虎も良い。

一徹鮨/東日本橋

1.5人前は手巻きがつく。あら汁が美味しい。たまにめっちゃワサビが効いてるのがあるのはご愛嬌。

ラララ食堂/東日本橋

女性客が多いお洒落なタイ料理屋。ここのカオマンガイが一番好き。

虎穴/東日本橋

ランチには汁なし担々麺が食べられる。汁なし担々麺はここのが一番好き。夜は行ったことない。

菊屋/東京スカイツリー

ディープスポットとして思い出に残ってる。タクシーの運転手向けらしく深夜2:30に開く。浅草でめちゃめちゃに酔った最後にタクシーでここに行くのが上級者。店内に独特のにおいが漂ってるので酔ってないとつらい。カレー(300円)にキャベツを混ぜて食べると独特のうまみがある。

他にも沢山ある

気になったら聞いてみて欲しい。色々語りたい。

火曜日, 3月 31, 2015

Link list 2015-03

Inex Cox

http://inescox.com/
最近見た中でずば抜けて洒落てるグラフィック

手描きのデータビジュアライゼーション

http://www.wired.com/2015/03/hand-drawn-postcards-data-viz-dream
LupiとPosavecのプロジェクトで、アルゴリズミックなドローイングとも言える。思い起こすのはConditional DesignとかSol Lewittの作品。データと、描画のルールと、立ち現れるテクスチャ。

GT Cinetype

http://gt-cinetype.com/
かっこいいフォント。アルファベットと数字(と少しの記号)はお試しで使える。サイトもいい。

アルゴリズムを用いて形状が変化する文字を作る

http://www.wired.com/2015/03/using-algorithms-design-responsive-typography/
メタデザイン、パラメトリックデザインという言葉が気になった。パラメトリックデザインは、パラメータの操作によってバリエーションを生み出すデザインを指すようだ。主に建築の分野でよく目にする。メタデザインは、そのように変化する仕組み自体のデザインを指している。Rune Madsenのテキストによると、今までのデザイナーは「ロゴ」だったり「ウェブサイト」だったり「ポスター」のように最終成果物を作り出す存在だったが、メタデザイナーは手で絵を描くのではなく、絵を描くための仕組みを作る。Rune MadsenがITPで行っている授業「Printing Code」も面白い。

ドローイングの学び方

https://design.tutsplus.com/tutorials/how-to-learn-to-draw-stage-one-manual-skills--cms-23304
認知の仕組みや技術の水準を考慮して、どうステップを踏んでいけば良いかを教えてくれる記事は珍しい。

Credibles

http://greenz.jp/2015/03/12/credibles_crowdfunding/
個人経営の 店舗向けクラウドファンディング。応援したい店に出資できる。

モバイルコンテンツ戦略でコンテンツがどこにでも行けるように

http://www.smashingmagazine.com/2015/03/23/content-mobile-content-strategy/
スマートウォッチなどの登場でますます混迷を究めるスクリーン上のデザイン。モバイルコンテンツ戦略とは単に各デバイスで綺麗に見えることではない。質を落とすことなく、持ち運び自由で柔軟なコンテンツを作ること。Content Everywhereという本に詳しいようだ。買おうと思ったらSafari Books Onlineで読めた。

Don't follow the wind

http://dontfollowthewind.info/
みることができない展覧会。音声のみのウェブサイト。真っ白の画面を「見る」ことを意識してデザインされているように思える。デレク・ジャーマン監督作、終始青い画面の映画「BLUE」を思い出した。

あいちトリエンナーレ2016 プロモーション

あいちトリエンナーレ 2016 コンセプト・ビデオ
あいちトリエンナーレ 2010 / 2013 ドキュメント
山城監督がディレクションし、ドキュメント映像の2010を僕、2013を丹羽彩乃さんが担当。3D空間上のカメラの位置を制御するアプリケーションを作り、タイミングや位置、読み込む画像を監督が設定できるようにした。After Effectsでできることをわざわざ頑張ってしまった気もするのだけど(事実2013はAfter Effects)、ここに行き着くまでの表現的なトライ&エラーを色々試せたのは良かった。

Vetiver - Current Carry by Easy Sound Recording Co.

https://soundcloud.com/easysoundrecordingco/vetiver-current-carry
すごくいいんだけどCDかVINYL + Digital Downloadしか買う手段がない。ダウンロードのみで売って欲しい。

日曜日, 3月 22, 2015

Sketchで作ったデータをPhotoshopに移動させる

Sketchを使っているのが自分だけで、他の人が開けないのでPhotoshopに移動させたい。編集できる必要はなくて、各オブジェクトのサイズや位置などが分かるリッチなビューアとして使ってもらう。

Sketch側のレイヤー構成はこんな感じで、パーツ単位でスライスを指定しておく。

SketchToolをインストール(install.shを実行するかパスを通せば良い)し、

sketchtool export slices design.sketch

とするとスライスが書き出される。「-o パス」で書き出し先を指定できるはずだがエラーでうまく動かず「1」というフォルダが作られてしまう。同じ名前のスライスがあると上書きされてしまうので注意する。

sketchtool list slices design.sketch > export.json

などとするとスライスの情報がJSON形式で出力される。

スライスされた各パーツのサイズや位置が記録されているので、あとはこのJSONを元にPhotoshopで再現してあげればよい。PSD.rbも使ってみたかったが、PhotoshopのJavaScriptでやってみた。JSONのパースは信頼のCrockford先生によるJSON2を使用。書き出したスライスデータは「export」というフォルダ名にして、同じ階層に置いてある。Photoshopを起動して「File>Scripts>Browse...(英語環境にしてるので)」を選択して、sketch2psd.jsxと名付けた下のファイルを選択する。

sketch2psd.jsx

#include "json2.js";

var currentDir = new File($.fileName).parent;
var file = new File(currentDir + "/export.json");
file.open();
var jsonString = file.read();
var layoutJson = JSON.parse(jsonString);
var slices = layoutJson.pages[0].slices;
var bounds = layoutJson.pages[0].bounds.split(",");
var offsetX = -parseInt(bounds[0], 10);
var offsetY = -parseInt(bounds[1], 10);
var width = parseInt(bounds[2], 10);
var height = parseInt(bounds[3], 10);
var doc = documents.add(width, height, 72, "psd", NewDocumentMode.RGB);

for(var i=0; i<slices.length; i++) {
  var imgFile = new File(currentDir + "/export/" + slices[i].name + ".png");
  var openedDoc = open(imgFile);
  var partsName = slices[i].name;
  openedDoc.name = partsName;
  openedDoc.selection.selectAll();
  openedDoc.selection.copy();
  openedDoc.close();
  activeDocument = doc;
  doc.paste();
  
  var currentLayer = activeDocument.activeLayer;
  currentLayer.name = partsName;
  currentLayer.translate(-currentLayer.bounds[0], -currentLayer.bounds[1]);
  currentLayer.translate(slices[i].rect.x + offsetX, slices[i].rect.y + offsetY);
}

処理内容としては、先ほどexportしたpngを開いて全選択し、ひたすらコピペしている。PhotoshopのJavaScriptでのファイルの扱い方はJAVASCRIPT TOOLS GUIDEというドキュメントに書かれているのだけど、2014版がないし、公式でも探せなくて泣ける。それ以外はここにある。

Alignなどの問題か、文字のレイヤーなどパーツによってずれが出たり、Sketch上で位置を修正してもJSONで書き出した際にboundsが更新されてなかったり(offsetX, offsetYで対応してある箇所)、おかしなところが結構あって、仕事で使うには厳しいといった印象。それでも手でひとつひとつ並べるよりかは楽。

水曜日, 2月 11, 2015

iOS開発再入門 3 AudioKitを利用して複数のサウンドファイルを鳴らす

前回の最後に予想した通り、今回の目的にはAVAudioPlayerよりAVAudioUnitSamplerというクラスを使う方が良さそう。loadAudioFilesAtURLs()というメソッドがあり、これで複数のファイルを読み込むことができる。他に音声を扱うにはMedia Player framework、Audio Toolbox framework、Audio Unit framework、OpenAL frameworkがある。旧バージョンはOpenALを使用した。

AVAudioUnitSamplerはiOS 8から使えるAPIで、これを採用するということは動作環境がiOS 8以上である必要がある。2月2日時点のシェアは72%とのこと。このページで確認できる。

loadAudioFilesAtURLs(_ audioFiles: [AnyObject]!, error outError: NSErrorPointer)というメソッドで複数のファイルを読み込める。AVAudioUnitMIDIInstrumentクラスを継承しているので、音を鳴らすにはAVAudioUnitMIDIInstrumentクラスのメソッドを利用することになりそうだ。

…と思ったが全く使い方が分からなかった。いくつか検索して調べた結果、音声ファイルにメタデータを入れておくとかファイル名に音階を含むとMIDIと同様に扱えるなどと書いてある。任意のMIDIノート番号とチャンネルに、任意の音声ファイルをアサインできれば便利な気がするが、どうもそういう使い方はできないようだ。この方向は諦め、OpenALで実装しようかと思ったが、OpenALはCで書かれていて、Cで書かれたものをSwiftで使う方法がよく分からなかった。今後の課題とする。

同じくiOS 8から使えるAVAudioFileクラスのreadIntoBuffer(_ buffer: AVAudioPCMBuffer!, error outError: NSErrorPointer)メソッドを使うと、音声データをメモリに読み込めて遅延のない再生ができそうだが、全てのデータをメモリに入れられるのか、自分でうまく管理する必要があるのかどうかは検証が必要。

音関係の情報は相変わらず少ない。Objective-Cではそこそこ見つかるのだけど、Swiftで参考になるものがほとんどない(だからこそできたら良かったんだけど)。

ということで既にそういう課題を解決してそうなライブラリの力を借りることにする。ゲームなどでよく使われているCocos2Dも検討したが(内部ではOpenALを使っているらしい)、AudioKitが目的に合ってそう。サウンドエンジンはCsoundとのこと。学生時代に触って意味不明で挫折したけどアカデミックな電子音楽ではよく使われている(はず)。

CocoaPodsを入れる

ライブラリの管理はCocoaプロジェクト用のパッケージマネージャーであるCocoaPodsを使う。

pod setup

でローカルにリポジトリを作る。これがないとpod installしようとしてもエラーになる。

pod init

でPodfileを作成し、

target 'Dropophone' do
  pod 'AudioKit', '~> 1.2'
end

と書いて

pod install

これでAudioKitを使う準備ができる。今後は.xcworkspaceからプロジェクトを開くようにする。

SwiftでObjective-Cのプログラムを使用する

AudioKitはObjective-Cで書かれているので、Swiftで使用するにはブリッジが必要。[プロジェクト名]-Bridging-Header.hというファイルに(なければ作る)、

#import "AKFoundation.h"
#import "AKTools.h"

と書く。.xcodeprojファイルの「Build Settings」に「Swift Compiler」という項目があるので、「Objective-C Bridging Header」に先ほどのヘッダファイルを設定する。これでAudioKitのクラスが使えるようになる。

音声ファイルの追加

Finder上(Terminalでもいいけど)でsoundsというフォルダに全ての音声ファイルを格納し、XcodeのSupporting Filesの中にドロップする。ラジオボタンは「Create Groups」を選ぶ。これはFinder上の階層構造とは関係なく、MainBundleに対してフラットにリソースを格納することを意味する。「Create folder references」を選ぶと、finder上の階層構造を反映するようになるので、リソースを読み込む際にファイルまでのパスや、サブディレクトリを指定する必要がある。状況に応じて使い分けたい。

音声ファイルの形式はAIFFにしておく。

AudioKitでサウンドファイルを鳴らす

AudioKitはさすがにCsoundをベースにしているだけあって、サウンドファイルを読み込むクラスにplayしたら音が鳴るみたいな単純さではない。Expamleに音声ファイルを鳴らすプロジェクトがあるが、今のところObjective-Cで、かつクラス構成も少し複雑になっているので、シンプルに音を鳴らすための手順が分かりにくい。

色々と触った結果、

  1. 楽器(AKInstrument)を定義し、出力(AKAudioOutput)に繋ぐ。
  2. ノート(AKNote)のinstrumentプロパティに楽器を設定する。
  3. オーケストラ(AKOrchestra)に楽器を追加。
  4. オーケストラをstartし、ノートをplayすると音が鳴る。

というような流れがあるようだ。Csoundを知っていると分かりやすいのかな。

コードをgistに置いたので、見比べると大体分かると思う。

GUI

もうひとつ考慮したいのは、30個のボタンを配置する方法。前回は頑張って30本のアウトレットを繋いだが、今回は手作業ではなくプログラムで何とかしたい。

経験的に、プログラムから制御したいことがあると「programmatically」という語を含めて検索する。

button1.setTranslatesAutoresizingMaskIntoConstraints(false)

とすることでこれから定義するAuto Layoutを適用することができる。Auto Layoutに関してはまだまだ分かっていないことが多いのでひとまず適当にボタンが並べた。何故か最初のボタンがでかい。

UIButtonのインスタンスにイベントを設定。tagを利用して、どのボタンが押されたのかを識別する。

これでボタンに各音源がアサインできたので、応用すればシンプルなパッドのような楽器になる。次はAuto Layoutを掘り下げながら設計を考え直す。

実機でも動作確認済み。たまに音量がクリップするが、連打や同時発音など問題なさそう。

日曜日, 2月 08, 2015

iOS開発再入門 2 サウンドファイルを鳴らす

ボタンを押すと音が鳴るサンプルを作る

まずはシンプルなところから始めることにする。新規にプロジェクトを作成し、iOS Applicationから「Single View Application」を選択する。Languageを「Swift」にしDevicesは「Universal」にする。Use Core Dataのチェックは外す。

Main.storyboardを選択状態にし、UtilitiesからButtonをドラッグし、Storyboard上のView Controllerにドロップ。

controlキーを押しながらボタンをクリックし、上(か下)に少し動かして離すとレイアウト用の設定ウィンドウがポップアップする。

Center Horizontally Container
を選ぶと、水平方向にセンタリングされる。同様に右(か左)に少し動かして離し、
Center Vertically Container
を選んで垂直方向のセンタリングを設定する。これで画面の中央にボタンが置かれる。このように設定した内容は「Constraints」としてViewに紐付いたレイアウトのルールになる。

Assistant editorを開く(Xcode右上の丸が2つ重なったアイコンをクリックする)と、ViewController.swiftが表示されるので、controlキーを押しながら先ほど追加したボタンをクリックし、ViewController.swift上にドラッグすると「Insert Outlet, Action, or Outlet Collection」と出る。Connectionを「Action」、NameをplaySound、Typeを「UIButton」、Storageを「Weak」にして「Connect」をクリックすると、このボタンを押した時に実行されるメソッドが作成される。

最終的なViewController.swiftは以下。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    
    var audioPlayer: AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        var error: NSError?
        let fileURL: NSURL? = NSBundle.mainBundle().URLForResource("BassC1", withExtension: "caf")!
        audioPlayer = AVAudioPlayer(contentsOfURL: fileURL!, error: &error)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func playSound(sender: UIButton) {
        audioPlayer.stop()
        audioPlayer.play()
    }

}

AVFoundationフレームワークを利用して音声ファイルを鳴らすため、ViewController.swiftの冒頭でimportする。AVAudioPlayerのインスタンスを保持する変数audioPlayerを宣言。「!」はImplicitly Unwrapped Optional型であり、ImplicitlyUnwrappedOptional<T>の簡略化した書き方(シンタックスシュガー)である。Optional型の「?」も同様にOptional<T>のシンタックスシュガー。Tには任意の型名が入る。

Optional型から元の型を取り出すのに「!」をつけてアンラップするのだが、Implicitly Unwrapped Optional型にはその必要がない。

Viewが読み込まれた後に実行される

viewDidLoad()
の内部でAVAudioPlayerオブジェクトを作り、先ほど作った
playSound(sender: UIButton)
の内部で音を鳴らす処理を書く。音声ファイルはXcodeのSupporting Filesの中に置いておく。ファイルのパスはファイル名と拡張子を指定するだけで、どこに置いていてもうまく処理してくれるので、分かりやすいようにしておけばよい。

ビルドするとシミュレータが起動し、ボタンが画面の中央に配置され、クリックすると音が鳴る。単純に考えると、この作業を30回繰り返せばほぼできてしまいそうな感じだが、設計として美しくない(同じような処理をするメソッドが複数できてしまう)し、問題は他にもある。

おそらくAVAudioPlayerは長めの音声ファイルを再生するために作られており、Dropophoneのように短い音声ファイルを遅延なしで再生するのには向いていないかも知れないということ。複数の音を同時に鳴らすことができるかも不安だし、音量がクリップしてしまう可能性もある。

これらの問題については次回以降で考えるが、とにかくUdacityのコースが素晴らしい。Xcodeの各パネルの名称や使い方、フレームワークの構成、ヘルプやドキュメントの読み方、プログラムを組み立てるための問題の切り分け方、Googleでの検索方法やStack Overflowの読み方、Objective-CやSwiftのコードから処理を推測する方法など、実際の開発作業で必要な内容を一通り体験できる。英語も平易で聞き取りやすい。

金曜日, 2月 06, 2015

福島に行ってきた

イノベーション東北のプロジェクトのひとつ、LIFEKUの方々が募集していた観光アプリの制作に参加することになり、1月24日, 25日と週末を利用して福島に行ってきた。

震災の影響は目に見える部分ではそれほど感じられない。しかし人口の減少や、福島駅西口にある大型ショッピングモールの影響などで、東口商店街の商売は厳しい状況に立たされているようだ。彼らは生き残りをかけて世界でも戦える商品やサービスを開発しようとしている。

最初に伺ったのは「あんざい果樹園」。通称あんかじゅ。ご主人はfacebookやLINEをめちゃめちゃ使いこなしている。奥さんが集めた器や雑貨も販売していて、ここがライフクの人々の溜まり場となっているそうだ。日当たりもよく気持ちのいい建物。林檎と洋梨をいただいた。林檎は蜜が多く、洋梨はどろどろしてなくて密度が高い。とても美味しかった。敷地内で音楽イベントなども開催されていて、ハナレグミや原田郁子さん、大友良英さんなどよく知っているアーティストがライブを行った。

昼は北京料理「王芳」で食事。餃子が非常に美味しい。酢と辛子でいただく。みそそば(いわゆるジャージャー麺)を食べたが、初めて食べる味で良かった。歳を取ると新しい味に出会うことが至上の喜びになる。

うろこや」でお茶をいただきつつ、甘納豆をご馳走になる。「塩花豆」をお土産に買って帰った。

BarnS」で服や雑貨を見る。後で触れる「Pick-Up」の姉妹店で、女性向けの服や雑貨が中心。旭川の知り合いが働いているSÜNUSUの商品も置いてあった。2階がワークショップなどを行えるスペースになっている。苺をいただく。食べてばっかり。

その後「Pick-Up」へ移動。藁谷さんが働いている。「ボトムズの丈は折らずにちゃんと合わせて切る」「ニューバランスの紐はベロの後ろに入れる」とか作法があるんだよと教えてもらった。2階には社長が手書きで記している日本のファッションの歴史年表があり、沢山のカタログや、昔のファッション雑誌がある。「外国から服が輸入されてくる」という体験をした最初の世代がPick-Upの社長であり、BEAMやUnited Arrowsの創業者達なのだそう。店が狭く店員と客が向き合わざるを得ないので、うざいくらいに話しかけるらしい。店の人と仲良くなることや分かっている人にアドバイスしてもらえるのはありがたいことだと思う。コーディネート代行サービスがあるくらいだし。服を選んでくれる人、良い写真を撮ってくれる人、信頼できる美容師を見つけると人生は豊かになる。ドラゴンクエストのパーティみたいな感じ。

その後「珈琲舎 雅」でコーヒーをいただく。お洒落で落ち着いた店内。マグカップが色々あって、楽しい。「biji」でビンテージの家具を見せてもらい、駅前を歩いて「OPTICAL YABUUCHI」へ。籔内さんが店主をしている眼鏡屋で、元々は時計屋だったそうだ。籔内さんやスタッフの眼鏡に対する知識や熱意は素晴らしく、眼鏡デザイナーの話やオリジナルで作っているシリーズの話など、どんどん面白い話が出てくる。2階に個性的な植物を扱う「bloom」、レコード屋の「Little Bird」が入っていて、オシャ。籔内さんが設計し、LIFEKUの皆が手伝ってリノベーションしたそうだ。籔内さんは眼鏡作りを追求する余りRhinocerosに手を出したりもしていて、とにかく何でもやっている。

木だけで作ってるフレーム。数ヶ月待ちらしい。

ラ・セルバティカで美味しい晩御飯を食べ(その日の料理に使った肉や野菜からとった特別なあったかいスープで始まる)、福島のことやお互いのこと、アプリに対する考えなどを話した。

23時半頃にホテルに戻り、各自シャワーを浴びるなどして整えた後、0時30分から2時過ぎまでミーティング。メンバー間の面白いと思うポイントが近く、すぐに話がまとまった。ディレクターは連日の疲れにより撃沈、エンジニアはテンションが上がって夜の街に繰り出して行った(何もない道をただ歩いただけだったらしい)。少し資料に手を入れて就寝。

8時前に起き、撃沈したディレクターを置いて鯖湖湯という市が運営している共同浴場に行った。源泉が51.4度もあり、水で薄めないことにはどうやっても入れない。常連は薄めないそうだが、観光客向けに薄めてあげてくれという注意書きがある。かけ湯をしながら徐々に身体を慣らしていくのだが、それでもめちゃくちゃ熱い。建築も面白く、脱衣所と浴室がシームレス。

外に出たらちょうど雪が降っていて、非常に綺麗だった。身体は火照っているが、外気は冷たく、非常にすっきりする。サウナと水風呂のセッションに近い。サ道でいう「整う」感じ。

その後「信夫山・烏ヶ崎展望デッキ」へ。福島市内が一望できる、由緒ある山。山の中腹では何かしら工事が行われていた。除染作業だったのかも知れない。空間線量が書かれた看板があった。以前は線量が高かったらしい。山菜採りもできなくなったそうだ。

藁谷さんと籔内さんにコーヒーを淹れてもらい、地理を教わる。お年寄りの集まりが登ってきて、林檎やお菓子を分けてくれる。ビニール袋から丁寧にカットされた林檎を差し出しながら「検査してあっから大丈夫だよ〜」と笑う。

ホテルに戻ってチェックアウトを済ませ、OPTICAL YABUUCHIの3階でアプリの企画を提案。始まる前にコーヒーを淹れてもらう。これに影響を受けて帰ってからドリッパーを買った。反応は上々。アプリの方向性としては、いわゆるガイドブックではなく、僕達がしてもらったツアーをその人に合わせて組んでもらえるような仕組み。元々LIFEKUではコンシェルジュ的なサービスをしているので、それを楽にしたり、フィードバックを受けて改善につなげられるものにしようということになった。

東京の真似をするでもなく、のどかな土地でゆっくり豊かな時間を過ごせて良いですね、というのでもない。自分の周りにあるものやいる人で、できることをやっている。いいものを作る、伝える、それで生活をする。

年始に妻の実家を訪れた際、義父が天気予報の度に僕の実家の予報も見るようになったと言ってくれた。僕の両親も妻の実家の予報を見ているそうだ。

韓国のソウルに住んでいる友達、クロアチアのザグレブでお世話になった人、アメリカのニューハンプシャーでホストしてくれた家族。具体的な人の顔を浮かべられれば、その土地をリアルに感じられる。インターネット大好きっ子なので「現場」という言葉には注意してるのだけど、同じ釜の飯を食う、裸の付き合いをするといったことが、リアリティに大きく影響していることは間違いない。そういったものやことを増やしていくのが、ある時期は重苦しく感じられたが、今は楽しみになっている。

火曜日, 2月 03, 2015

iOS開発再入門 1

Dropophoneを作り直す(!)ので、iOS開発に再入門している。せっかくなのでSwiftを勉強しているが、今っぽい言語って感じで楽しい。

Safariにあるちょうど良さそうな書籍を調べつつ、Udacityで勉強している。XcodeやStoryboardの使い方を丁寧に教えてくれる上、音を録音し、加工して再生するアプリが作れるのが嬉しい。

公式のドキュメントも以前より分かりやすくなってる気がする。

  • Playgroundを使用するとすぐに実行結果が分かって良い。Terminalでxcrun swiftとタイプするとREPLも使える。
  • 変数の宣言をvar、定数の宣言をletで行う。ActionScriptみたいに:で型を指定できる。?をつけるとoptionalとなり、値がない(=nil)という値を保持できる。
  • 型安全なので、Stringの変数に間違ってIntを入れたりするとエラーになる。
  • 型推論により、型を明示しなくても初期化時に与えた値で自動的に判定してくれる。Haskellとかにある。
  • タプルが使える。Pythonとかにあって、複数の型の違う値を保持できる。

以前よりはプログラミングが分かるようになったし、聞ける人が周りにできたので、iTunesに寄せられている要望も受け入れられるようにしたい。

火曜日, 1月 20, 2015

2015年に意識していくこと

アグリゲーションのアグリゲーション

去年よく利用していたサービスにProduct HuntやZiteを挙げていたが、ああいうアグリゲーションサービスはメールマガジンも含めて結構読んでいる。人気の記事は各サイトを通じて何度も目にすることになるので、読み逃し防止に役立ったり、どういう分野で注目されているのかが何となく分かる。とはいえやはり重複が多過ぎると無駄な気がしてくるので、共通の記事を抽出してくれると便利。

検索結果が多ければ多いほど良かった時期は過ぎ、かつフィルターバブルを回避して本当に必要な情報に辿り着く方法が求められる。DuckDuckGoなのかSiriなのかは分からないが、早く次の段階に移行したい。

教育、能力開発からの仕事のマッチング

何故LumosityKhan Academyをやってるのかというと、就職や仕事を得るためのきっかけになるかもしれないという淡い期待があるから。これらのサービスが秘めている力は既存の資格ビジネスを大きく上回っていると思う。日常的に使用するサービスであるだけに、テストよりも日々の業務遂行能力を測れるのではないだろうか。Khan Academyは生徒同士で教え合ったり、評価し合ったりする仕組みがあるので、全員が同じ状況で同じ問題を解くような試験とは根本的に違う。

ワークシフト』で描かれている2025年の世界は学歴や職歴、案件で挙げた成果などによって序列化され、自動的に仕事が割り振られていく。常に時間に追われ、階層から抜け出すことができないということが予測されていたが、割とその兆候はあるので怖い。果たしてそれが本当に人類全体にとって幸せかというところで思い留まれるといいのだけれど、そういう世界になったらなったで少しでも自分の位置を良く保ちたいと思うのは人の性な訳で。

Webデザイン、インタラクションデザイン

Grid.ioが機械学習を利用してWebデザインを行っている。Webデザイナーの仕事がなくなるという危惧を抱く人もいそうだが、人工知能が台頭しなくても、BootstrapMaterial Designなどのフレームワークによってある程度の「Webサイトの形」は固まりつつある。IoTやスマートウォッチなどの流行で様々な情報がブラウザを経由せずに入るようになると、いわゆるWebデザインの仕事というのは変わらざるを得ない。それでも何かをデザインする仕事はなくならないし、面白くなっていく気がしている。

生活

ずっと気になっていたアルビン・トフラーの『第三の波』を読んでいる。これが35年前の本とは思えないほどの内容で非常に驚く。エネルギー問題、メディアの非マス化、働き方の変化、家族の在り方の変化など、当時起こりつつあった変化を、今のインターネットが決定的にしつつある。電子化はされておらず、日本語で読むには中古で手に入れるしかないけど、おすすめ。

Soylentneuro:onOculus Riftなどによって三大欲求にも変化が起こるかもしれない。食事は栄養の摂取だけではないとか、短時間睡眠、多層睡眠の科学的な妥当性に疑いはあるけれども、人類もまだまだ進化の途上であり、食べ物の変化や道具の使い方によってこれからまた種が枝分かれすることも可能性としては有り得ると思った。