人工知能で10億円ゲットする完全犯罪マニュアルを読んだ
得体のしれない犯罪者と落ちぶれたAIエンジニアが犯罪をしていく話。
バディモノのクライムアクションという、それだけで面白いに決まってるじゃんという作品。
SFにしては実在の人工知能の技術やGitHubなどの固有名詞、イニシャルトークではあるがM社だのG社だのが出てくる。
SFにこうした時事性があるテクノロジーを出すと、SFでありなら現実に取り残されるという事が起き、個人的に好きではない。
しかし、この作品においてはこの部分が鍵になっている。
主人公はエンジニアであり、たとえ犯罪計画であっても、技術的な側面から口をはさまずにはいられない性格をしている。
この小説手に取る人間はおそらく、人工知能に関心があり、主人公と同じように、技術的な側面の話をされたら口をはさまずにはいられないだろう。
こうして、読者は主人公に対して強制的に没入させられる。
この部分でこの小説には、あえて現実のテクノロジーを出す意味がある。
AI関連の技術は陳腐化しやすい。
小説に出てくるモデルの名前が、懐かしい遺物になってしまう前に読まなくては、ただの時代遅れの時事ネタを使って滑っている小説になってしまう。
そういう意味では賞味期限がついている小説なので、早めに読んでもらいたい。
ユニコーン企業のひみつを読んだ
読んだ。
基本的にはSpotifyのブログで昔言われていたことであり、逆に、ブログと言ってることが変わっていたらそれはそれで嫌なのでよいと思う。
Spotifyのブログを舐めるように読んでた人以外は読んでみると面白と思う。
個人的には9章「文化によって強くなる」の国による文化の違いが、これまで抱えていた疑問に対する答えを得られた気がしてよかった。
2013年くらいにサーバントリーダーシップが流行り始めたと思う。
そして2~3年たつとサーバントリーダーシップに対する批判が出てくる。
この時にはアメリカ人は言い出すのも早ければ見切るのも早いっすねくらいに思っていたのだが、この章を読んで、アメリカ人はサーバントリーダーシップなんてまじめにやっていなかったのだなと納得した。
本書ではスエーデンには合議による意思決定を行う文化が根付いており、ボトムアップの意思決定が可能である。アメリカはトップダウンの意思決定を好むためSpotifyの文化と相いれない事もあったみたいなことが書かれている。
言われてみればイメージ通りのアメリカ人である。個人主義であり、自分のキャリアを大切にする。
部下もリーダーに求める性質としてビジョナリーやそんなものを求めてるだろう。
そんなアメリカ人がサーバントリーダーシップなんて言い出す方が異常である。
今になって思えば、あのサーバントリーダーに対する期待感と急に飽きた感じは、君たち、そんなにまじめにやらなかったでしょ?という感じをうける。
Spotifyでこうしたサーバントリーダーシップが機能するための土壌が整ってるのが、スエーデンはそういう文化なんで…っていう理由なのもずるいなと思った。
おそらく日本人がシリコンバレーではこうなんでって言われれば納得してしまうような、アメリカ人にとっての(アメリカという国の歴史の浅さに根付いた)コンプレックスを刺激されて、アメリカ人も無条件に納得しているに違いない。
まぁ、そんな、当時サーバントリーダーシップに対して思っていた、君ら飽きるのちょっと早くない?という疑問が解消したのが良かった。
行政コードのXMLファイル
国土交通省のGIS情報(https://nlftp.mlit.go.jp/index.html)を使用する際、行政コードと行政地区名の対応が欲しくなる。
この対応表は国土交通省のページからは以下に対してリンクが張られている。
https://nlftp.mlit.go.jp/ksj/jpgis/codelist/AdminAreaCd.html
できればXMLなどのプログラムから読み込みやすいフォーマットでほしい。
なかなか見つからないので、適当に拡張子をxmlに変更したところ、XML版が存在した。
tsxを使ってreact-leafletのGeoJSONを使う
tsxを使わなければ問題は起きないと思います。
データ
geo jsonは以下から取得しました。
やったこと
単純に以下のようにすると動かないです。
import topo_data from './res/tokyo_topo.json'; // 中略 export const GeoJSONLayer = (props: Props) => { return ( <GeoJSON data={props.data} /> ); };
問題自体に関してはissueのほうが詳しいです。
試しに以下を
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b5bfba2994c91a099cd5bcfd984f6c4c39228e5/types/geojson/index.d.ts#L58
以下のように変更すると、正常にGeoJSONのレイヤーが表示されます。
type: GeoJsonTypes|string;
Widening Literal Typesが原因のようです。
どのみちgeo jsonでは重すぎるのでtopojsonにしたいので、以下のようにしました。
export const TopoJSONLayer = (props: Props) => { return ( <MapConsumer> {(map) => { const layer = L.geoJSON().addTo(map); if (props.data.type != "Topology") { return null; } for (const key in props.data.objects) { if (!props.data.objects.hasOwnProperty(key)) { continue; } const geojson: GeoJsonObject = topojson.feature(props.data, props.data.objects[key]); layer.addData(geojson); } return null; }} </MapConsumer> ); };
データ解析のための統計モデリング入門をJuliaでやっていく(3.5)
3.5
using DataFrames using CSV using GLM using StatsPlots resource_dir = normpath(joinpath(@__FILE__, "..", "..", "resources")) data_path = joinpath(resource_dir, "data3a.csv") data = DataFrame(CSV.File(data_path)) fit_f = glm(@formula(y ~ f), data, Poisson(), LogLink()) println(fit_f) println(loglikelihood(fit_f)) fit_all = glm(@formula(y ~ x + f), data, Poisson(), LogLink()) println(fit_all) println(loglikelihood(fit_all))
wavの波形表示
JuliaでWavファイルの波形をプロットする
module openwav using WAV using Formatting using Plots gr() function load_corpus(basedir, speaker) speaker_folder_name = "cmu_us_" * speaker * "_arctic" path = joinpath(basedir, speaker_folder_name, "wav", "arctic_a0001.wav") # load wav wavread(path, format="double") end function xrange(data, framerate) println("length", length(data)) x = range(0, length(data) - 1, step=1) / framerate end # http://www.speech.cs.cmu.edu/cmu_arctic/packed/ function main() resource_dir = normpath(joinpath(@__FILE__, "..", "..", "resources")) arctic_dir = joinpath(resource_dir, "CMU_ARCTIC") y, fs, nbit = load_corpus(arctic_dir, "aew") println(format("sampleing freq: {}", fs)) data = y[:,1] x = xrange(data, fs) p = plot() xlabel!("Time [sec]") ylabel!("Value [-1, 1]") println("x len{}", length(x)) println("y len{}", length(data)) plot!(x, data) png("sample.png") end main() end