社会人大学院を卒業した

社会人大学院

卒業したら感想を書こうと思いつつ数年が経っていた。
自分は金が無くて大学院諦めたのだが、社会人になって数年経っても、これを引きずっていたのだと思う。 とはいえ、会社辞めてまで大学院に行くか?というほど貯金もない。 そんな中で、社会人大学院の学費が激安であることを知った。

同じタイミングで、Twitterで、「高卒だけど自分で稼いで大学院に行って今研究者してます!」 といったツイートを見て、衝撃を受けたのを覚えている。
失礼ながら、俺はこいつより恵まれてるのに言い訳しとるな…と。 そんな感じで社会人大学院に行った。

行った感想として、割と良かった、もっとカジュアルにいろんな人が言ってほしいという思いになったので この文を書いている。

入試

小論と面接であった。
テーマはDX。ニュースサイトの記事を元に小論文を書く。 小論を書くのは数年ぶりなので、小論の書き方的な本を数冊読んで挑んだ。
入試後の感想としては、多分落ちる人はいない。
逆に言えば、理系だろうが文系だろう何だろうが合格してしまう。
一方で授業はそんなの関係ねぇという先生と、まぁ、しょうがないよねという先生に分かれ、 そんなの関係ねぇという先生の講義を取ると悲しい感じになる。 プログラミング未経験者がLispだかPrologだか忘れたが、それの処理系を書くような講義を取ってしまい爆死していた。

かかった費用

100万いっていない気がする。
2年で50万はオッサンの趣味としては妥当なんじゃないだろうか。
都立の大学院大学に行ったのだが、都民割や、就労支援の補助金などいろいろな補助があった。

良かった講義

テクニカルライティングの授業がとてもよかった。 テクニカルライティングというか、実質日本語の授業である。
この講義だけでも履修した方が良いと思うくらい薦められる。
同じ受講生の小論文を読むと、日本語の文法に従っておらず、文として成立していなものがほとんどであった。 自分もそうだったと思う。 この講義後、日本語にうるさいオジサンと化すくらい、日本語に気をつけるようになった。

卒展

卒論ではなく、卒業制作をやるタイプであった。 ちょっと驚いたのが、製作費は大体持ち出しである。 卒業制作系はどこの大学も大体持ち出しらしい。 大学時代は学費以外は払ったことが無いため驚いた。
望めば論文発表も可能である。 査読なしであるが、紀要に載る何かは書いた。

感想

言ってよかったと思う。 特にコネが出来たり、仕事に役立ったり見たいなことは期待できないが、 それでも価値があると思う。 そもそも、いい年したオッサンがモノを教わる立場に立てるだけでも価値があるのではないか。

人工知能で10億円ゲットする完全犯罪マニュアルを読んだ

得体のしれない犯罪者と落ちぶれたAIエンジニアが犯罪をしていく話。
バディモノのクライムアクションという、それだけで面白いに決まってるじゃんという作品。

SFにしては実在の人工知能の技術やGitHubなどの固有名詞、イニシャルトークではあるがM社だのG社だのが出てくる。
SFにこうした時事性があるテクノロジーを出すと、SFでありなら現実に取り残されるという事が起き、個人的に好きではない。
しかし、この作品においてはこの部分が鍵になっている。
主人公はエンジニアであり、たとえ犯罪計画であっても、技術的な側面から口をはさまずにはいられない性格をしている。
この小説手に取る人間はおそらく、人工知能に関心があり、主人公と同じように、技術的な側面の話をされたら口をはさまずにはいられないだろう。
こうして、読者は主人公に対して強制的に没入させられる。
この部分でこの小説には、あえて現実のテクノロジーを出す意味がある。

AI関連の技術は陳腐化しやすい。
小説に出てくるモデルの名前が、懐かしい遺物になってしまう前に読まなくては、ただの時代遅れの時事ネタを使って滑っている小説になってしまう。
そういう意味では賞味期限がついている小説なので、早めに読んでもらいたい。

efをやった

Pros

  • 演出がすごい。一枚絵何枚使ってるんだろう。
  • 美少女ゲームにありがちな、選択されなかったヒロインが救われないという展開がなかった。
  • 火村が、今頃になってあの男の気持ちが理解できたという台詞がすごくよかった。

Cons

  • 音羽が2つあることに意味を見いだせなかった。明かされた時も、あぁ、そう…という感じ。
  • 宮村優子が存在している事に対して、火村の受け入れ方が異常な感じがした。

総じて丁寧に作られている作品だった。
本作は人の意思をテーマに置いているが、安易な燃え展開などではなく、淡々とした日常の中の決断や、その決断が他者に影響を与えていく姿を描いたのは素晴らしいと思う。
それだけに、群像劇のトリである、宮村優子と火村の物語が、エロゲーにありがちな死や奇跡に頼ったものであったのが残念であった。

ユニコーン企業のひみつを読んだ

読んだ。
基本的には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版が存在した。

https://nlftp.mlit.go.jp/ksj/jpgis/codelist/AdminAreaCd.xml

tsxを使ってreact-leafletのGeoJSONを使う

tsxを使わなければ問題は起きないと思います。

データ

geo jsonは以下から取得しました。

nlftp.mlit.go.jp

やったこと

単純に以下のようにすると動かないです。

import topo_data from './res/tokyo_topo.json';
// 中略
export const GeoJSONLayer = (props: Props) => {

    return (
       <GeoJSON data={props.data} />
    );
};

問題自体に関してはissueのほうが詳しいです。

[@types/leaflet] L.geoJSON() requires explicit typing · Issue #37370 · DefinitelyTyped/DefinitelyTyped · GitHub

試しに以下を

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))