arc の日記

はてなダイアリーから引っ越してきました。さらに新しい記事は https://junkato.jp/ja/blog/ で書いています。

PhotoshopでJavaScriptを使ってまとめてRAW現像する

正確には、RAW現像したことのある(*.xmpファイルがある)写真がたくさんあって、これを全部、WebアルバムにアップロードするためのJPEG画像として出力したかったのです。

PhotoshopをはじめとするAdobe製品はJavaScriptスクリプトが書けるようなAPIを用意してくれているので、簡単にできました。

app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
app.displayDialogs = DialogModes.NO;

var jpegOptions = new JPEGSaveOptions();
jpegOptions.embedColorProfile = true;
jpegOptions.formatOptions = FormatOptions.STANDARDBASELINE;
jpegOptions.matte = MatteType.NONE;
jpegOptions.quality = 12;

var inputFolder = new Folder("C:\\Users\\arc\\Pictures\\2012-06 Redmond, US\\");
var inputFiles = inputFolder.getFiles("*.ARW");

for (var i = 0; i < inputFiles.length; i ++) {
	var inputFile = inputFiles[i];

	// Resize if needed
	var inputDocument = app.open(inputFile);
	if (inputDocument.width.value > inputDocument.height.value) {
		if (inputDocument.width.value > 2048)
			inputDocument.resizeImage(
				2048, 2048 * inputDocument.height.value / inputDocument.width.value);
	} else {
		if (inputDocument.height.value > 2048)
			inputDocument.resizeImage(
				2048 * inputDocument.width.value / inputDocument.height.value, 2048);
	}
    
	// Save
	var inputFileName = inputFile.fsName;
	var outputFileName = inputFileName.substr(0, inputFileName.length - 4) + ".jpg";
	inputDocument.saveAs(new File(outputFileName), jpegOptions, true);
	inputDocument.close(SaveOptions.DONOTSAVECHANGES);
}

フォルダを指定して、そこから対象となるファイル一覧を取得して、個々のRAWファイルをPhotoshopで開いて、もしサイズが大きければ*1縮小して、拡張子を.jpgに変えて保存しています。RAWにGPSの情報が含まれていたらそれもうまいことJPEGEXIFに埋め込んでくれるのでとても便利です。

このスクリプトで出力したJPEG画像は加藤 淳のポートフォリオ | junkato.jpにアップロードしてあります。

*1:PicasaFacebookも今のところ長辺2048ピクセル以下を推奨しています

ワークショップ(WISS2011, 天橋立)

http://www.ustream.tv/recorded/18873679

一昨年に続き去年も「インタラクティブシステムとソフトウェアに関するワークショップ」WISSで発表してきました。画像をクリックすると講演動画に飛びます。質疑応答で厳しい質問を何個も受けましたが、そのぶん期待されているものとポジティブに受け取っております!笑顔えがお*1

Sharedo

発表では、人とロボットでTo-doリスト共有できるWebサービス「Sharedo」を紹介しました。発表資料や会場内外でいただいた質疑応答の概要などがWISS2011特設サイトにあります。また、α版サービスをhttp://www.sharedo.info/で試験公開しています。Twitterアカウントを使ってログインして使ってみてください。

前年の研究との関連

研究紹介については特設サイトの資料に譲るとして、ここではもうちょっと大きな視点で前年の研究「Matereal」との関連を書いておきます。二つの研究を通して僕が自覚的に取り組んできたテーマは「実世界プログラミング」です。Human-Computer Interactionやロボティクスを専門にしていない人*2に「プログラミング」というとどうしてもソフトウェアやロジックの話が前面に出てきて、目的(アプリケーション)がデジタルな情報を操作することに終始しがちです。

でも僕は、人々の実生活がもっとプログラミングの恩恵に与れるようになったらいいな、と思って研究をしています。これは別に、いわゆるロボットに限った話ではありません。例えば我が家では、家の電気を点けたり消したり掃除ロボットに適当な時間に掃除をさせたり、といったことがスマートフォンからできるようになっています。

日常的に使うちょっとしたものを日曜大工する人というのは昔からいますが、僕はこれをプログラミングにも拡張したいのです。そんな日曜プログラミングの道具になれば、と思って作ったのがツールキットのMaterealであり、それをさらに、狭義のプログラミングが要らないアプリケーションにまで落とし込んだのがSharedoでした。(SharedoはMaterealを使って実装されています。)

Human Actuation

さて、僕が修士から博士にかけてこのテーマをやってきて、途中で気づいてテーマに織り込み始めたことが一つあります。それは、人とロボットの区別をあえてしないでみることです。この二つがいろんな意味で違うのは当たり前なんですが、僕が言いたいのは、それらを同じように扱ってみることでいろいろ分かることがあるだろう、ということです。昔、映画監督の押井守氏に取材したとき「機械が何処まで人間に近づけるか、それよりも、人間は何処まで機械に近いものなのか。それを明らかにする方が遥かに面白いと思う」と仰っていたのを大変面白く感じたものですが、これが今更響いてくるとは、自分でも驚きました。

例えばMaterealはnew 持ってこい(new おひるごはん(), 俺.getLocation() /* おなかへった */).assign(だれでもいいから).start();のようなプログラムを書くことで実際に人に対して指示を出す*3ことができます。Sharedoではもっと直接的にこのテーマを扱っていて、人に対して指示を出す方法とロボットに対して指示を出す方法が「To-doリストにタスクを追加する」だけで、一緒です。

人とロボットの区別をしないツールキットを作り、誰でも実用できるWebアプリケーションを作って、ユーザスタディをやってみたりいろんな人に話をしてみたところ、興味深かったのは、けっこうみんな頭を使わないでロボットみたいにやり過ごせるならそのほうがいいやと思っていたことです。むしろプログラムに指示を出されたい、自分に自由意志が認められないことを愉しめると仰っている方もいました。この問題は、HCIの分野ではHuman Computationと非常に関わりがあります。Human Computationは、もともとOCR(画像から文字を認識する)のような人間が正解を知っている作業について、実際に人にやらせてみて、その結果をもとに機械を賢くしていこうという目的で始まった研究です。

Human Computationにおいては、仕事をやる人間が正しく(サボらず間違えずに)やってちゃんとうれしい報酬を与えるところが研究のミソで、要するに(A)コンピュータに対して(B)アルゴリズムと(C)電力を与えて処理をさせる代わりに(A)人間の(B)認知能力を(C)何らかのインセンティブを与えることによってコンピュータの代替として機能させています。インセンティブを他者との競争などゲームの仕掛けで与えようという議論は最近Gamificationと呼ばれていて、ソーシャルゲームの設計などで盛んに援用されていますね。認知能力を利用したぶんちゃんとお金を支払うというのは、AmazonMechanical TurkKYBERがやっています。とくにMechanical Turkについては、HCIの分野ではTurKitなどのツールキットが研究開発されるほど注目されています。

ちょっと話が逸れましたが、僕は、MaterealやSharedoをHuman Computationの考え方を実世界に持ってきた例だと考えていて、Human Actuationと勝手に呼んでいます。Human Actuationの既存のアプリケーション例としては、Amazon自動化された倉庫が倉庫で働く人に対して箱に詰めるべき商品と箱を渡して箱詰めだけを求めていたり、宅配業者のカーナビシステムが宅配する人に次向かうべき場所をどんどん指示していたり、さまざまな仕事が人に対してロボットのように(自由意志の入る余地があまりない形で)働くことを求めているのが挙げられるでしょうか。同様に、Sharedoは、例えばお手伝いさんに仕事を頼むためのユーザインタフェースとして使えるはずです。情報技術が一方では人々の創造性を伸ばす目的で使われ、一方では資本主義の名の下に、生身の人間の労働力と金銭を効率よく交換するための機構として利用されていることの意味を考えさせられます。Human Computationについては思想地図〈vol.2〉の「ゲームプレイ・ワーキング 新しい労働間とパラレルワールドの誕生」で触れられていたり、あとコンピュータが仕事を奪うという本もありますね。

僕個人としては、創造性至上主義のようなものは信じておらず、先に書いたとおり「頭を使わないでロボットみたいにやり過ごせるならそのほうがいいや」に非常にリアリティを感じています。楽できるならそのほうがいいんです。それでも、ロボットのように働く仕事は「付加価値が少ない」ため一般的には給料がいいわけではありません。それじゃ楽ができないですね。研究としては、この間のバランスの取れたアプリケーションに繋がることができたらいいなと考えています。最近では研究よりアプリケーションのほうが先を行っていることはけっこうあって、ヒントになるのはGigwalkのように位置情報を使って近くの人にちょっとしたこと(Gig)を頼めるサービスなどでしょうか。未来の自分に何かを頼むという意味で、電子手帳のリマインダ機能にも同じ側面がありそうです。

いくつか考えていることはあるのですが、研究としてはまだまだこれからです。Human Actuation以外にも興味を持っていることはあるので、いったいこの先どうなることやら…。

*1:同セッションで一つ手前に講演された辻田さんの研究です。

*2:じゃあHCIのPhysical Computingやロボティクスが扱ってきた「実世界」との違いは何なのか?という話になるわけですが、Physical ComputingはCookyのように人の生活空間の中でデバイスが動き回るといったことを基本的に想定していませんし、一方でロボティクスは(教育用途などを除けば)もう少し複雑なセンシングを用いた自律動作するデバイスを対象にしたものが多く、ちょっと狭義かつテクニカルです。論文を書くときにもこの感触を説明するのに苦労するのですが、現在の技術レベルで言えばそれらの間のことをやろうとしています。将来見返したときには、Physical Computingの文脈でロボットのようなことをやろうとしていた、というアプローチの違いとして認識されるであろう研究だと思っています。最近では、ツールキットのような抽象的なものだと分かってもらいにくい=研究にしづらいということを理解したので、より具体的な部分で差が分かりやすい研究をしようと考えるようになりました。成果は、今年以降、出していければと思います…。

*3:いわゆるロボットに指示を出すときはシリアルポートにコマンドを書き出しますが、人に対して指示を出すときは指示内容をGUIで表示するとか、メールを出しちゃうとか、いろいろなやり方があるはずです。少なくともMaterealがターゲットにしているアプリケーションでロボットがこなすべきタスクはだいたい人でもこなせる程度に高レベルかつ誤差を許容するのでこういうことができます。例えば、書道ロボットに対して出す指示をGUI経由で人に出してみて伝言ゲームのような遊び方をしてみたことがあります。サンプルを見ないで、筆の向きの右回転・左回転・前進などの指示だけで元の形を書き上げるの、難しいですよ!

情報理工学系研究科の入試案内ポスターにまつわる話 (2)

去年情報理工学系研究科の入試案内ポスターに印字された0と1の羅列をビット列と見なして内容を解読するお祭りが開かれましたが、今年も新しいポスターがお目見えして同様のお祭りが開かれました。時系列でざっとまとめると…

関係諸氏のみなさまお疲れさまでした。より詳細な状況が分かるTwitterタイムラインのまとめもどうぞ。解けるまではやかったなー…

URLへのリンクは後日追加するかもしれません。せっかくなので自分で解いてみてね!(コードが書けないけど気になる人は、Twitter#istposter を見ると分かっちゃうかも。)

どうということはないのですが01の羅列からなるテキストをバイナリデータに変換するコードを置いておきます。 test.src にテキストを書き込んでおくと test.gz にgunzip可能なバイナリが出力されます。

続きを読む

核融合発電などに関する冊子SCInote2無償配布開始のお知らせ

目次

SCInote2

東北地方太平洋沖地震以降、東日本大震災の一部として福島第一原発事故の関連ニュースが連日報道されています。MIT原子力理工学部による原子力発電の解説(翻訳)を掲載した当ブログもアクセス数が急激に増加し、原子力発電に関する興味の高まりを実感しました。

しかしながら、原子力発電と一口にいっても、原子力を利用して発電する炉は現在実用化されている「原子力発電」の原子炉だけに留まりません。長らく研究が進められてきた「核融合発電」は、非常にSF心をくすぐるキーワードであり、また、科学的な面のみならず技術的、政治的にも興味深いトピックです。

第二次立花隆ゼミ*1は、核融合に関して2006年から2007年にかけて様々なことを調べ、核融合をテーマにしたシンポジウムを裏方として支援したり、五月祭で各々異なるアプローチで核融合による発電を目指す専門家の先生方が一堂に会する討論会を主催しました。そして、その成果を「SCInote2」という160ページに及ぶ冊子にまとめました。企画の立案から記事の執筆と校正、冊子の装丁、入稿作業に至るまで一貫してゼミ生の手による力作です。

SCInote2は討論会の会場や一部の書店で有償で頒布していましたが、原子力発電に多くの人の関心が集まっている現状を鑑み、このたびPDF形式で無償公開することにしました。

冊子は次に示す通り三部構成になっており、核融合関連の記事は第一部(冊子前半の80ページ強)のみですが、折角なので第二部、第三部もお楽しみいただけると幸いです。

SCInote2の目次

第一部 '07 五月祭特別講演・討論: "核融合のこれまでとこれから" 企画

徹底討論・核融合『点火&アフター / Ignition & After』

第二部: 立花ゼミのこれまでとこれから
  • 立花ゼミのこれまでとこれから
  • これまで
    • 「SCI(サイ)」ができるまで
    • 企画体験記─"INNOCENCEに見る近未来科学"
  • これから
    • 「見聞伝.net」ができるまで
    • 企画体験記─"球形トカマク取材"
第三部 '06 五月祭特別対談報告: "INNOCENCEに見る近未来科学" 企画

オリジナルとコピーのはざまで─ゴーストが宿る場所─

  • 企画の意図
  • 企画のこれまでとこれから
  • 対談採録

SCInote2のダウンロード

表紙の画像か、その下のテキストリンクをクリックすると「核融合のこれまでとこれから」企画のWebページに飛びます。ページ中ほどで再度表紙画像をクリックしてPDFをダウンロード、保存してください。あとはiPadや電子ブックリーダーで閲覧されることをお薦めします。

なお、SCInote2には紙媒体の在庫が相当数あります。(100冊以上はあったような気がしますが未確認です。)死蔵している状態なので、どこか店頭に置かせてもらえるなどありましたら是非 @arcatdmz (Twitter以外の連絡先)までご相談ください。

SCInote2 表紙・裏表紙

SCInote2をダウンロード

*1:SCI(サイ)という「科学の最先端を伝える」Webメディアの運営を活動の柱として活動していたゼミ(≒学生団体)です。

福島第一原発事故関連で日本語の良質な記事・ニュースソース

地震後2週間にわたって、原発事故についての基礎知識と状況解説に興味のある大人の読者を想定して、MIT原子力理工学部の学生有志が書いた原発関連の記事の翻訳を掲載してきました。翻訳と校正は、匿名の貢献者を含む有志で、Google Docs上で協力して行ってきました。この場を借りて、一緒に作業してくださった方々に感謝します。翻訳記事の一覧はMIT原子力理工学部による原子力発電の解説(翻訳)にあります。

さて、時間が経つにつれ、日本語の良質な記事・ニュースソースが増えてきています。それに従い、MIT原子力理工学部の記事翻訳は、そろそろ役目を終えようとしているように思います。そこで、良質なサイトへのリンクと内容の簡単な紹介を以て、当ブログでの翻訳記事掲載をひとまず終わります。個人のTwitterアカウントやブログについては、3月27日時点で関連情報を公開しているものを紹介しています。

なお、僕自身が読者の方々に伝えたかったのは、記事の内容だけでなく、できる範囲で正しい知識を持ってニュースを読み聞きしてリスクを判断してほしいということ(ニュースを読む姿勢)と、Web上の便利なツールを使えば、Geekでない人でも共同作業ができるんだ(CSCWの可能性)ということでした。これは、ごく私的なことですが、立花ゼミで、ゼミ生同士で協力してSCI(サイ)というサイトを作っていた頃からユーザインタフェースを研究している今まで変わっていない思いです。伝わったらいいなぁ、と思います。

今回の翻訳・校正作業で使ったGoogleドキュメントはMIT NSEというコレクションにまとまっています。注意書きのテンプレートもあるので、他の方が似たような作業をする場合には参考にしていただけると思います。

基礎知識

最新情報と生データ

状況解説

リンク集

MIT原子力理工学部による「臨界」の解説

本記事は8つ目の翻訳記事で、元記事は日本時間19日午前6時52分に公開されたものです。前7つと同様にGoogle Docs上で作業が行われました。下訳を作成された @masae_i さん、校正してくださった toshiki.saito さん、 @LunarModule7 さん、ありがとうございます。

注意: この記事は福島第一原発の最新の状態を解説したものではありません。福島第一原発事故関連で日本語の良質な記事・ニュースソースをご覧ください。また、この記事のほかにも様々な記事が翻訳済みです。翻訳記事の一覧はMIT原子力理工学部による原子力発電の解説(翻訳)にあります。

目次

「臨界」とは

臨界再臨界という言葉が、広く報道で使われています。臨界というのは原子力分野の専門用語で、システム内における中性子のバランスを表すものです。臨界前というのは、中性子の減少率が、中性子の生成率よりも大きいシステムを表します。その状態では、中性子の総数(中性子の数)が時間が経つにつれて減少します。超臨界というのは、中性子の生成率が、中性子の減少率よりも大きいシステムを表します。その状態では、中性子の総数が増加します。中性子の総数が一定に保たれるとき、これは生成率と減少率の間に完璧なバランスが存在することを意味します。この状態を、原子力システムが「臨界である」と言います。あるシステムの臨界点は、核分裂やその他の原因によって中性子が生成される割合と、炉心に吸収されたり炉心から放出されたりして中性子が失われる割合を、比較して算出されます。原子炉は、その臨界点、つまり中性子のバランスをコントロールする装置なのです。

原子炉の出力は、この中性子の総数に正比例して決まります。システムの中に多くの中性子があればあるほど、より多くの核分裂が起こり、より大きなエネルギーを生成します。原子炉の起動時には、失われる中性子よりも生成される中性子が多く、中性子の総数がゆっくり増加するように調整し、原子炉が超臨界の状態になるようにします。これによって、中性子の総数が増加し、より大きな出力が生まれます。目標のレベルに到達したとき、中性子の総数と出力を一定に保つため、原子炉は臨界状態に置かれます。最終的に原子炉を停止する間には、中性子の総数と出力が減少するように、原子炉は臨界前の状態に置かれます。それゆえ、原子炉が「臨界に達した」と言われるときには、実は原子炉が安定し一定の出力を維持していることを意味します。

通常の原子力発電が行われている間、原子炉は臨界を保っています。他のシステム、例えば使用済み燃料プールでは、臨界を防ぐようなメカニズムが用意されています。もしそのようなシステムが臨界に到達したままである場合、それは再臨界と呼ばれます。確実に再臨界が起きないようにするため、中性子を吸収するホウ素や他の物質(訳注:中性子吸収材)が利用されています。中性子吸収剤が加えられることによって中性子の減少率が大きく向上し、システムを確実に臨界前に保つのです。

(日本のBWRのように)軽水炉のほとんどの型では、原子炉を冷やすためだけではなく、中性子の速度を落とすためにも、(訳注:減速材として)水が使われます。これらのシステムでは、より速度の遅い中性子(訳注:熱中性子核分裂反応の大部分を担います。それゆえ、もし水が蒸発して失われた場合、中性子は水があるときほど速度を落とさず、核分裂反応の可能性と出力が減少し、原子力システムを臨界前の状態にするのです。

もし冷却状態にないBWR原子炉または使用済み燃料プールで、水が加熱されて蒸発すれば、水の温度上昇と、その結果生じる水の蒸発によって、システムは臨界前の状態に置かれやすくなります。これらのシステムの中、例えば原子炉制御棒にも、莫大な量のホウ素が含まれており、また使用済み燃料プールではホウ素が様々なかたちで利用されています。加えて、使用済み燃料プールを支える鉄構造はときにホウ酸化鉄で作られている場合があり、それも莫大な量のホウ素を含んでいます。もし仮に核燃料が溶け出したとしても、(流れ込む先の)新たな幾何学的配置は中性子を減速させるのに適しておらず、水の再注入が必要な状態だとしても、再臨界は起きにくいでしょう。(訳注:まとめると、中性子吸収剤が周辺に豊富に存在すること、および、臨界に達するために必要な減速材としてはたらく水が、炉心溶融するような温度では通常周辺に存在しえないことから、再臨界の可能性は低いと説明しています。)