2018 4/22

『Goならわかるシステムプログラミング』★

 渋川よしき著。最初の一冊には向かないけど、いい。

『消費資本主義!: 見せびらかしの進化心理学』★★★★★

 ジェフリー・ミラー著。素晴らしい。shorebird先生のところで大まかな内容を知っていたにも関わらず詳細も大変面白かった。

『気づきのセラピー―はじめてのゲシュタルト療法』★

 百武正嗣著。『キレる私をやめたい』で知った。若干スピリチュアルというかオカルティックな領域に踏み込んでるような気もして100%首肯はできないが、面白い。

 私にはこれも自己欺瞞の話に見えてくる。自己欺瞞という概念が確立していない時代から経験的に積み重ねられた、自己欺瞞を脱するためのテクニック集、というか。

『夫に死んでほしい妻たち』★

 小林美希著。夫婦で読んだ。

『かさぶたくん』★★★★★

 やぎゅう げんいちろう著。子供がなぜか無茶苦茶ハマって一ヶ月近く毎晩読んでた。

『おへそのひみつ』★★★

 やぎゅう げんいちろう著。こっちもかなり。

『文明の接近』★★★

 エマニュエル・トッド著。識字率やその他のデータから判断すれば、イスラム特殊論には根拠がないという話。なかなか面白い。ビント・アンム婚という概念を初めて知った。

『帝国以後 〔アメリカ・システムの崩壊〕』★

 エマニュエル・トッド著。こちらもそれなりに。アメリカに悲観的すぎ中国やロシアに甘すぎるように思えるが、フランスの左派としては普通なのか。

by 木戸孝紀 tags:

2018 3/9

『ゼロ・トゥ・ワン 君はゼロから何を生み出せるか』★

 ピーター・ティール著、ブレイク・マスターズ著。ちょっと面白い。

『外来種は本当に悪者か?: 新しい野生 THE NEW WILD』★★

 フレッド・ピアス著。前から興味ある人にとっては当たり前というか、もはや藁人形叩きの領域に達しているところもあると思われるが、基本いいと思う。

『経済学をまる裸にする 本当はこんなに面白い』★★★★

 チャールズ・ウィーラン著。原著は2002年と大分前のもののようだが、それだけに奇をてらってなくて、普通に良い経済学啓蒙書。

『命の価値: 規制国家に人間味を』★

 キャス・サンスティーン著。悪くはないけど『シンプルな政府』とかなり重複。普通はそちらだけでいいかも。

『幸福の「資本」論―――あなたの未来を決める「3つの資本」と「8つの人生パターン」』★

 橘玲著。売らんかなで煽り気味だったり、ややいい加減だったりするところも目立つが、ひとつの観点として見ておいてもいいのでは。

『完全無欠の賭け―科学がギャンブルを征服する』★★★

 アダム・クチャルスキー著。ギャンブルの歴史系の本ではもっといい本もあった気がするが、比較的最新の話題も載っているのが良い。

『UNIXという考え方―その設計思想と哲学』★★★

 Mike Gancarz著。2001年の本。そこそこ有名なはずだけどなぜか読んでなかった。流石に今改めてこれはというものはないけど、哲学というだけあって時の流れに耐える普遍的な内容。もっと早く読んでおけばよかった。

『数字の国のミステリー』★★★

 マーカス デュ・ソートイ著。こちらは普通に数学啓蒙書。かなり良いと思う。

by 木戸孝紀 tags:

2018 2/1

『ビジュアル 数学全史――人類誕生前から多次元宇宙まで』★

 クリフォード・ピックオーバー著。「ビジュアル」に関してはもちろんおまけ程度だけど、数学ネタ集としては十分いい。

『残酷すぎる成功法則 9割まちがえる「その常識」を科学する』★★

 エリック・バーカー著。原題”BARKING UP THE WRONG TREE The Surprising Science Behind Why Everything You Know About Success Is (Mostly) Wrong”。邦題は変。エビデンス重視を標榜するものの、単なる自己啓発書まとめにしか見えない。内容がおかしいとは思わないが。

『脳の意識機械の意識』★

 渡辺正峰著。学説史や実験の詳細は面白かったけど。「意識を生みうる最小限の神経系」を特定しようというアプローチは、無意味とは言わないが、なんか違う気がする。そんなの瞬間ごとに違うに決まってるじゃん、と思ってしまうのだが。

『セレンゲティ・ルール――生命はいかに調節されるか』★★

 ショーン・B. キャロル著。まあまあ面白い。内容はshorebird先生にお任せ。

『人類はなぜ肉食をやめられないのか: 250万年の愛と妄想のはてに』★★

 マルタ・ザラスカ著。タイトル通り、菜食主義が正しいという確固たる立場だが、面白いことに最低限の理性はちゃんと保っているように見える。自分は、もはや極限のバイアスをかけても「環境にいいですよ」(せやな)ぐらいしか言えることはないのか、と逆説的に読んだ。

『ZERO BUGS シリコンバレープログラマの教え』★

 ケイト・トンプソン著。プログラマとしてはちゃんと役に立つ話もあるが、ちょっと凝り過ぎというか衒学的というか、肌に合わない感覚も。また、内容以外の部分、装丁・デザイン・翻訳もろもろがいまいち。

『モンテ・クリスト伯爵』★★★

 森山絵凪著。アレクサンドル・デュマ原作。は? いわゆる『巌窟王』のこと? マンガで全一巻? なんかのギャグ? ……いや待て普通にちゃんと全部入ってる(少なくともそう思わせる)しちゃんと面白いじゃねえか! なんだこれ!?

『米中戦争前夜――新旧大国を衝突させる歴史の法則と回避のシナリオ』★

 グレアム・アリソン著。とても重要な話題ではあるけど、過去についてはアネクドータルだし、未来については中学生でも言えそうなことしか言ってないし、微妙。自分には(米国視点で)やや悲観的すぎるように思える。

『娘が可愛すぎるんじゃ〜!』★★

 きくまき著。本当に同じぐらいの子供がいて、リアルタイムで苦労している人が読むより、イヤイヤ期ぐらいは終わったぐらいの人が振り返って読むといいかも。

by 木戸孝紀 tags:

2017 6/25

『Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語』★★★

 石川洋資著、西山勇世著。自分で使うあては当面ないが。Scalaで見覚えある機能が多く、普通にアプリ作るのにこれ使えるなら、いいなあ、という印象。

『自己変革するDNA』★★★

 太田邦史著。ビジネス系自己啓発本と間違われそうなタイトルだが、これは文字通りに生物のDNAの本。結構面白い。

『イノベーションはなぜ途絶えたか ──科学立国日本の危機』★

 山口栄一著。

『失敗の科学 失敗から学習する組織、学習できない組織』★★★★

 マシュー・サイド著。今や見慣れた内容な気もするが、啓蒙書としてまとまり良い。

『ソシオパスの告白』★★★

 M・E・トーマス著。自らソシオパス(サイコパス)を名乗る人の本。この本自体に演技が入っていることは確実であろうことから、引いて読む必要はあるかも知れないが、面白かった。

『戦争にチャンスを与えよ』★★

 エドワード・ルトワック著。放言オヤジの無茶苦茶と言えばそれまでなのだが、ただの無茶苦茶ではなく、真理の一面に考えを向けさせる、価値ある無茶苦茶ではあると思う。

『六三四の剣』★★★★★

 村上もとか著。古いのはどうしようもないけど、これはおもろいわ。

『脳のパフォーマンスを最大まで引き出す 神・時間術』★★★★★

 樺沢紫苑著。個別には知ってることばかりなのだが、著者のYoutube見て「こんな胡散臭いおっさんにできてることが私にできないなんて許せん!」と一念発起して、ついに朝型化に成功したので、悔しいけど星5つ。いわゆるゲーム脳の人に好意的な記述があるのは残念。

by 木戸孝紀 tags:

2016 7/1

『研究不正 – 科学者の捏造、改竄、盗用』★

 黒木登志夫著。流行り(?)もの。いいんじゃない?

『ザ・セカンド・マシン・エイジ』★

 エリック・ブリニョルフソン著、アンドリュー・マカフィー著。ありがちな話題と内容だけど。これも流行りもの。

『記憶に自信のなかった私が世界記憶力選手権で8回優勝した最強のテクニック』★

 ドミニク・オブライエン著。興味深くはあるけど「曲芸」でしかないかもねえ。

『坂の途中の家』★

 角田光代著。妻経由。これも小説として面白いというより女性(母親)心理としてなんか参考になる。

『スターティングGo言語』★★★★

 松尾愛賀著。Go言語けっこう好きになれそう。プログラミング経験者のGo言語最初の一冊としておすすめ。

『競争優位で勝つ統計学 —わずかな差を大きな勝利に変える方法』★

 ジェフリー・マー著。面白そうな話題なのに、やや散漫。

『こじらせない離婚』★★★★

 原口未緒著。女性視点。どこかで著者の記事を見て。離婚する気なくても非常にいいこと書いてる。

『プログラミング言語Go』★★★

 Alan A.A. Donovan著、Brian W. Kernighan著、柴田芳樹訳。訳者のブログ経由。同著者の有名なC本同様、内容はいいけど取っつきにくい雰囲気。『スターティングGo言語』の方を先にどうぞ。

by 木戸孝紀 tags:

2014 5/19

プログラマの数学

 珍しくCodeIQの問題をやってみたので回答期限と同時にここでも発表。コードは以下。

見積もり

 ダブりを考慮しない場合、ありうるプランの総数は、


2^162 ≒ 5.8 * 10^48

 もある。いくらダブりを省けるといっても、可能なプランを全て作って互いに比較していくようなやり方で正解を見つけるのは難しそう。

下準備

 まず計算しやすいように日付を整数に変換しておく。とりあえず1/1からの経過日数で表すことにする。2/29日はデータ中に存在するようなので、うるう年が存在する366日基準で。


1/1 => 0
12/31 => 365

 名前・出国日・帰国日を保持する国クラスを作っておこう。


case class Country(name:String, start:Int, end:Int)

考え方

 可能なチケットが有限である以上、ある日xまでに行ける国の数には上限がある。それを


mc(x)

 と書くことにする。

 問題の条件は12/31までに多くの国に行かせることだから、最終的に求めたいのは、


mc(365)

 であり、1/1の時点ではまだどこにも行ってないので


mc(0) = 0

である。

 一般のmc(x)を求めたい。帰国日がxの国がA, Bの2国あるとしよう、xの日に起こることは、以下の3パターンがありうる。

1.前日からすでに日本にいる
2.A国から帰国する
3.B国から帰国する

1.前日からすでに日本にいる場合

 今日はどこからも帰国していないので「今日までに行ける数」は「昨日までに行けた数」と同じ。


mc(x) = mc(x-1)

2.A国から帰国する場合

 A国に出国する前日(出国日と帰国日が同日になれない条件のため)までに行けた国の数は、


mc(A.start-1)

 と書ける。それにA国に行ってきたので1を足す。


mc(x) = mc(A.start-1) + 1

3.B国から帰国する場合

 2.と同様に、


mc(x) = mc(B.start-1) + 1

 となる。以下同一の帰国日が3ヶ国以上あっても同じ。

 実際のmc(x)はこれらのうち最大の場合の結果なので、擬似コードで書けばこうなる。


mc(x) = max(
	mc(x-1),
	(mc(A.start-1) + 1),
	(mc(B.start-1) + 1)
)

 再帰的なパターンに何か見覚えがある。動的計画法のメモ化再帰にできそうだ。これで最大国数が計算できる。しかも数字の1ではなく国名をリストに追加する計算をすれば、国数だけでなく直接旅程リストが出る。

コード

 本質的な部分は、こうなる。


package com.tkido.ticketgobble

object main extends App {
  import scala.collection.mutable.{Map => MMap}
  
  val countries = Parser("data/tickets.txt")
  val emap = countries.groupBy(_.end)
  
  val memo = MMap[Int, List[Country]]()
  def mc(day:Int) :List[Country] = {
    if(memo.contains(day)){
      memo(day)
    }else{
      val rst =
        if(day < 0)
          List()
        else if(emap.contains(day))
          ( mc(day-1) :: emap(day).map(c => c :: mc(c.start - 1)) ).maxBy(_.size)
        else
          mc(day-1)
      memo(day) = rst
      rst
    }
  }
  val list = mc(365)
  
  println("%d %s".format(list.size, list.map(_.name).sorted.mkString(" ")))

}

 中でも最も重要なのはこの行


( mc(day-1) :: emap(day).map(c => c :: mc(c.start - 1)) ).maxBy(_.size)

 その日が帰国日の国ごとに「その国の出国日の前日の最高のリストにその国を付け加えたリスト」を作成し、さらに前日の最高のリストをそれに追加し、そこからサイズ最大のリストを選択する。

 ちなみにemapは帰国日からその帰国日を持つ国のリストを引けるようにするマップ。

 これで可能な最大の国に行けるリストが出る。最大の国数になるリストは複数ありそうだが、少なくともそのうちどれかになるはず。もう少しいじれば最大の国に行けるリストを全て出すようにもできそうだが、

あなた「もしも、枚数が同じ複数のプランがあった場合にはどうしましょうか」
依頼者「プランはひとつだけ作っていただければ結構です」

 という問題の条件なので、ここまでで十分のはず。

by 木戸孝紀 tags:

2013 10/31

Jenkins実践入門 〜ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

 すでに何ヶ月も前だが、有名なJenkins氏を導入した。

 Scalaで書いているプライベートプロジェクトなどで活躍中。

 他にも、英語脳の過去ログを本体と同じ時間に送ってこさせるとか、ちょっとした用途にも使用中。

 今は単純にcronで回っているニコニコ大百科IME辞書も、次に手を入れる機会があったら、こっちにやらせようか。

おまけ

 おっさんの画像を咲夜さんに変更してくれるプラグインとかないかね?

by 木戸孝紀 tags:

2013 7/31

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

 ちょっと前の話だが、趣味の日曜プログラミングでScalaの並列コレクションを初めて実用する機会があった。

 要素数が多いが、それぞれは独立で、なおかつ一つの処理にかかる時間が長い、という条件にピッタリだということに気づいたので試してみたのだが、元のコードに


.par

 の4文字追加しただけで、速度が5倍(所要時間が1/5)になって、いい意味で狐につままれたような気分だ。ちなみに8コア条件。

 しかし、遊びレベルとはいえこんなにあっさり並行処理が実用できるとは文明の進歩はすごいな。

by 木戸孝紀 tags: