article

プロテインについて本気出して考えてみた

今年の私は筋肥大を目指すこととなった。

そこに至る経緯はまた別の日に書くとして、そうなったからには目的を達成するのに効率的な手段を講じるのが必然である。僕は意味のあることをするのが好きだ。意味のないことを考えるのも同じぐらい好きだけれども、実行するときにはもっぱら意味のあることを好む。

そうだね。プロテインだね。

なぜプロテインを飲むのか

トレーニングや食事管理にはさまざまな目的がある:

  • 減量
  • 増量
  • 筋肥大

等が代表的だろうか。体脂肪と筋肉の量を調整することによって目的を達成する。筋肉は傷ついた筋繊維を補修することで肥大していくのだが、その過程で必要となる補修材がアミノ酸で、アミノ酸の原料がたんぱく質である。したがって

  1. 筋繊維を傷つける
  2. たんぱく質を補給する

ことが必要だ。一般に筋肥大を目的としたトレーニングを行っている場合、一日に体重×2/1000 [g] のたんぱく質が必要だと言われている。体重が60kgの人ならば120gである。コンビニのサラダチキン1つに含まれるたんぱく質が25gぐらい、ゆで卵1つに含まれるたんぱく質が6gぐらいであることを考えると、たんぱく質が豊富なおかずを6〜8品ぐらい食べることでようやく必要なたんぱく質を摂取できることになる。当然これだけの食事を一般的な食品から作るとなると膨大な熱量になる。筋肉は肥大するかもしれないが間違いなく肥満になるだろう。

だから、プロテインによってたんぱく質を集中的に補給する必要があるのだ。

たんぱく質の質

すでにここ一年で口にしたよりも多く「たんぱく質」と言っているが、実はたんぱく質といってもすべて同じというわけではなく、質の違いがある。わかりにくいのでqualityと書こう。みんな大好き定量指標だ。たんぱく質のqualityはどのような指標であらわされるのだろうか。

「プロテイン 比較」と検索すると、「アミノ酸スコア」とか「プロテインスコア」とかいう指標がよく出てくる。よく売れているプロテインのいくつかには、「アミノ酸スコア100」や「アミノ酸スコア100の原料を使用」と記載されている。さらには、「アミノ酸スコアはダメだ。プロテインスコアも見ろ。」というような論旨の似たような記事がたくさん見つかった。

端的にいうと必須アミノ酸の量が十分にあるかどうかという指標だが、調べてみるとどうやらこれらは国際連合食糧農業機関(FAO)が策定した指標らしい。全米マッスル協会とかではないので、より多くの人を健康にする食糧供給に資する指標ということだろう。アミノ酸スコアに上限がつけられていることも一応これで説明がつく。

もうちょっと調べてみるとPDCAASやDIAASといったものも出てきていて、指標はさらに進化していることがわかった:

  • 1957年: プロテインスコア

↓ 人体における必要量を考慮

  • 1973年以降: アミノ酸スコア。日本では1973年か1985年の指標を使っていることが多い。

↓ 吸収率を考慮。便中の窒素含有量から吸収率を推定する。

  • 1993年: たん白質消化吸収率補正アミノ酸スコア(PDCAAS)

↓ Antinutrient (反栄養因子: 栄養の吸収を妨害する)を考慮していない。-> タンパク質のsourceを考慮に影響される。上限も撤廃。

結局指標はなにがいいのか

基本的に指標は理にかなった根拠を持って更新されているように見えるので、最新の指標が良いと思う。ただし、PDCAASからは便を使って測定するなど人体との相互作用を考慮しているために食品単体では検査できない。ほとんどの食品やプロテインがアミノ酸スコアを採用しているのは測定が簡易な指標であるためと思われる。(人体に分解・吸収されるまでを考慮する栄養学の進化を無視しているとも言えるが。)

今回は吸収スピードの高い動物性たんぱく質、特にホエイプロテインのみを対象にするので吸収効率とかは似通ってると考えてもいいと思う(卵とかカゼインとか配合してるものもあると思うけど。)アミノ酸組成だけからプロテインを評価する場合は上限を撤廃したアミノ酸スコアとかを考えると良さそう。

ただし、人気のあるプロテインでもアミノ酸の種類を制限していたりleucineを減らしていたり、アミノ酸スコアで計れない合成をしている場合もあってこのへんはよくわからない。良い効果があるのかもしれない。

プロテインを調べてみよう

日本と海外で売れてるものから調べてみた。

このうちweb検索でアミノ酸組成を発見できたものはたったの3製品だった。ファック。

意味のあるたんぱく質摂取をしたいので、成分が見つからなかったものは論外である。成分が見つからないもののひとつ、amazon.co.jpで一番売れてるsavasのやつとかはたんぱく質含有率が低めで、そのかわりにいろんな栄養素を含んでいるようだけどそれが筋肥大に与える影響をメカニズムから説明するべきだろう。というかプロのトレーナーとかはこんなブラックボックスを使ってどうやってトレーニング計画をたてているのか?なにか私には計り知れないコツがあるのだろうか。

もうこれしかないじゃん

アミノ酸組成が確認できた3製品は、以下の3つ:

  • ボディウイング製「ホエイプロテイン」 (Amazon.co.jp 4位)
  • Champion Performance製「Pure Whey Plus」(Amazon.co.jp 5位)
  • Optimum Nutrition製「Gold Standard 100% Whey」(bodybuilding.com 2016 1位)

この中では、Optimum Nutrition製 Gold Standard 100% Wheyが一番良い (商品画像はamazonアフィリンク)

  • たんぱく質含有率が高い (77.42%)
  • アミノ酸スコアが高い (96.89)
  • PDCAASも算出されていてしかも高い (100)
  • それなりに安い (3,029円/kg)
  • bodybuilding.comで10年連続売上1位という圧倒的実績

など、買わない理由が浮かばないほど。私は迷わずこれを買った。

いちおう残りの2製品も紹介しておく。2番目のおすすめはボディウイング製 ホエイプロテインだ。

今回調べた国産プロテインでは唯一アミノ酸組成の情報があり、たんぱく質含有率が高く(78%) アミノ酸スコアも高い (100.96) うえにGold Standardよりも700円ほど安い (2,290円/kg)。ただし一食分として推奨されている量が若干少ないので厳密に推奨量を守った場合、たんぱく質は1食で18.72gしか摂れない。またボディウイングは水素水を販売していたりもするので、売れそうな商品をOEMで売っているだけの業者なのではという疑いの目を私は向けている。ちょっとの値段の差に目をつぶれば、プロテイン会社としての実績もあり研究がなされている(と思われる)Optimum Nutrition製品を買うほうが懸命な判断だと私は思った。

3番目はChampion Performance製 Pure Whey Plus。

驚くほどアミノ酸スコアが低い(44.54)が、これはisoleucineが要因だ。2番目に低いスコアはPhenylalanineの96.57で、これはOptimum Nutrition製 Gold Standardとほぼおなじ。Isoleucineだけ圧倒的に少ないのは意図的にカットしているからでは、とも思ったがAmazon.comでの商品詳細説明に「pure whey plus ultra-refined protein helps stop muscle breakdown by delivering essential branched chain amino acids (such as leucine, isoleucine, and valine) your muscles crave after heavy weight training…」とisoleucineの重要性を書いてもいるので合成の都合上やむなく低い値となっているのだろう。したがってこれを買うのはおすすめしない。

今回集めたデータ

あまりたいしたものではないですが、せっかく集めたデータなので公開します。MITライセンスです。

https://docs.google.com/spreadsheets/d/1hvKrslxb1-EiENHSrUPnL4MUMOkoyfZeK2wfcqRVgJk/edit?usp=sharing

トレーニング方法とかもおもしろいものが見つかれば書きます。

IoTの正体

新しい喧騒を発明した者ではなく、新しい価値を発明した者のまわりを、世界はめぐる。世界はめぐる、音もなく、しずかに。

いさぎよく認めるがいい。お前の喧騒と煙がおさまれば、ほとんど何も起こっていないではないか。ひとつの都市が廃墟となり、ひとつの柱像が泥のなかに転がったからといって、それが何だ。

—- 『ツァラトゥストラかく語りき 』より

IoTだM2Mだと言われてるが良くわからん。バズワードなのは良いとして、その背後で起きている価値の変化はなんだろうか。例えばDeep Learningの背後では、特徴抽出の自動化というパラダイムシフトがあった。IoTの背後にあるものはなにか。

ちょっと冷静に考えるとわかるが、インターネットに繋がる意味のあるモノと、無いものがある。冷蔵庫は繋がる価値がありそうだが、髭剃りはあんまり価値が無さそうだ。これらの違いは、保有する情報の量(冷蔵庫 > 髭剃り)のみならず、そのモノが実現している機能にも関係がある。冷蔵庫は分散化することでコンビニに限りなく近づいていくし、買い足すことで拡張可能だ。

分散化や、拡張。このように、PCやスマホのインターネット端末としての特徴を抽象化したものこそ、モノがインターネットに繋がった時に得られる価値を支えているはずだ。それらは以下の3つのabilityであると僕は考える:

  1. Adressable:
    • Internetを通じて各機器にアクセス可能であること
  2. Programmable:
    • 挙動をユーザーのプログラムによって制御可能であること
    • 公開APIまたは、ファイルフォーマットをオープンにしておくこと
  3. Scalable:
    • そのHardwareの提供する最も大事なValueが、クラスターとなることで強化されること

TCP/IPによって端末に一意にアクセスでき、挙動をプログラム可能となったことで情報・計算の共有・分散が可能になったことが、インターネット端末の起こした革命の背後にある機能だ。

非線形な情報の結合によるハイパーメディアのように、モノが非線形な結合によって個の総和を超えた価値を持つこと。それが今までにない価値となる可能性がある。安易だが、上記の3機能を持つモノを、Hyper Hardwareと呼びたい。PCやスマホはHyper Hardwareである。(スマホがProgrammableかというと少し怪しいが。)ルンバはAdressableではないし、scalabilityをあまり考慮されていない(Programmableであることでこれらを解決する可能性はある)。

そうすると、Hyper Hardwareはまだ生まれていないことがわかる。IoTが良くわからないというのも、価値を持った製品(Hyper Hardware)が登場していないからなのかもしれない。

 

はじまりはProcessingだった

最近ドローンについて調べていく中で、気付いたことがあった。

ドローンの飛行制御パーツ(フライトコントローラ)は、arduinoベースのものが多いのだ。

フライトコントローラも2系統あり、もともとラジコンヘリの中のクアッドコプター向けに作られていたものと、自動制御するために用意されたものとがある。

後者がarduinoベースであり、arduinoを使うことで超音波センサやジャイロ、GPSなどの各種センサ情報を使ってモータ出力をコントロールすることができるのだ。

さらに最近ではraspberry piベースのものも出てきて、Unixの豊富な開発資源を利用しつつドローンの制御を行うことが出来るようになっている。

そうしたフライトコントローラは、フライトとは言ってもより一般化されており、ランドローバーの制御等も行えるようになっている。

要するにGPSや超音波センサなど、リアルワールドで必要とされるセンサ制御とIOをセットにしているため、汎用的なロボットコントローラとして使うことができるのだ。

開発環境も、ROSなどロボティクス全般に応用できる環境を使う。

ロボティクス関連の人がドローンに関心を抱いているのはそのためだ。ホビーとしてのドローンは、マーケットとしての価値しか無い。重要なのは自動制御であり、それを可能にしたのはプロトタイピング可能なハードウェア、つまりarduinoの存在だったということだ。

そしてarduinoはそのIDEを見れば分かる通り、Processingをベースにしている。

「クリエイターがアイデアに集中できる」「間口を広くする」という哲学はProcessingの根幹をなしており、OpenFrameworksやCinder、Arduinoはそれらにインスパイアされて開発された。

僕が最初に感銘を受けたプログラミングのアウトプットは、Processingを使ったMichael Hansmeyerのオブジェクトだった。

僕が最初に覚えたプログラミング言語もProcessingだった。

はじまりに、Processingがあった。

はじまりなのに、すでに進行中(Processing)であるという知的な遊びが、Processingの哲学なのかなと思った。

エロ駆動型Unity+MMD+Oculus Rift その1 既存のエロコンテンツまとめ

私は激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。私にはUnityが分からぬ。私は、一介のオナニストである。マスをかき、息子と遊んで暮らしてきた。けれでも規制に対しては、人一倍に敏感であった。きょう未明私はOculus Riftを手に入れ、Runtimeを入れファームウェアアップデートをして、愕然とした。

とは言ってもエロコンテンツが無いわけじゃない。例えば最近鳴り物入りで発売したPlayGirlsというやつがある。しかし体験版をやってみてみな一様に感じていることと思う。

違う、そうじゃない

と。

まだ仮想空間は(解像度的制限により)記号空間として認識されてしまう。記号空間であるからにはアニメ・漫画キャラクターこそが唯一絶対の正義なのである。化粧をしなければ男性と代わり映えしない顔面容姿であるところの三次元人間が仮想空間入りしたところで、「セカンドライフじゃねーんだから(冷笑)」とこれにはメロスも呆れ顔である。

一方でMikulusは素晴らしい。よもや自分が初音ミクに見つめられてドキドキしようなどとは夢にも思わなかった。(どちらも@GOROman先生だけど)

かようなエロをもっと!わっふるわっふる!という気持ちでいっぱいだが、残念ながらそれは叶わない。

PCLだ。

クリエイターができないこと
宣伝や広告のために二次創作物を使うこと
他の人の作品を、自分のものだと偽って使うこと
キャラクターの価値を下げるような使い方をすること
他の人を不快にさせ、または傷つけるために二次創作物を使うこと

piapro(ピアプロ)|ピアプロ・キャラクター・ライセンス(要約)

いや、分かる。みんなが楽しくコンテンツを制作する環境に秩序が必要だということは。

とにかく問題は、PCLのもとではR-18コンテンツは暗めのグレーゾーンっぽいということだ。

またボカロでなくとも、MMDの製作者様側で規約を設定されている場合もある(MMDモデルデータ付属の”Readme.txt”や”よんでね.txt”などに記載)。

だとすれば答えは一つ。

自分で作る

である。何人も個人利用に制限をかけることは出来ない。メロスが走ることを制限することは出来ないのだ。

というわけで次回からUnity + Oculus + MMDでの作り方を書いていきます。実体は無くとも、型だけが語り継がれる「日本的なるもの」をみんなで作ろう。(文化的発言)

今回は、既に存在する「そっち方面のコンテンツ」を紹介するにとどめておきます。

無料コンテンツ

not R-18

R-18

有料コンテンツ

 

次回予告

こういうのを作る

スクリーンショット_120814_124419_AM

『陽なたのアオシグレ』感想

ようやく暇が出来たので、石田祐康監督『陽なたのアオシグレ』を観てきた。相変わらず、アニメーションの、記号が動くことの楽しさが伝わってくる動画。音楽もいい感じ。ストーリーに関しては説明的なシーンの切り貼りが多くて、今回は15分で起承転結をやりきるという目標があったのだろうかと感じた。

気になったのは、一枚絵で良く出来てるシーンが多いこと。それがアニメーションになると画が説明的になって伝えたい部分に意識が向きづらい気がした。それと画で伝えることを意識しているからか、演出はもっと洗練できるのではないかとも思った。例えば冒頭の「僕はシグレちゃんが好きだ」という台詞はまったく要らないと思うし、終盤で妄想世界と現実世界が分離したままである必要もない気がする。時間内で情報を伝えきることの難しさと製作者の迷いが伝わってくるようだった。

最も印象的だったのは同時上映のなかむらたかし監督『寫眞館』の原画で、それにはとても少ないデフォルメされた線によってその人の醸し出す空気感や意志が表されていた。情報を伝えきるために画、映像、音楽、キャラデザ、シナリオを総動員することで初めて強度のある作品が生まれるのだということが実感できた良い2本立てだったと思う。

Arduinoで扇風機のリズム機能を作る

 

さて、この前の記事で秋月の調光キットを組み立てたのですが、今回はそれをarduinoで制御して扇風機のリズム機能を作ります。

さて、ではボリュームを繋がないでおいた調光キットがこちらにあります。

Camera 360

ちなみに前回つくったやつは百均で買った容器に入れてはんだゴテ用になりました。

http://instagram.com/p/bI8JpAjZQ7/

ではどうやって抵抗値を制御するのかというと、アナログフォトカプラというやつをつかいます。以下の記事を参考にしました。

Arduinoで扇風機を制御 – チラシ裏日記上等!!

アナログフォトカプラは、普通はフォトダイオードとLEDを組み合わせたもので、光の強さに応じてフォトダイオードに電流が流れるというものですが、今回は抵抗を制御したいので、上記の記事と同様にCdS+LEDのフォトカプラを使います。これによって入力電流に応じた抵抗値を得ることができます。

CdS+LED アナログ・フォトカプラ MI0202CL

これをArduinoのアナログピンからの出力で制御するというわけです。

簡単ですけど繋ぎ方とコードは以下。

fan_control_ブレッドボード-2

/*** analogue sin out ***/

const int OUT_PIN = 3;
const int CYCLE   = 15;

float mapf(float x, float a, float b, float c, float d) {
    return (d - c) * (x - a) / (b - a) + c;
}

void setup() {
}

void loop() {
  // calcurate current phase in interval CYCLE
  float rasian = (2 * PI * millis() / 1000.0) / CYCLE;

  if(sin(rasian) < 0) rasian = 1.5 * PI;

  // write as 0-255
  analogWrite( OUT_PIN, mapf(sin(rasian), -1, 1, 0, 255) );
}

最初はサイン関数でいけるかなーと思ったんですが、それだと電気が弱い時間が短すぎてそれっぽくなかったので、サイン関数がマイナスの間は抵抗マックスにしています。周期は15秒ぐらいがそれっぽいです。

これで風邪の心配はなくなったわけですが、まだなんかイケてる感じではないので、次はandroidからarduinoを制御するのをやってみたいと思います。いつになるやら。

 

トライアック万能調光器キットを組み立てる

毎年妙に気温が高い時期があると思ったら夏というものらしい。

(ここ数日は涼しいからちょっとアレだけど)それにしても暑い。暑いから扇風機をつけて寝る。風邪をひく。なんだこれは。いい加減にしてほしい。

そもそもうちの扇風機には「リズム」というものが無い。程よい涼しげなビートを刻むことができるのは富裕層に限られるのだ。

というわけでリズム機能を作っていきましょう。最終的な目標は、androidからなんかステキなムニャムニャを使って燃え尽きるほどヒートな夏に冷静と情熱のあいだを刻みつけてやれ爽快!です。

まずはコンセントからの電流を制御するものが必要です。以前『電子工作の素』という本に載っている万能調光器を作って、出来たはいいが調光できず投げ出した結果、調光しようとしていたのは蛍光灯だった、というなんとも恥ずかしい事件がありましたが、やはりコンセントからのAC100Vを扱う以上、ちゃんとしたものを使ったほうがいいということで、秋月の「トライアック万能調光器キット」に頼ることにしました。

トライアック万能調光器キット(20Aタイプ)

実はこのキットだけですべてオッケーというわけではなく、これに加えてコンセント、プラグ、コード、スイッチなどが必要です。たぶんほんとはヒューズもいるんだけどまあ知らん。あと画像には写ってないけどトライアック用の放熱器。

Camera 360

 

回路部分をはんだづけし終わるとこんな感じになります。

無題画像_062413_031428_AM

 

カッコの中は回路図中の記号です。小さい順にはんだづけすると捗ります。この中ではダイオードだけが極性があるので、銀の帯のある方向と基盤に描いてある矢印の向かう先を合わせることに注意です。

もういっこ余ったバリスタはコンセントに並列に接続します。

Camera 360

 

あとの注意点とかはこのブログ記事を見るといいんじゃないかと思います。

あとはプラグとコンセント、ボリュームを回路につなげば完成です。Camera 360

僕はボリュームにつないだ導線が太すぎて回路の穴を通らなかったので裏側からつなぎました。

無題画像_062413_033143_AM

 

これで手動での電流制御はできるようになりました。このままでは危険なので、なんかいいケースを探して入れて下さい。

次はarduinoでの制御の予定です。

 

『ニコニコ建築の幻像学』の幻像

99bcfc12a83611e2a07422000a1fab83_7

「ニコニコ建築の幻像学」を読みました。

ニコニコ動画で「建築」タグを持つ動画や、マインクラフト上など、コンピュータの仮想空間内で作られている建築を「ニコニコ建築」と呼び、「その可能性を雑誌制作を通じて追いたい。」という、ニコちくさん(@nicochiku1986)による同人誌です。

こういう同人誌っていいっすよねなんか。オラワクワクします。

全体は2つの特集に分かれてて割とこれがどう繋がるんだみたいのなところもあるので、これらから見えてきた幻像を僕のフィルターを通して書いてみます。

構成としては

  • 「ニコニコ建築」という言葉の生みの親である江渡浩一郎さん(@eto)への巻頭インタビュー
  • インターネットにおける「建築」の筆頭とも言える「MINECRAFT」特集
  • インターネット界隈の建築・音楽クラスタの論評特集

みたいな感じ。

全体を通して見えてくるのは、

  • なぜ人は建築をつくるのか
  • 誰もが建築をつくるなら、CGMとしての建築はいかに可能か

といったところです。

 

MINECRAFT:なぜ人は建築をつくるのか

松永伸司さん(@zmzizm)の論評では、建築的プレイを可能にするゲームの諸条件として、

  1.  ゲームシステム空間(ゲームシステムの内部の空間)の存在
  2. 空間内の静的オブジェクトの位置をプレイヤーが変化させられること
  3. 位置変化の維持

という条件が上げられています。

また、朝永ミルチさん(@mircea_morning)の記事(「スティーブ(プレイヤーキャラ)」への擬似インタビュー)では、MINE CRAFTがニコニコ動画ではMMDのように「ストーリーの舞台」として使われているということも特徴として触れられています。

実際、僕はニコニコ生放送が始まったころぐらいまではニコニコ動画の割とヘビーなユーザーだったので、

[nicodo display=”player” width=”600″ height=”330″]sm12586626[/nicodo]

とか、

[nicodo display=”player” width=”600″ height=”330″]sm17623852[/nicodo]

とかは見たことあって、大阪在住のWebbstreさんによるチュートリアル

を参考にMINECRAFTをやってみたこともあったのですが、なんか続きませんでした。

やはり、バーチャル空間の「スペックの低さ」というか、そういうのが気になるんだと思います。

エルンスト・マッハ:

「生理学的空間内の点」は、「つかむことや見ることといった運動や移動運動の目的」にほかならない(体が周りの空間を「マッピング」する出発点であり、またその運動が目的指向であるため、私たちは空間を形として捉えることができる。)

ジュール=アンリ・ポアンカレ:

「私たちは自らの体を基準として外部の物の位置を突き止めるのだし、それらの物について私たちが唯一思い描ける特別な関係は、自分の体との関係なのだ」

これは『ミラーニューロン』という本に出てくる文の引用で、

そういう「現実空間のスペックは高い」(梅沢和木)的なことは荒川修作だったり村上春樹だったり、洞察力に優れた人は過去にも言葉にしているのですが、最近の脳科学の研究によると、どうも僕たちは脳みそだけで現実空間を完全にモデル化してその中をシミュレートしつつ動いているのではないようなのです。このことは進化の圧力が危険からの回避を前提にしているために、生物の脳と体は無駄な演算を極力はぶくようにできているのだと説明出来ます。例えば、ジグソーパズルのピースをはめる時、ある程度頭の中で目星はつけるものの、大体の人は実際にピースをくるくると回して当てはめると思います。脳内での記号処理という膨大な演算を最小限にして、形の一致の視覚的確認、またはピースがはまった時の皮膚感覚のみで「パズルを解く」という高次の問題を解決することができるのです。

つまり知識は環境に埋め込まれたものもあり、それを取り出すには人間の身体と脳が一体となった処理系が必要だということです。このことは『現れる存在』という本に書かれていて、実世界ロボティクスの分野では90年代以降一般的な話のようです。

つまり何が言いたいかというと、「バーチャル・アーキテクチャーは建築ではない」

ということです。このことは冒頭のインタビューで江渡浩一郎さんも、ニコニコ建築というのを考えるときに、バーチャル・アーキテクチャだけでなく、リアルといかに繋がっているかも重要であると述べています。

ではなぜ人は造形するのかといえば、「そこに意志が介在するから」ということに尽きます。例えば2次元平面上にゴミをランダムに散らして、ランダムに行動しつつ、ゴミに出会ったら拾って、何か他のゴミに出会ったら置く、という行為によっても「ゴミの山」が生成されます。さらに高次の意志を人が持つ以上、前述した「建築的プレイを可能にするゲームの諸条件」が満たされていれば、人はある「ゴミの山」に何か記号を見出し、造形のスイッチが入るのでしょう。

 

「ニコニコ建築」はいかにして可能か

人間は意志を持つから造形し、MINECRAFTは造形が可能なゲームであり、ユーザー数の増加によってメディア的性格を持つようになってきたという話をしました。

未発育都市のノエルさん(@mihatsuikutoshi)の論考では、

  • 前例のない「高層建築」を説明しうる「芸術論」として「形態は機能に従う」が生まれたが、現在の「時代の意志」である「情報化時代」を説明しうる芸術論が要請されている。
  • 人間に「優しく」、創造性を刺激する「アイコン」がそれに応えうる。

としています。これは「バーチャル・アーキテクチャー」を含んだものとして現代の建築の概念を拡張せねばならないという話で、納得できる話ではありますが、やはり依然として、前述した理由でリアルとバーチャルの違いは意識しておかねばならないだろう、というところを僕は強調したいと思います。

さて、そこで重要になってくるのが、このノエルさんの論考でもとりあげられている、リチャード・フロリダの『クリエイティブ資本論』です。

この本は、ジェイン・ジェイコブスの『アメリカ大都市の死と生』に影響を受け、人びとの創造性に寄与するものとしての都市に焦点を合わせています。

  • 経済成長には3つのT、すなわち技術[Technology]・才能[Talent]・寛容性[Tolerance]すべてが揃わなければならない。
  • 現代において才能はクリエイティブ・クラスという階層に属する。
  • クリエイティブ・クラスを惹きつけることが重要である。

という話です。つまり経済の優位性は圧倒的にアイデアによって生まれ、アイデアはある特定の条件下で豊かに生まれ(メタ・アイデア)、都市のメタ・アイデアはどのようなものを目指すべきか、が書かれているのです。メタ・アイデアについては

  • Paul Romer, “Economic Growth”, in The Fortune Encyclopedia of Economics, David R. Henderson(ed.). New York: Time Warner Books, 1993, p. 33.

が参考文献としてあげられていますが僕は未読です。

ともかく重要なのは、「創造的または教育レベルの高い人が集まり、かつ寛容であること」です。MINECRAFTが創造的な人を集める場であることは明白でしょう。

僕はこれらに加えて、「ストーリー」が決定的に重要であると思います(僕の以前のエントリをご参照下さい)。『クリエイティブ資本論』でもいまや毎年SXSWで盛り上がるオースティンしかり、音楽文化が大事だと言っていますが、簡単にいえば「らしさ」を人びとがどれだけ指向できるか、その「らしさ」が寛容に更新され続けられることが大事です。創作作品が「ストーリー」とも言える緻密な世界描写を伴う作品なんかもあります。士郎正宗さんの作品や帝國少年さんのイラストとか。建築界隈で僕がちょっと注目してるものとしては、「UNDER TOMORROWS SKY」というプロジェクトがあります。TOMORROWS THOUGHTS TODAYという建築家グループが主催する、有識者による一つの未来を作るプロジェクトです。ワクワクします。

この関連として、神野智彦さん(@gnck)の論考では、3次元ビットマップであるMINECRAFTの魅力について、

  • ビットマップは複製可能性による像の共有、手法それ自体の現前性により人を惹きつける

という説明をされています。ドット絵や8bitサウンドがむしろ現代においても人気を増してきているようにさえ感じられるのは、この「手法それ自体が現前していること」にあるのでしょう。それまで特別な能力を有した「ギーク」しかアクセスできなかった空間に参入できるようになり、その空間を特徴付けている機能を現前させるようなものを表現手段として採用することで、「ストーリー」へ参加しているのだと言えます。

MINECRAFTは前述のようにみんなが知っている場所の再現の動画が最も有名になり、参入する人もそれを指向し、古参の人間は「こんなやり方もあるんだぜ」みたいなすごさを追求することができます。この最後の部分が決定的に大事なのだと思います。

んーまあ散漫になりましたがまとめます。

「ニコニコ建築」というのは、江渡浩一郎さんの話からすると、

「人間らしい集合知」を唱えたニコニコ動画のように、人びとが自分で作り上げたようなもの

ということになります。それには人びとの創造性を担うメディアとしての都市、IT等メタ・アイデアに対する整備が必要であり、本質的には身体感覚を通してしか建築は存在しえないとしても、広義の空間においてゲームシステムや手法をメディアとした造形のおもしろさ、楽しさは存在し、それが確かなストーリーとして現れるとき、現実に影響を与えるようなメタ・アイデアになりうるのではないか、ということです。

ついでに僕のスタンスを表明しておくと、

  • 実世界とのインタラクションを重視したなにかをつくりたい
  • いろんなストーリーに触れたい
  • 人びとが創造を担うべき時代を阻害するものを説得力のある方法で壊したい
  • 人の思い出になるストーリーをつくりたい

ということになります。一緒に何かしようよ、という方はぜひ声をかけてほしいです。

コンテクストが必要なもの、要らないもの

前ブログの記事で、あらゆる表現は次の3つで捉えられると書いた。

  • クラシック : 様式。一般にイメージのクリシェとして利用可能であるもの。
  • アヴァンギャルド : 類を見ないもの。
  • バズ : マスメディアの登場以降。クラシックとはなりえないものの一時的なスタイルとして利用可能。

コンテクストとは、クラシック表現において読み込まれることになる、過去の表現の抽象化されたものことをここではいう。

よく、コンテクストはを押さえなければならないと言われるが、それって本当だろうか。専門家にとって必要なだけじゃないのか。科学、美術、音楽、建築について考えてみる。

科学

科学は査読というシステムがあるため、コンテクストを押さえなければ意味が無い(ということになっている)。ページランクのように、一般の人の支持を集めることになって引用数が増えるということはあっても、一般の人の支持を集めたからといってそれが定式化されないまま引用されるということは(意味が)ない。

美術

村上隆は『芸術起業論』の中で以下のように言っている。

美術の世界の価値は、「その作品から、歴史が展開するかどうか」で決まる。

根強い慣習や因習を振り切れる衝撃や発見や現実味がなくては革命にならない。

多くの人に受け入れられなければなしとげられない革命を促してゆくものこそが、真の芸術作品である。

歴史に残るのは、革命を起こした作品だけである。

つまり美術は、価値の転換を成し遂げることになったものとして後から評価されるものだということだ。

ここで重要なのは、美術表現の転換ではなく、価値の転換の象徴となりうるかということだ。その意味で、将来の専門家から、「この作品は歴史と当時と現代をつなぐ象徴である」というお墨付きをもらうために、コンテクストは押さえなければならないことになる。

しかし、その前に、その作品はなんらかの形で美術界に存在しなければならない。これには、ゴッホやヘンリー・ダーガーのように死後に発見されるようなこともあるだろうが、生前に美術館に収蔵してもらう・またはそれ自体でブームを起こすというのが現実的な戦略となろう。

幸いなことに、現代芸術には「概念の破壊」という評価基準が存在するので、いって見れば何でもありで、いかにその戦略を自覚的に進めるかということも文脈となりうる。

死後にしか評価されない価値を、生前にひきよせるために金銭の力を使ったのが、ジェフ・クーンズをはじめ、80年代以降にデビューしたアーティスト。

かつての権力者、宗教的権威、お金持ちが自分たちのために芸術家に作品を作らせるという単純な時代から、芸術家が芸術家のために作った作品を、まさにそのことを理由にお金持ちが自分たちのために買うというややこしい時代に移行した。そのため、作品としての価値と価格が大きくくずれた。

後者は『芸術闘争論』からの引用である。

芸術が「お金」の概念にも食指を伸ばしたことで、消費者が取り込まれた。消費者は、投機目的、税金逃れ、あるいは単に「かわいい」とか「かっこいい」とかでそれを買う。

サブプライム危機以前の現代芸術がそのようなものであった以上、それにはコンテクストのみならず一般の人が寄与することになり、キャッチーな価値が必要となった。と、村上隆が自身をコンテクストに位置づけるための物語はそうなっている。

音楽

あまり知らないのだが、音楽はオペラなど物語と一体となって感情を操作するものから、音楽それ自体を研究するようになり、またそうしたコンテクストとは別に、以前からある「一体感や物語性を演出する音楽」が一般の人々に受け容れられた(ポピュラー音楽)。現在は「できるだけ多くの人に感動を届けるポピュラー音楽」が人々の教養や選択肢の増加による多様化のせいで衰退し、各音楽領域ではお互いを評価しあう「駄サイクル」が生まれがちだ、というのは『ネムルバカ』で描かれている。

「できるだけ多くの人に感動を届けるポピュラー音楽」という文脈ではアイドルという「場」の付随物(演出道具)として使われており、コンテクストはほぼ関係ない。

各細分化領域では、多くの一般人を消費者として呼び込めないので、必然的に評価は同人によって行われる。そのため、先鋭化したコンテクストが生まれる。

建築

建築は権力だとか神性だとか、何らかの効果を求めて作られてきた。近代以前にはそれがだいたい神性(≒権力)であった(というか現在まで残るようなもので同一のコンテクストであるのはそれぐらい)ので、ほぼ同一の様式が確立されていた。しかし個人が確立し、経済が社会のルールを決定し、多様な価値を認めるという段階ごとに、居住性や商品価値が求められる効果として大きくなってきた。そして居住性や商品価値を以前からのコンテクスト(神性)と接続することはできていない。

つまりそもそも建築としての批評性はあいまいで、ひとことで言うと形状や体験ということになる。学問全体としては多様な研究がなされているが、船頭の多さゆえに今海にいるのか山にいるのかも分からない。しかし購入者がいなければ建たない現状が変わらなければ(デザインの方法論という拡張も行われているが)、コンテクストは不要であろう。

建築批評空間を可視化してみた

最近Pythonにはまっています。

ついでに機械学習の勉強にもはまっています。

こりゃあ建築批評空間を可視化するしかあるまい。

公開されている建築批評といえば「『10+1』データベース」ですね。

なんとなく見た感じ、アドレスは

スクリーンショット_13_02_23_19_26

こんな感じになってるので、適当に番号を増やしてったところ、どうやら1549まであるみたい。

というわけで、全ページを次のシェルスクリプトで取得します

#
var1=http://db.10plus1.jp/backnumber/article/articleid/
var2=.html

for ((i=1;i<1550;i++))
do wget -O $i$var2 $var1$i/
done;

この1549の中にも歯抜けになってる番号が100ありました。

それで、記事によっては

スクリーンショット_13_02_23_19_06

こんな具合に公開されてないものもあります。全1449記事のうち、公開数:721、未公開数:728 でした。約半数が公開されているようです。

さて、いろいろやってみたいことはあるのですが、まずは簡単に記事同士の関係をみてみようと考えました。

記事を見てみると、各記事の右側には著者名が並び、その記事の掲載号情報があり、以降は文中で言及されるキーワードが解説されていることが分かります。

スクリーンショット_13_02_23_19_10-2

 

この著者としての登場回数とか、誰の記事で誰がよく言及されるとかを調べると面白そうです。というわけで、htmlソースから該当部分をPythonでBeautifulSoupを使って抜き出し、pymongoを使ってmongodbにブッ込みました。

なんでmongodbかというと、あとでheroku上でなんか作ろうかなとか思ってるからです。今回はやりませんが。

スクリーンショット_13_02_23_19_22

 

当該情報はannotationクラスのdiv内にあるので、

# -*- coding: utf-8 -*-
import sys
import codecs
import re
import pymongo
from BeautifulSoup import BeautifulSoup

sys.stdin  = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

R_END_AUTHOR = re.compile(r'『10+1』')

def getNavigableStrings(soup):
  if isinstance(soup, BeautifulSoup.NavigableString):
    if type(soup) not in (BeautifulSoup.Comment,
      BeautifulSoup.Declaration) and soup.strip():
      yield soup
  elif soup.name not in ('script', 'style'):
    for c in soup.contents:
      for g in getNavigableStrings(c):
        yield g

def parseAuthorAndKeyword(num, col):
    filename = 'html/'+str(num)+'.html'
    f = open(filename, 'r')
    data1 = f.read()
    f.close()
    soup = BeautifulSoup(data1)
    enc = soup.originalEncoding
    # print "Encoding : %s" % enc
    # print unicode(soup.prettify(), enc)

    author  = []
    keyword = []
    authorFlag = True
    # author, keyword
    for table in soup('div', {'class':'annotation'}):
        # get content name
        name = table.findAll('h5')[0].next.next.string.encode('utf-8')
        if authorFlag:
            if R_END_AUTHOR.match(name):
                authorFlag = False
                continue
            splitted = name.split('(')
            author.append(splitted[0])
        else:
            splitted = name.split('(')
            keyword.append(splitted[0])

    # article
    # locked
    articleFlag = -1
    # limited
    for article in soup('div', {'class':'articleLimitedUnitBox'}):
        articleFlag = 0
    # published
    for article in soup('div', {'class':'articleUnitBox'}):
        articleFlag = 1

    doc = { 'author': author, 'keyword': keyword, \
            'number': num, 'published': articleFlag }
    col.insert(doc)

def main():
    conn = pymongo.Connection()
    db = conn['10+1']
    col = db['authors']

    for i in range(1, 1550):
        print i
        parseAuthorAndKeyword(i, col)

    conn.disconnect()

if __name__ == '__main__':
    main()

こんな具合で抜き出します。

関数parseAuthorAndKeywordで抜き出しを行なっています。BeautifulSoupで当該タグまで下り、table.findAll(‘h5’)[0].next.next.string.encode(‘utf-8’)で抜き出しています。名前にリンクが付いている人と付いてない人とがいたので、どっちでもいけるようちょっと汚くなっています。

それと、だいたい名前は「磯崎新(イソザキ・アラタ)」みたいな形になってて、カッコの中はいらないので、splitted = name.split(‘(’)でカッコの始まりで分割し、splitted[0]で前半部分だけ保存してます。

pymongoについてはググれば分かります。

次は、著者として登場するすべての人物について、その人の記事中であるキーワードが右に解説されていたら著者→キーワードとなる辺を持つようなグラフ(隣接辺リスト)をつくります。辺の重みはその記事数です。

さて、いよいよ可視化です。可視化にはcytoscapeを使おうと思ってやってみたんですが、web上で見るのに不便だなと思ったので、もうちょっとイケてるGephiを使って、web上での閲覧はgexf-jsという素晴らしいライブラリを使わせてもらうことにしました。

cytoscapeで読み込む隣接辺リストはsource, target, weightを一行とするcsvファイルでいいのですが(この辺は井庭崇先生のブログがわかりやすい)、Gephiの場合はsource, targetを一行とするcsvファイルです。

重みについてはすべての辺の重みを1として、同じsource, targetの辺の数がその辺の重みとなります。

# -*- coding: utf-8 -*-
import sys
import codecs
import pymongo

sys.stdin  = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

convert_tuples = [
 (u'\u00a6',u'\u007c'),#broken bar=>vertical bar
 (u'\u2014',u'\u2015'),#horizontal bar=>em dash
 (u'\u2225',u'\u2016'),#parallel to=>double vertical line
 (u'\uff0d',u'\u2212'),#minus sign=>fullwidth hyphen minus
 (u'\uff5e',u'\u301c'),#fullwidth tilde=>wave dash
 (u'\uffe0',u'\u00a2'),#fullwidth cent sign=>cent sign
 (u'\uffe1',u'\u00a3'),#fullwidth pound sign=>pound sign
 (u'\uffe2',u'\u00ac'),#fullwidth not sign=>not sign
]

def unsafe2safe(string):
    for unsafe, safe in convert_tuples:
        string = string.replace(unsafe, safe)
    return string

def frequencyOfItemsInKey(col, key):
    """
    return dic of all items and its frequency appeared in key.
    {key1:val1, key2:val2, ...}
    """
    dic = {}
    # for all documents
    for doc in col.find():
        # for each key
        for i in  range(len(doc[key])):
            buff = {doc[key][i]: \
                    col.find({key: doc[key][i]}).count()};
            dic.update(buff)

    return dic

def frequencyOfSecondInFirst(col, firstKey, first, secondKey):
    """
    return frequency of keyword in author's text.
    {first: {second1:val1, second2:val1, ...}}
    """
    buff = {}
    # for all documents of which firstKey is first
    for doc in col.find({firstKey:first}):
        # for each secondKey
        for i in  range(len(doc[secondKey])):
            buff2 = {doc[secondKey][i]: \
                     col.find({firstKey: first, \
                               secondKey: doc[secondKey][i]}).count()
                    }
            buff.update(buff2)
    dic = {first: buff}

    return dic

def writeDicRankToTSV(dic, filename):
    """write dic to TSV as a ranking of the value."""
    f = codecs.open(filename, 'w', 'utf-8')
    for key, val in sorted(dic.items(), key=lambda x:x[1], reverse=True):
        if key == '\n': continue
        buff = str(key)+'\t'+str(val)+'\n'
        f.write(buff)
    f.close()

def makeASetOfKey(col, key):
    """make a key set."""
    keys = []
    for doc in col.find():
        for i in  range(len(doc[key])):
            keys.append(doc[key][i])
    keys = set(keys)
    return keys

def writeNetworkAsEdgeList(network, filename):
    """for cytoscape."""
    f = codecs.open(filename, 'w', 'shift-jis')
    for person in network.keys():
        for keyword in network[person].keys():
            buff = person+','+ \
                   keyword+','+str(network[person][keyword])+'\n'
            buff = unsafe2safe(buff)
            f.write(buff)
    f.close()

def writeNetworkAsEdgeListGephi(network, filename):
    """for gephi."""
    f = codecs.open(filename, 'w', 'utf-8')
    for person in network.keys():
        for keyword in network[person].keys():
            # repeat for edge weight
            for i in range(network[person][keyword]):
                buff = person+','+keyword+'\n'
                f.write(buff)
    f.close()

def main():
    # connect with mongodb
    conn = pymongo.Connection()
    db = conn['10+1']
    col = db['authors']

    # make ranking of authors and keywords
    dic = frequencyOfItemsInKey(col, 'author')
    writeDicRankToTSV(dic, 'authorRank.txt')
    dic = frequencyOfItemsInKey(col, 'keyword')
    writeDicRankToTSV(dic, 'keywordRank.txt')

    # make a reference network
    authors = makeASetOfKey(col, 'author')
    dic = {}
    # for all authors
    for person in authors:
        buff = frequencyOfSecondInFirst(col, 'author', person, 'keyword')
        dic.update(buff)
    writeNetworkAsEdgeList(dic, 'referenceNetwork.csv')
    writeNetworkAsEdgeListGephi(dic, 'referenceNetworkForGephi.csv')

    # basic information
    numPages = col.count()
    numLocked = col.find({'published': -1}).count()
    print u'全記事数', numPages - numLocked
    print u'未公開記事数', col.find({'published': 0}).count()
    print u'公開済み記事数', col.find({'published': 1}).count()

    # disconnect with mongodb
    conn.disconnect()

if __name__ == '__main__':
    main()

ちなみにcytoscapeはshift-jisでないといけないので、この記事のやり方でutf-8から変換しています。Gephiはutf-8でいける。

さて、まずはそのまんま可視化した場合(画像クリックで開きます)。

スクリーンショット_13_02_23_18_54

 

  • 言及されてる回数が多いほどノードが大きく、
  • 言及数が多い人(多くのキーワードに言及している人)ほど赤く、
  • 文字の大きさは両方を合わせた数が多いほど大きくなっています

あとで言いますが言及数は記事数が多いほど多いですね当然。

では次は次数が1(言及、被言及合わせて1回だけ)のノードを排除し、その上で辺の重みが2以下の辺を排除したグラフです。いわばテンプラスワン批評空間における特権階級たちです。

スクリーンショット_13_02_23_18_53

 

では記事投稿数ランキング上位21人(同率がいるため)です。

五十嵐太郎 72
田中純 55
日埜直彦 47
八束はじめ 38
塚本由晴 34
上野俊哉 32
中谷礼仁 29
篠儀直子 29
内田隆三 29
今村創平 27
吉村靖孝 26
南泰裕 23
石川初 19
磯崎新 19
椹木野衣 18
多木浩二 17
大島哲蔵 16
今井公太郎 16
毛利嘉孝 15
西沢大良 14
貝島桃代 14

椹木野衣さん多いんですね。意外でした。それでは被言及ランキング上位21人です。

ル・コルビュジエ 114
ポストモダン 92
磯崎新 80
レム・コールハース 64
伊東豊雄 54
丹下健三 50
INAX出版 48
ヴァルター・ベンヤミン 47
ルネサンス 47
パサージュ 35
安藤忠雄 35
藤森照信 35
バウハウス 34
原広司 33
メタボリズム 32
現代住宅研究 31
アルゴリズム 30
アーキグラム 29
ミース・ファン・デル・ローエ 28
コーリン・ロウ 28
篠原一男 28

コルビュジェ先生はさすがですね。テンプラスワンがポストモダンの建築批評誌であることがよく分かります。INAX出版はやりよるなという感じですかね。

これからはもうちょっと面白い特徴を見つけてみようと思います。

あと本文抽出もできるのでMeCabを使ってなんかしてみようと思います。まずは多分ナイーブベイズを試すと思われます。