読者です 読者をやめる 読者になる 読者になる

Brace, Paren, Semicolon.

受験勉強中

今週の振り返り

ツイートを頼りにざっくりと1週間を振り返る。

受験勉強

受験勉強の方は引き続き。

oimou.hateblo.jp

今週は中だるみしてモチベーション低下してしまっていたけど,あまり気負いすぎず少しずつでも進めていきたい。先は長い。

今はずっと数学をやっているけど,確率・統計のあたりに差し掛かったのでモチベーションが回復した。

息抜きに物理や漢文に少し手を付けてみたりもするけど,まだ一日の大半は数学。

受験勉強以外

受験勉強以外の時間は,とにかく自分の好きなことの勉強に時間を割くことにしている。

ひとつ注意しているのは,理論だけでなくてソフトウェアなりハードウェアなりモノをつくること。自分自身のモチベーション維持も兼ねて。

ツイートを頼りに振り返ってみると,今週は以下のキーワードを掘り下げていたらしい。

  • 生体刺激(筋電刺激)
  • 強化学習
  • バイオ・ケモインフォマティクス
  • R

生体刺激(筋電刺激)

不定期開催の Skype もくもく会がとても良い機会なので,UnlimitedHand に絡めながら周辺技術を色々勉強している。

ずっと食わず嫌いしてた R での可視化にも慣れてきた。やっぱり個人的に興味のあるデータを扱うのが一番楽しい。

強化学習

生体情報で機械学習をやりたくて,MRI 画像のデータセットを集めたりしてたけど,最終的には UnlimitedHand から取れるデータを使って強化学習で遊んでいた。Keras が便利。

ちょうど Cosyne という Computational Neuroscience 系の学会がツイッターで盛り上がっていたのもタイミングが良かった。

バイオ・ケモインフォマティクス

R で学ぶ統計力学とか面白そうなあと思いながらネットサーフィン(死語)してたら,バイオインフォマティクスの薄い本を見つけたのでかじってみた。

しかし R × 物理系の情報が少ないのはなんでかなあ。

R

食わず嫌いの ggplot を克服したのと,dplyr という超絶便利ライブラリを見つけたおかげで,クオリティオブ R ライフがかなり向上した。ちなみに dplyr は「デプリール」と読んでる。

ついでに,積読してあった Python のデータサイエンス本を R で消化した。しかし Python も R も,データサイエンス周りのライブラリは設計思想が似ているのか分からないけど,R でもそれほど違和感無く取り組めた。

映画

La La Land を観た!オススメです。

まとめ

ツイートを頼りに振り返るのは楽(575)

劇場版SAOのARデバイス実装方法を考えてみる ソードアート・オンライン オーディナル・スケール

ソードアート・オンライン オーディナル・スケール を観てきました。

※ ネタバレはちょっとだけあります。気になる方はご注意ください。

sao-movie.net

ということで書きます!

感想としては,非常〜に良かった。SAOはアニメの方は全て鑑賞済みでしたが,今回の映画はさらに近未来っぽさが磨かれていました。アシスタントAIやウェアラブルバイスのある日常がリアリティをもって描かれているなあという印象で,「ディープラーニング」という言葉がうまく一般ナイズされた使われ方だったのも面白かった。まさにマイフェイバリット近未来SFムービーという感じです。

さて,作中に出てきたオーグマー(Augma)というARデバイスが気になったので,帰って酔っ払いながら実装方式を考えてみましたので,軽くまとめてみたいと思います。半分妄想半分リアルという感じです。また,技術的な内容についてガチで詳しい方がいらっしゃいましたら,Twitterなどでツッコミをいただけると泣いて喜びます!!😂

オーグマーとは?

オーグマーは,作中で街の人々が装着している小型のウェアラブルバイス。外見はちょっと大きめのBluetoothヘッドセットみたいな感じですね。名前はおそらくAR(Augmented Reality)の Augmented から来ていると思います。

小型のヘッドホンのような外見の次世代ウェアラブル・マルチデバイス。 … 覚醒状態の人間に視覚・聴覚・触覚情報を送り込むことが可能(一部略)

引用元:AR(拡張現実)型情報端末《オーグマー(Augma)》

オーグマーを装着するとARでLINEのようなメッセージ交換ができたり,今でいうスマホの機能がAR空間上で自然にできるようになっているイメージです。また,オーグマーによってARゲーム「オーディナルスケール」に参加することができ,Ingressよろしく街中がゲーム空間になって遊び放題になったりします。詳しくは映画をご覧くださいw

オーグマーの「覚醒状態の人間に視覚・聴覚・触覚情報を送り込むことが可能」という特徴に非常に興味をそそられて,どうしたら実装できるかを考えてみました。

実装について

さて,オーグマーの実装について以下の2点からまとめてみます。

  1. ハードウェアレイヤ
  2. ソフトウェアレイヤ

1. 実装(ハードウェアレイヤ)

まずメインの機能要件として,「覚醒状態の人間に視覚・聴覚・触覚情報を送り込む」機能があるので,ユーザーの中枢神経系を刺激してやる必要があると思われます。

公式サイトのオーグマーのスケッチには「視線検出カメラ搭載ダイレクトプロジェクトシステム」と書いてあるので,FOVEのように視線を検出しつつ,網膜にプロジェクションする想定のようにも見えます。しかし,中枢神経系を直接刺激しない方式では,視覚・聴覚くらいは刺激できたとしても,全身の触覚を刺激するのは難しそう(一応,作中ではビブスやコントローラのバイブレーションでそれっぽさを出している設定らしい)。

また,オーグマーの実装には高いリアルタイム性が要求されるため,それを満たせるようなハードウェア実装が必要です。

1.1. 脳の刺激方式

前述の通り,中枢神経系を刺激する方式を考えます。

生体へ刺激を伝えるためのキャリアはいくつか考えられます。磁力・電気・電波・光・放射線・音波…など。神経細胞を刺激するためには,ひとまず電気的刺激ができると良さそう。個人的には,磁気を用いる手法が良さそうですが,光遺伝学ファンとしては光で実装してほしいですw

磁気

離れた場所へ局所的に電位を発生させる方式として,磁気を用いた方法があります(経頭蓋磁気刺激法 - Wikipedia)。頭部を囲むコイルに電流を流してパルス磁束を発生させると,神経束などの良導体に渦電流を発生させ,神経を刺激します。

この磁気刺激法の空間分解能は,2004年時点で5mm程であったようです。オーディナルスケールの舞台である2026年時点ではより高精度になっているはず…と思いたい!

電波

電波はレンズ効果により局所的な刺激が可能。電位を発生させることはできませんが,ホットスポットと呼ばれる局所的な熱を発生させることができます。

そこで,熱によって神経細胞が活性化するようにあらかじめ脳を改変しておけば,電波の利用も可能になるかも。ちょうど「脳にドライバをインストールしておく」みたいな感じですね。遺伝子編集済みの神経性ウイルスを運び屋として「脳をドライバに感染させる」のが良さそうと思います。ただし熱反応だと即時性や冷却など問題が多いですかね。

光は頭皮や頭蓋骨に遮られて深部に到達できないのが難点ですが,もし到達することができれば,光遺伝学を利用して即時性のある刺激が可能です(光遺伝学 - 脳科学辞典)。これも上述の電波のケースのように,脳にドライバをインストールしておく必要がありますね。あとは,光をどうやって深部に届けるかが大きな課題となります。

1.2. 脳活動の計測

オーグマーは刺激オンリーではなく,同時に脳活動の計測も行っていると思われます。また,(これはネタバレですが)オーグマーはARだけでなくVR機能も備えているので,VRモード時はユーザの運動信号をフックしてゲーム側に流さないといけません。そのためにも脳活動の計測は必須です。

ところが,オーグマーの形状からすると単極誘導の脳波計っぽいので,神経細胞一つ一つの活動までは計測できていないんじゃないかと推測します。もしかしたら,劇中でいう「ディープラーニング」技術を使って,脳波から詳細な脳活動を計測できるようになっているのかもしれませんが…この辺はよく分かりません。

1.3. バッテリー

上で述べた磁気を用いる刺激手法では,MRIと同じ1T程度の磁力を必要とするため,かなりの電力消費が想定されます。オーグマーサイズでこれだけの電力をまかなうのはちょっと無理がありそう。ただし,「経頭蓋磁気刺激法」+「磁気で活性化するような神経細胞改変」を組み合わせれば,生体エネルギーが使えるので少しはバッテリー消費が抑えられるでしょうか(試算はしていません)。

また,作中ではゲームフィールドにドローンが飛んでいましたが,ドローンからオーグマーへの給電というのも技術的にはアリかもしれませんね。

2. 実装(ソフトウェアレイヤ)

繰り返しになりますが,オーグマーの機能は「覚醒状態の人間に視覚・聴覚・触覚情報を送り込む」ですから,ユーザーの中枢神経系を刺激してやる必要があります。

ここで中枢神経系を刺激するというのは,特定部位のニューロンへ強制的に電位を発生させるということです。電位を発生させるには,電気的刺激を与えるか,あるいは神経伝達物質を調整するかどちらかの方式がありえますが,今回は前者の方式を取ります。視覚・聴覚・触覚を刺激する必要があるので,視覚野・聴覚野・運動野をそれぞれ刺激することになるでしょうか。あまり高次の受容野を刺激するのではなく,低次の受容野を刺激してやった方が良さそうです。

2.1. 刺激部位のマッピング

刺激部位の特定にはあらかじめ脳機能マッピングが必要です。

視覚なら視覚野を適当に刺激すれば良いわけではなく,各個人の脳の構造にあわせて刺激部位を調整(キャリブレーション)してあげなければいけません。これには,神経細胞と概念(知覚される映像・音声など)のマッピングが含まれます。つまり「どの部位を刺激すれば特定のモンスターの容姿を想起できるのか?その神経細胞はどこにあるのか?」ということです。

一説では,脳において概念の記憶はシナプスのネットワークに記録されており,また,ニューロンと概念は一対一対応ではなく,複数ニューロンシナプスの結合によって概念が形成されると言われています(スパースコーディング)。これを外部刺激することによって特定の知覚を与えることは非常に困難ではありますが,既にいくつか簡単な事例が出てきています。

個人的にはこの刺激部位のマッピングが一番興味深いポイントでした。たぶん,オーグマーを買ったらまずキャリブレーションしないといけないんだと思います。映画を観ている最中も「あんなに激しく動いたらせっかくキャリブレーションした刺激部位がズレてまう!!」と変なところで手に汗握っていました。

2.2. 知覚のフレームレート

外部刺激による知覚は継続的に与えていかなければ,ARのリアル感に大きく影響します。せっかくARゲームを楽しんでいるのに,途中で外部刺激が途切れてチラチラとリアルワールドが見えたりしてほしくないですよね。とはいえ,ユーザーが動いてオーグマーが簡単にズレてしまうような環境では,正確な刺激の継続は困難です。できれば正確かつ継続的な刺激はなるべくサボれるようにして,それでいてstableに知覚を与えたい。

そこで,直接対象イメージ(モンスターなど)の知覚を与えるのに加えて,「現実の物体があたかもゲームオブジェクトに見える」ような錯覚を誘導してあげる実装もアリだと思います。これにはプライミング刺激などが応用できるかもしれません。もし知覚と知覚のフレームの間を錯覚によってシームレスに繋ぐことができれば,スムースで「ヌルヌル」したARゲームが楽しめます。例えるなら,アニメーションのフレームとフレームをモーションブラーで補うようなイメージ。

錯覚を利用したフレーム埋めは,現実の空間情報を使うARならではの方式です。ちなみに,本映画の空間情報についての考察はこちらの記事が面白かったのでご紹介しておきます。

niryuu.hatenablog.com

まとめ

あとはゲームサーバからオーグマーへの通信プロトコルなんかも滅茶苦茶気になりますね。作中ではゲームサーバが1台しか無いっぽくて「マジか…大丈夫か…」と思いましたが,その辺のインフラ事情も気になります。多分2022年には「オーディナル・スケールを支える技術」みたいな記事がQiitaに投稿されているはず。

まとまりのない文章になってしまいましたが,あーだこーだ言わずとも面白い映画です。みんなも観に行きましょう!

参考文献

カンデル神経科学

カンデル神経科学

  • 作者: 金澤一郎,宮下保司,Eric R. Kandel,James H. Schwartz,Steven A. Siegelbaum,Thomas M.Jessell,A. J. Hudspeth
  • 出版社/メーカー: メディカルサイエンスインターナショナル
  • 発売日: 2014/04/25
  • メディア: 大型本
  • この商品を含むブログ (1件) を見る

生体物理刺激と生体反応

生体物理刺激と生体反応

受験勉強のようす 2017年2月

少し落ち着いてきたので,受験勉強*1の進捗をまとめてみる。

〜1月中旬

退職後の身の回りの整理を色々やった。このあたりは割愛。

1月下旬:高校数学おさらい

手元にあった参考書で高校数学をおさらい。数学I,A,II,B,III,Cを順番に演習問題を解く形で進めた(若干古い参考書なのでCが入ってる)。

まずは勉強時間を1日8時間と決めて取り組むことにした。長時間の自宅学習でどのくらい集中力が持つか心配だったので,まあとりあえず働いていた頃の勤務時間と同じくらいは集中力が持つだろう…ということで8時間にした。

また1日8時間の内訳は,ポモドーロタイマーを使って30分単位(25分集中+5分休憩)でリズムを作った。時間を区切った方が集中できて良い。

これを週6日(日〜金)。土曜日は家族と休みを合わせられるのでお休みにした。

毎週金曜日は振り返り。その週の進捗をKPTで振り返って,翌週の勉強プランを立てた。

2月上旬〜今:赤チャート

大学入学時期の感覚をだいたい思い出せたかな…ってなところで,2月上旬から赤チャートに移った。

なお,勉強時間のリズムは1月から変わらず。いや,むしろ1日12時間くらいコンスタントに集中できることが分かって自分でもビックリ。ずっと数学に集中していてコンテキストスイッチが無いからっていうのも大きいかもしれない。

赤チャートの中身はこんな感じ。

f:id:oimou:20170213180855j:plain

基本的に1ページに1つ例題が載っている。解法指針が載っているのはもちろんだけど,解答の文章がしっかり書いてあるのが非常に助かる。証明を書く際の参考になる。

進行ペースとしては,今のところ1日40ページくらいのペースで進んでいる。

ノートの取り方は,だいたいノート1ページに参考書1ページ(=1例題)が対応する感じで書いている。

f:id:oimou:20170213182019j:plain

もうかれこれ何年もノートに証明を書くことなんてなかったけど…久しぶりにノートを取りはじめてみると,行き当たりばったりで見出しスタイルを付けるでなくちゃんとブロックインデントを意識するようになっていて,自分でもビックリした。成長を感じる…。プログラマーの性かもしれない。

また,進め方としては数をこなすよりも理解の定着を優先している。途中で詰まってしまっても,どこまで分かってどこが分からなかったのかを明らかにすることが大事(だと思っている)。

あと,理解しないまま進むのがなんとなく自分の性に合わないというのもある。

難しい問題については,フローチャートを書いて解法を整理するのを心がけるようにしてみた。

f:id:oimou:20170213171205j:plain

フローチャートというツールが効果的かどうかは正直怪しいけど,落ち着いて解法を整理したり,補助的な命題を証明しながら段階的に証明を進めるときには結構役立つし,書いているうちに既知のパターンを思い出したりする。

↓は書籍「いかにして問題をとくか」に書いてある「問題を理解すること」についての一節。

問題がはっきりと心にきざみ込まれて,一寸目を離してもそれを見失ってしまう気づかいがなくなってから出発すべきである。
─ 「いかにして問題をとくか」より引用

素晴らしい言葉。雰囲気で問題を解いている状態にならないように気をつける。

今後

今のところよく引っかかるのがこの問題。意識的に改善したいところ…。

2月は引き続き赤チャートを進める。来月以降は頃合いを見て別科目にシフトする予定。

数学は楽しい!

*1:受験は来年の予定。決して今月受験ではない

ここ1ヶ月くらいで買った本読んだ本

ブログの書き方をすっかり忘れてしまって,最近読んだ本の紹介でお茶を濁すことにしたフレンズなんだね!

読んだ本たち

近代科学の源流 (中公文庫)

近代科学の源流 (中公文庫)

世界史を勉強していたら,中世暗黒時代の科学史が知りたくなったので購入。占星術錬金術のような魔術じみた学問が,いかにして近代科学に繋がっているのか掴めるのが面白かった。登場する人名が多すぎてちょっと読みづらいのが難点。

新しい薬をどう創るか―創薬研究の最前線 (ブルーバックス)

新しい薬をどう創るか―創薬研究の最前線 (ブルーバックス)

薬学について知りたくて購入。創薬のフロンティアの雰囲気が分かったのが一番収穫だった。細胞の膜タンパク質の解析が一大研究分野であるというのが驚き。

カラー図解 薬理学の基本がわかる事典

カラー図解 薬理学の基本がわかる事典

生体内における薬品の作用機序が知りたかったので買った。疾病タイプごとの薬品でページが分かれているのが個人的に分かりやすい。

タンパク質の一生―生命活動の舞台裏 (岩波新書)

タンパク質の一生―生命活動の舞台裏 (岩波新書)

タンパク質が生まれてから死ぬまでのライフサイクルがよく分かる。特にフォールディング関連の情報は,さすがに本書を書くいちばんの動機というだけあって,かなり詳しい。良書だと思う。上の創薬の本も京大著だし,京大はこのへん強いのかな。

いかにして問題をとくか

いかにして問題をとくか

問題を解くときにただなんとなく考えていることが,はっきりと言葉になっていて,読むと頭が整理される感じがする。また,数学の問題解きに限らず,プログラミングやより一般に応用できるアイディアが多い。

ナノフューチャー―21世紀の産業革命

ナノフューチャー―21世紀の産業革命

ちょっと古い本だけど,ナノテクノロジー分野を俯瞰したかったので買ってみた。まだ詳細まで読み込んでいないけど,ナノマシンにつながる学問分野がいろいろ分かって楽しい。そういえばロボット工学なんかも関係あるのか。

ベッドルームで群論を――数学的思考の愉しみ方

ベッドルームで群論を――数学的思考の愉しみ方

この本自体は読み物系だけど,このところ余暇時間で群論を勉強しているので,実際に問題を考えながら読むとすごく面白い。

その他

ちょうど1ヶ月前くらいから隠居生活(?)をしているんだけど,1日のうち8時間を受験勉強に費やして,余暇時間で本を読んだり調べ物をしたりという生活を送っている。土曜日はお休み。けっこうリズムが身についてきた。

カンデル神経科学を読み始めた

カンデル神経科学を読み始めました。

f:id:oimou:20161231004746j:plain

カンデル神経科学

カンデル神経科学

  • 作者: 金澤一郎,宮下保司,Eric R. Kandel,James H. Schwartz,Steven A. Siegelbaum,Thomas M.Jessell,A. J. Hudspeth
  • 出版社/メーカー: メディカルサイエンスインターナショナル
  • 発売日: 2014/04/25
  • メディア: 大型本
  • この商品を含むブログ (1件) を見る

カンデル神経科学(原題:Principles of Neural Science)は,脳科学・神経科学のバイブルとも呼ばれる分厚い本。厚さ6cmくらいあります。

目次は下記の通り。

  1. 概論
  2. 神経細胞の細胞・分子生物学
  3. シナプス伝達
  4. 認知の神経基盤
  5. 知覚
  6. 運動
  7. 無意識下および意識下の神経情報処理
  8. 神経発生と行動の発言
  9. 言語,試行,情動,学習

f:id:oimou:20161231004618j:plain

自分自身,特に神経科学のバックグラウンドがあるわけではありませんが,前職で機械学習の論文を読みながらニューロンの仕組みを勉強したりしていたので,脳や神経の仕組みに関して興味はかなりありました。それでも,神経細胞の働きや視覚の仕組みを少し触る程度だったので,ほとんど初学者も同然。読めば読むほど,脳の仕組みの複雑さに驚かされます。

f:id:oimou:20161230161727j:plain

脳のペーパークラフトのデータが配布されていたので作ってみました。立体的構造を捉えられるので,理解の助けになります。

2017年も引き続き読んでいきます。何かアウトプットできると良いなあ。

エリック・エヴァンスのドメイン駆動設計を読み始めたけど、分からないことが多い

f:id:oimou:20160812011400j:plain

最近、エリック・エヴァンスドメイン駆動設計(通称:DDD本)を読んでいます。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

ネット上で見かける「分厚い」とか「わかりにくい」という意見に圧倒されて、なんとなく食わず嫌いしていたDDD本ですが、ようやく手を付けました。まだ読み終わってはいませんが、考えをまとめるために感想など書いていきたいと思います。

本を読み始める前の知識レベルと立場

ドメイン駆動設計(以後、DDD)」というのは、察するに、きっとドメイン駆動でソフトウェア設計を行うことを指すんでしょう。 ドメイン駆動というのは、つまりソフトウェアが問題解決せんとする対象領域(=ドメイン)の考え方に則って(=駆動)設計を進めるということなんでしょう。

そのくらいの知識レベルで読み始めました。

なお、自分の立場はどちらかというと「開発者」寄りです。

第1部 ドメインモデルを機能させる

ドメインをいかに切り取って設計に落とすかが、ここでのキモになります。

どんなモデルも、現実の何らかの側面や興味の対象となる概念を表している。モデルとは簡素化である。つまり、当面の問題を解決する上で関連する側面を抽象化し、それ以外の詳細を無視することによって行われた、現実に対する1つの解釈なのだ。

ドメインを理解し、ドメインモデルを作り上げ、それをチームメンバでのコミュニケーション基盤とするというのは、通常のソフトウェア開発プロジェクトでも行われていることだと思います。 DDDでは、ドメインモデルの基本的用法を次の通り定めています。

モデルの基本的用法

  1. モデルと設計の核心が相互に形成しあう
  2. モデルは、チームメンバ全員が仕様する言語の基盤である
  3. モデルとは、蒸留された知識である

2はストンと理解できますね。本書では「ユビキタス言語」という用語も登場します。

1はDDDについて話を聞くたびによく耳にする特徴でした。つまり、コードの中でモデルと同じ語彙を使ったり、逆にコードの変更がモデルにフィードバックされたり、といった深い関連が基本的用法として定義されているのです。 これほどモデルと実装が密結合した設計は、相当プログラミングに明るくないとできないんじゃないかと不安になってしまいますが、実際どうなんでしょうね。

3は2と似ているような気もしますが、ドメインを観察し、理解し、切り取って抽出するという蒸留プロセスを経て得られた知識のことを指しています。 こうして得られた知識は、チームがドメインの捉え方の可視化になります。

うーん、でもやっぱり2と3は似ているように感じます。ドメインの捉え方が可視化されたら、それはすなわち言語基盤なのではないか?と思ってしまいます。分かれている理由がまだよくわからない。

第1章 知識をかみ砕く

筆者自身のプリント基板デザインツールの設計についての事例が紹介されています。ドメインエキスパートと開発者が一緒になってモデリングを進めています。

PBCエキスパート1:コンポーネントはチップでなくてもよいのです。 
開発者:では、単に「コンポーネント」と呼んだほうがよいですか?
エキスパート1:我々は「コンポーネントインスタンス」と呼んでいます。同じコンポーネントが多数ある場合もありますから。

ところでこの事例では、ドメインエキスパートと開発者の両者がモデリングについて非常に前向きに議論しているように見受けられます。おそらく、この例ではドメインエキスパート側もプリント基板デザインをしているだけあって、モデリングに向き合うハードルが元々低いんではないでしょうか?

ドメインエキスパートによってはモデリングに向き合うハードルに差があるはずです。それをどうやって乗り越えてもらうか、うまく二人三脚でモデリングに取り組むか、もう少し実践的な話も知りたくなりました。

第2章 コミュニケーションと言語の使い方

ユビキタス言語」と呼ばれるようなチーム共通語彙は非常に大切ですが、残念ながらあまり一般的ではありません。ドメインエキスパートは専門用語を(時にさまざまなニュアンスで)使用し、開発者もまた独自に抽象化したモデルの専門用語を使用します。この通訳コストが非常に高い。高いだけならまだしも、その弊害は「言った言わない問題」「実装漏れ」などの形で現れてくるからまた厄介なんでしょうね。

ドメインエキスパートは、ドメインについての理解を伝えるには使いにくかったり不適切だったりする用語や構造に異議を唱えるべきであり、開発者は、設計を妨害することになるあいまいさや不整合に目を光らせるべきである。

開発者としてのべき論はよく分かります。一方で、ドメインエキスパートに対して異議を唱えてもらうのは具体的にどうすれば良いのでしょうか?まさか「異議を唱えてください」と伝えるだけで達成できるようなことでもない気がするので、もう少し実践的な例が知りたいです。これも後で調べてみよう。

また、この章では「モデルは図ではない」という重要な記述もあります。一通り読み終わったらまとめることにします。

第3章 モデルと実装を結びつける

そのプロジェクトには、ドメインモデルがあった。しかし、動作するソフトウェアの開発を直接支援しないなら、紙に書かれたモデルが何の役に立つというのだろう?

確かに。DDDに際して「ドメイン」「モデル」「コード」という3要素があるとして、その結合度にはいくつかパターンがありそうだと気づきました。

  1. ドメイン」<-(密)->「モデル」<-(疎)->「コード」
  2. ドメイン」<-(疎)->「モデル」<-(密)->「コード」
  3. ドメイン」<-(密)->「モデル」<-(密)->「コード」

1は、あまりにも写実的にドメインモデルを作りすぎてコードに落とせなくなってしまったパターン。
2は、俗にいう「誰が書いても同じコードになる設計書」問題と似たようなパターン。
3は、DDDが理想とするドメインモデルの姿ですね。

でも、そうだとすると気になるのが、そんなに密結合なドメインモデルをどうやって作成・更新していけば良いのか?という現実的な問題です。その答えのひとつがこれでした。

実装を一分の狂いもなくモデルに結びつけるには、通常、オブジェクト指向プログラミングのようなモデリングパラダイムをサポートする、ソフトウェア開発のためのツールと言語が必要である。

…なるほど、だからよくJavaでサンプルコードが紹介されていたりするんですね。しかしツールの支援が必要にせよ、コードが常にモデルに反映される開発環境というのは理想的のように感じます(実際どうなのかはよく分からない)。

まとめ(られない)

まだ第1部をサラッと読んだだけですから、まだまだ分からないことが多いです。特に、実践的な例を考えながら読んでいるとやはり色々ハードルがあるように思えてきます。引き続き読み込んでいきましょう!

最近読んだ本

4月が終わってGWに入りました。4月に買った本を備忘録的にまとめます。

HARD THINGS

HARD THINGS

CEOになる人のための本ですが、日本語序文(現ヤフー小澤氏)では「ひとりでも部下がいる人に特におすすめしたい」と書いてあります。 仕事で物事がうまくいかなくなったとき・ネガティブな出来事に直面したときのリアルな感情が伝わってきます。 リアルすぎて、読んでいて心臓と胃が痛くなってくる。おすすめです。

インフォメーション―情報技術の人類史

インフォメーション―情報技術の人類史

情報技術史の本。とにかく分厚い。厚さが5センチくらいあります。 アルファベットや電信という「テクノロジー」の発明が時空間を超えた情報伝達を可能にし、人類は発展してきました。 トーキングドラム・モールス信号・暗号技術・エントロピー・DNAなどなど。 知的好奇心を滅茶苦茶にかきたてられます。

「全世界史」講義 II近世・近現代編:教養に効く! 人類5000年史

「全世界史」講義 II近世・近現代編:教養に効く! 人類5000年史

世界史。2巻構成のうちの2巻目で、こちらは15世紀から現代までの世界史です。 内容がしっかりと時系列に並んでいて、今読んでいる部分が西暦何年の出来事なのか見失うことがない。素晴らしい構成力だと感じました。 ただしその反面、世界中の出来事が時系列に並んでいるので、ある一国の歴史を追うには向きません。 他の歴史書と一緒に読むのがおすすめです。

「24のキーワード」でまるわかり!  最速で身につく世界史

「24のキーワード」でまるわかり! 最速で身につく世界史

人類の起源から現代までの世界史。 「宗教の話」「芸術と科学の話」などテーマごとに章立てになっているので、ある時代の出来事が後の時代にどう影響したかが分かりやすいです。 ただしこちらは時系列が分かりづらい。自分は上で紹介した全世界史講義と一緒に読みました。

「ふんばろう東日本支援プロジェクト」を立ち上げた西條剛央さんの著書。 東日本大震災において、被災地外からの後方支援の道を切り開いた「ふんばろう」プロジェクトはどのように立ち上がったのか、その経緯が記されています。 今回の熊本地震でも「支援したいのに、できない」という無力感を持っている人が全国にいるように思いますが、きっとこの本にヒントが隠されています。

カラー版 忘れてしまった高校の生物を復習する本

カラー版 忘れてしまった高校の生物を復習する本

高校生物の内容がイラスト付きで分かりやすく紹介されています。 全体をさらっと復習するにはもってこいの本。

言わずと知れたチャート式です。高校時代に戻った気分でノートを取りながら読み進めています。 練習問題がほとんど無いので、ただ写経しているだけだと全然頭に入ってきません。ノートの取り方を試行錯誤しながら進めています。

こちらは練習問題があるので生物よりはいくらか進めやすいです。 できれば実験しながら進めたい。

高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)

高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)

フーリエ変換は大学で学びましたが、最近会社でフーリエ変換の知識が欲しくなるタイミングが何度かあったので、勉強しなおすことにしました。 数学関連の本って、だいたい歴史や実用例の記述が多すぎて数式が少ないかその逆のパターンが結構ありますが、この本は歴史・実用例・数式がちょうど良いバランスだと感じます。

若手社員が育たない。: 「ゆとり世代」以降の人材育成論 (ちくま新書)

若手社員が育たない。: 「ゆとり世代」以降の人材育成論 (ちくま新書)

「若手社員」を社会学的に捉えたときにどうカテゴライズされるのか、というのが分かりやすく書かれています(本の主題ではないと思いますが、、)。 一応自分も若手社員にあたるので、世間の中でどこにカテゴライズされるのか、立ち位置を知っておくには良さそうです。

入社1年目の教科書

入社1年目の教科書

新入社員の皆さんにおすすめの本です。 新入社員のための50個のルールが紹介されていますが、中には「それはちょっと違う気がする、、」と感じるルールもあったりします。 ただ、職場環境によってルールが合うか合わないかは変わってくるので、世間の平均を知るという意味で価値のある本だと思います。

中央銀行が終わる日: ビットコインと通貨の未来 (新潮選書)

中央銀行が終わる日: ビットコインと通貨の未来 (新潮選書)

ビットコインの経済との関わりと技術的解説が書かれています。 ビットコインのことを知るというよりは、ビットコインを絡めて経済学の知識を得られるというところに価値を感じました。 技術的解説のところは、数式がなくて逆に分かりづらい。

【CD3枚付】TOEFLテスト英単語3800 4訂版 (TOEFL(R)大戦略)

【CD3枚付】TOEFLテスト英単語3800 4訂版 (TOEFL(R)大戦略)

TOEFLの英単語集です。学校の授業で使う書籍以外で英語を勉強するのは初めてなので、良いのか悪いのかよく分かりませんが、Amazonで評価が高かったので買いましたw 以前、Germanの同僚に「英語力が不安だからTOEFL受けようと思ってる」って言ったら「It's useless. 意味が伝われば良いんだよ」って言われてしばらく悩みましたが、結局買ってしまいました。今年中に1回テストを受けたい。

それでも飯舘村はそこにある 村出身記者が見つめた故郷の5年

それでも飯舘村はそこにある 村出身記者が見つめた故郷の5年

原発事故をうけて全村避難となった福島県飯舘村を取材した本です。 避難指示の後、最初は避難せずに残っていた人もだんだんと村を去り、手入れされなくなった畑に雑草が伸びていく様子が脳裏に浮かびます。 避難生活を余儀なくされた方々が故郷や国に対してどんな気持ちを抱えているのか、うかがい知ることができるかもしれません。

現代免疫物語beyond 免疫が挑むがんと難病 (ブルーバックス)

現代免疫物語beyond 免疫が挑むがんと難病 (ブルーバックス)

がんの免疫療法にまつわる研究者の挑戦の歴史が描かれています。 免疫細胞が生体内でどのように働くのか分かりやすく解説されているほか、スタインマンをはじめとする免疫学の研究者の歴史が非常に興味深い。 特に、自らががんに冒されながらも研究を続けて、死後にノーベル賞を受賞したスタインマンの研究者魂には感動しました。

いじめとは何か―教室の問題、社会の問題 (中公新書)

いじめとは何か―教室の問題、社会の問題 (中公新書)

学校における「いじめ」の定義や各国の対策が書かれています。 本の中ではいじめられる側の脆弱性(Vulnerability)という言葉が使われていますが、定義によるといじめられる側が先天的・絶対的に脆弱性を持っているのではなく、いじめる側との関係性の中で脆弱性が生み出され、いじめに繋がるということらしいです。 将来子供ができたら気をつけたい。

アサーション入門――自分も相手も大切にする自己表現法 (講談社現代新書)

アサーション入門――自分も相手も大切にする自己表現法 (講談社現代新書)

よく聞く「アサーティブコミュニケーション」についての本です。 入門というだけあって内容の薄さは否めないですが、「アサーティブコミュニケーション」と比較して「非主張的コミュニケーション」「攻撃的コミュニケーション」がどのような心理に繋がっているのかという話は参考になりました。

自分を知るための哲学入門 (ちくま学芸文庫)

自分を知るための哲学入門 (ちくま学芸文庫)

「自分を知る」というテーマを軸に様々な哲学者が紹介されているので、フロイトユングフッサールデカルトなどといった哲学者の思想がどのように関連しているかが分かります。 あと、本筋とは関係ないけど挿絵がシュール。