プロクラシスト

今日の寄り道 明日の近道

はてブの理不尽にむせび泣きながら色々な記事の行く末を分析すると、野球選手の人生にそっくりだった

こんにちは!ほけきよです。

二つ前の私の記事は、バズをめちゃくちゃ狙った記事でした。

www.procrasist.com

  • トレンドニュースから派生したネタ
  • 適度な専門性の付与
  • わかりやすさ

個人的には自信を持って三拍子揃った記事だったんです。

おかげさまで、記事をアップして順調にはてブが伸びていきました。 しかしある時、急に伸び悩みました

これが、昨日記事をUPしてからおよそ1日のはてブ数の推移です。 (このグラフの作り方は、こちらの記事をご覧ください)

f:id:imslotter:20170421032146p:plain

みて、この謎の失速!ひどい!無慈悲だ!!理不尽だ!!! まるで翼をもがれたイカロスの様。

理由は単純明快、新着エントリからキックされたことにあります。 将来を期待されすぎて、人気エントリの補欠に入れられた結果こうなりました。

なんかこのままじゃやるせないので、今日ははてブ新着エントリに入った将来有望な記事たちが どの様にして成長し、またどの様にして犠牲になっていくのかを追いたいと思います。

対象データ

今回分析に用いるデータは、 2017年4月20日の午前9時から午後5時までのITカテゴリはてブ新着エントリです。*1 ただし、無限に入れ替わるそれらを全部追っていたら、怒られちゃうので、今回は 初めの20番個の記事+入れ替わった新規30記事の計50記事からデータを集めます。

データの収集は10分おき。その度に下記のデータを収集します。

【収集するデータ】
 ・ はてブの数
 ・ カテゴリ別新着エントリランキング
 ・ カテゴリ別ホッテントリランキング
 ・ 総合新着エントリランキング
 ・ 総合ホッテントリランキング

これらの情報は、↓記事の関数をちょっといじれば簡単に取れるので、チャレンジしてみてください!(宣伝)

www.procrasist.com

導入 : はてブプロ野球

私の中で、収集したデータ5つはそれぞれ、こんな感じの対応があると思っています。

はてブ 野球
はてブ 打撃(投手)成績
カテゴリ別新着エントリ 日本プロ野球2軍
カテゴリ別ホッテントリ 日本プロ野球1軍
総合新着エントリ メジャーAAA
総合ホッテントリ メジャーリーグ

今回は、それぞれ上からグラフとして出力していきます。なので一例を図示するとこんな感じ。

f:id:imslotter:20170421032502p:plain

はてブ数は単純に大きい方がよく、 下4つのグラフは、ランキングなので、低いほど良いということになります。

結果 : 3タイプに分かれる記事

今回、結果を見ていると記事は3タイプに分かれることがわかりました。それぞれどうぞ。

天才型

ホッテントリ入り10位以内に入る猛者たち

若いうちから才能を発揮し、1軍に上がってもバンバン成績を残す天才。 中には超天才もいて、メジャーでも成果をあげるツワモノも。 典型的な"天才型"がこちら。

f:id:imslotter:20170421032618p:plain

凡才型

新着エントリのランクが下がっていき、消えるタイプ

なんとかプロに入るも、2軍でくすぶり、引退宣言をする人たちです。 典型的な"凡才型"がこちら。

f:id:imslotter:20170421032635p:plain

こうなったら、もう諦めるしかなさそうです。。

期待に潰された型

新着エントリのランクをキープするも、
ホッテントリになると30-50位をウロウロ

二軍で鍛え、着々と実績と力をつけている途中なのに、周りからの期待により 1軍に上げられ、そのまま芽が出ず人知れず引退するタイプ。

典型的な"期待に潰された型"がこちら

f:id:imslotter:20170421032651p:plain

私も記事もこのタイプだった。。くやc。

割合と、24時間たった後のはてブ

今回集計した50記事を比べてみましょう。 これは、3つの型の記事数とはてブの平均の集計結果です。

割合 はてブ数平均
(24h後)
天才型 18% 129.2
凡才型 66% 15.8
期待に潰された型 16% 40.9

f:id:imslotter:20170421182015p:plain

なんか、2割8割の法則に似ていますね

考察 : なぜこんな理不尽が起こるのか

順当にいけば、期待されたものは一軍でもメキメキと力をつけられるはずですよね。 なんでこんなことが起こるのか。大きく3つ原因はあると思います。

1軍は時期尚早であった

理不尽の原因はこれです。 まだ時期尚早の10-15はてブになると、強制的に1軍に上げられます。 せめて3時間くらいは育成期間があってもいいのでは… 10-15なんて、1軍だとゴミじゃないか…

その程度の成績で上げられ、結局芽が出ず、人知れず引退のケースが出てきます。

1軍生活は息が長い

一軍のスター選手はなかなか席を空けてはくれないのです。 鳥谷が連続試合出場記録単独2位になりましたね。 エラーでサヨナラ負けしたって、次の日もスタメンです。

一度スターダムをのし上がれば、ちょっとのミスに甘くなるのは世の常なのです。

FA宣言してくる輩がいる

これ、、、これ、理不尽じゃないですか?!?!? ある時のIT部門のトップ20のエントリを見て見ましょう。

f:id:imslotter:20170421190428p:plain

少しどころじゃなかった…強いページばっかりだ…若い芽の未来を強者が奪っていく決定的証拠です!ひどいわ…!

独立リーグからのオファー、タレント転身

はてブが伸び悩む理由がわかっていただけたでしょうか。 実は、この話には素敵な続きがあります。

先ほどのグラフに、PV数を重ね合わせてみましょう f:id:imslotter:20170421033659p:plain 1軍で鳴かず飛ばずの生活をしていたにもかかわらず、2回バーストしています。 この理由は二つあります

独立リーグ : SmartNewsでの掲載

1軍でくすぶっていた我が記事氏に、ある独立リーグからオファーが来ます

「俺のところで、戦ってみないか??」

それがSmartNewsでした

スマニューアプリのトップに約半日掲載してくれたおかげで、かなりのPVを稼げました

華麗なるタレント転身 : GIGAZINE.net

SmartNewsでの活躍も、そろそろ年齢的な限界がきたようです。 徐々に掲載順位を下げ、いよいよ引退の危機です。 そんな時、思わぬところからのオファーが来ました。

なんと、あのGigazine.netです。

「引退して、タレント活動しな?」

はてブの成績をもう置いておいて、タレント業を持ちかけて来たのです。

掲載されたのはヘッドラインニュースという一つの記事のほんの一部分。 なのに、なんだこの破壊力。これがタレント、これがメディアか…!

爆発的なPVを一瞬にしてかっさらってくれました。

まとめ : ご意見番としての今後は?

野球人生としては、ご意見番としての今後(検索流入)というものが考えられますが、 一点突破のネタ記事だったので、なかなかそれも難しいでしょう。 今は隠居生活に入っています。

でも今回の記事は色々な経験をさせてもらってPVの変動を追うのが楽しかったです。

自信を持って書いた記事は、どこかで拾ってくれる

強い球団(ブログ自体の読者数, 固定ファンがが多い)わけではないので、しばらくはこれを信じて書き続けるしかないですね。 あ、ちなみに、自分の記事の行く末を知りたいという方、依頼承りますよ!笑

この記事が、素晴らしい人生を送れるといいな。ではではっ!

*1:少し期間が短い気もします。ちょっと家を離れないといけない都合上ここまでしか取れませんでした。今後ちゃんと取ってちゃんと分析したいと思います。

工学・理学・情報と研究分野を転々とした今だからわかる、大学の授業の大切さと大学での生き方(理系)

f:id:imslotter:20170419213221p:plain こんにちは!ほけきよです。

新学期が始まってもう1週間ですね。そろそろ4月病*1が完治し 5月病を発症する人も多いのではないでしょうか。

今日は、そんな大学生(特に理系大学生)に送る、大学での勉強の仕方についてです。 後悔しない大学生活を送るためにも、読んでみてください!

2回も研究分野が変わってる人

私は大学時代から研究分野を2回変えています。 初めはものを作ったり、実験をどんどんしたりの工学系、次が紙とペンの理学系、最後がパソコンパチパチ情報系。 さらに細かく言うと、3年に上がるまでは材料系に行こうと思って勉強していました。

生来の飽き性で「あれが面白い!」と思ったらそっちになびいちゃう。 このおかげで、得たものもたくさんあるし、得られなかったものもたくさんあります。

こんな経験から私が思うことをつらつらと書いていきますね。

大学の授業はリファレンスを集める場所

私が情報系に携わるようになって、一番感じることが「用語がわからない」と言うことです。それまで、 ターミナル*2はおろか、Linux*3の存在すら知らなかったですから。

用語がわからないのはググれ???と思うじゃないですか。辛いのは調べ方がわからないことです。 謎のバグを踏んだとしても、なんでバグったのか勘所もわからない。どこがエラーの文章なのかもわからない。全コピペするとよくわからない専門用語が学ぶ。初めの頃は毎日発狂していました。

そんな日々を送っていたある日、私に友人がメールで聞いてきました。

ラグランジアンって何?」

物理系じゃなければ、馴染みがない用語かも知れません。 物理から離れて数年も経っていましたから、スラスラと答えることなんてできません。けど、なぜか調べられるんですよ。

「本のこの辺に書いてあるな」とか「このサイトが良さそうだ」とか。

それで、返信がすぐにできました。 その時、思ったんです。

「大学の授業って、役に立っているんだなあ」

私は真面目な学生ではなかったので、歯抜けの知識だったりします。 と言うか、今ではほとんど覚えていません。けれど、 何回か授業に顔を出したり、テスト問題を解いているうちに、どこに何があるかを覚えているんですね。不思議!

高校までの理系科目って、頑張れば全部覚えられます。 でも、大学の勉強は違う。人類数千年の英知を全て知ろうとすること自体不可能です。 だから、調べられる材料、リファレンスを集めましょう

大学の授業は、それを半ば強制的にしてくれます。 ちょっとだるくても、たまに授業に顔を出したり、少しテスト勉強頑張ってみたりするだけでいいです。 *4

「あ、なんか言っていた気がする!!」「どこかでみた気がする」

この体験を、どこかですることになったら、その価値があったということです。 だから、肩の力を抜いて授業を受ければいいんです。 何気なく見聞きした事柄が、後になって大きな力になったりします。 暗記したテストの点がどうとかより、何気なく集めたリファレンスの方が、よっぽど力になります。

要領よく生きよう、ただしギブアンドテイク

けれど、単位を落としたり、成績が低空飛行の中途半端じゃダメですよ。就職に響くらしいので。 全て要領よくやるか、一点特化型を目指しましょう。私は前者なので、要領よく生きてきました。

包み隠さず言えば、

代返してもらう&ノートをとってもらう

をかなりの頻度で重ねていました。代わりにしてくれた人には感謝感謝です。何もせず単位を失うよりはましだと思ったので。 それなりにテスト前は勉強をして、それなりにいい成績で卒業できました。

正直、それでいいと思っています。おかげでいろんなことを経験・勉強できたので。

ただし、してもらってばっかりはダメです。 得意教科を教えてあげるでもいいし、向こうが休みたいときは代返するでもいいので、 必ず受けてばっかりにならないようにしておきましょうね。

「代返してって言われたけど、あいつまじウゼーから、代返せんとこ。」

とかなったら、嫌すぎますからね。

3つ研究分野を変えたからこそできること

私みたいな生き方を強く推奨はしません。 冒頭にも言ったように、この生き方のせいで得られなかったもの、得られないものはあると思います。 一点特化型の人間にはなることはできません。1ジャンルに対するリファレンスがあまりにも少ないからです。

けれど、刹那的に移りゆく興味の中で、たくさんのジャンルのリファレンスを集めることができました。

すると面白いことに、今では3つの分野をぼんやりリンクさせられるようになっています。 機械学習の話であれば

「あ、ここは統計力学のエネルギー最小化と似ているな」とか、「制御理論と似ているな」とか。

この「似ているな」が、かなりの理解と自信の助けてになります。

私の学問の師匠がこんなことを言っていました。

「一点突破型じゃない人は、螺旋状に山を登っている。登るスピードは遅いかもしれないが、頂上に登った時、四方の景色は格別なものになる」

夢を持たせたがる人もいますが、ただ興味の赴くままに、熱中すればいつか繋がる時もある。 これは、学問に限った話じゃないです。遊びたいときに遊べばいいし、学びたいときに学べばいい。ただし精一杯。

夢や目標がない人は、そう考えたら少しは心が軽くなりませんか?*5

必ず必要になる大事な3つの"言語"

です。どんなに研究分野を転々としても、この3つだけはほぼ必ずと言っていいほど使います。

「数学が言語?」と思う方もいるかもしれませんが、数学はこの世の中を記述できる世界共通の言語です。 少なくとも大学1,2年までの数学が使えれば、いろんな分野の理解を助けてくれるでしょう。

これらは「言語」なので、コツコツやるより他ありません。私もまだまだ勉強中です。 少しでも将来理系の研究、仕事につきたいならば、やっておきましょう。

まとめ

最近ふと感じたことをまとめてみました。 私が大学生に戻ったらどうやって生きるだろう。 まとめると

  • 幅広にリファレンスを要領よく集める
  • 数学/英語/プログラミング言語はコツコツとする
  • 熱中できるときに熱中する(学問に限らず)

これだけで、大学生活が豊かになると思います。 大学生の方は、みんなが羨む大学生活、精一杯楽しんでください。ではではっ

*1:やる気に満ち溢れ、キャパ以上の履修をするさま

*2:コマンドをうつ黒い画面

*3:WindowsでもMacでもないやつ、いや、語弊があるか?

*4:本当に理解したいことはちゃんと勉強しましょうね

*5:この手の話はSteve JobsStanford卒業公演の"connecting the dot" なんかもおすすめです。 Steve Jobs' 2005 Stanford Commencement Address - YouTube

貯金の平均820万なのに何で中央値が20万なの?話題の貯蓄額データを科学者が本気で分析する

f:id:imslotter:20170418192248p:plain

こんにちは、ほけきよです!!

こんなニュースが話題になりましたね。

news.livedoor.com

「平均値820万、中央値20万??」

さらに

一人暮らしの平均貯蓄額は822万円だが、中央値はなんと20万円のみ!実に48.1%の単身世帯が貯金ゼロという状況のようです。 - クレジットカードの読みもの

数年後「1人暮らしの貯蓄額は平均値800万円、中央値0円」 - かきのたねとピーナッツ

「貯蓄0の人が48%????」

なかなか非現実的な数値に「どういうことなんだ?」と思う方もいらっしゃるでしょう。*1

私の専門はSocial science/ Complex scienceだったので、このあたりの話題について少し科学的に触れてみたいと思います。

普通の分布

みなさんが普通に思い浮かべる分布ってどんなものでしょうか。 例えば、コインを100回投げたときの表の数って、何回になると思います?

だいたい50回になると予想がつく方が多いのではないでしょうか。50じゃないにしても、その付近に集まるだろうと。 実際にシミュレーションをしてみましょう(読みやすさのために、実験コードは最後につけています。)

f:id:imslotter:20170418020039p:plain

このように、直感通り50付近がもっとも多くなります。 これは大数の法則(厳密には中心極限定理)と呼ばれていて、一回コインを投げた結果が他に影響を及ぼさない(独立)である事象ならば、成り立つことが知られています。 世の中のものの多くはこの大数の法則に従うとされています。サイコロを降り続けたら、だいたい平均は3.5になるだろう。とか。

ベキ分布の登場

ところが、こんなルールをつけてみるとどうなるでしょう。

  • コインを投げる
  • 表が出るたびに、0.05ずつ表が出る確率を増やす

コインは前のコイントスに影響を受け、確率を変える。どんな分布になるか、想像がつきますか? (こちらも実験コードは最後につけています。)

f:id:imslotter:20170418020328p:plain

面白い形になりました。当たり前ですが、表が出る回数が多いところに偏っています。 さらに面白いのが、この頻度分布に対して、両対数グラフをとってみます。すると

f:id:imslotter:20170418030016p:plain

ほぼほぼ直線が現れました!!このような特徴をもった分布をベキ分布といいます。 実は、人間社会にこのベキ分布は非常に多く現れることが知られています。 年収の分布、 仕事の忙しさと頻度、フェイスブックの友達の数の分布。 このあたりの話は、Albert BarabasiやDuncan Wattsなどの本に詳しく載っています。面白いので興味があればぜひ!

バースト! 人間行動を支配するパターン

偶然の科学

ベキ分布はなぜ現れるのか。

ベキ分布という言葉を聞いたことがなくても、

などの言葉をどこかのポピュラーサイエンスで聞いたことがある人もいるでしょう。 これらは全てベキ分布と関わりが深い言葉なのです。

なぜ起こるのか。これを数理的に考察したのがAlbert BarabasiやDuncan Wattsです。原著

彼らが導き出した理由はかなり単純明快。ざっくりいうと人間の感情がベキ分布を作るのです*2

  • フェイスブックでの人気者とは友達になりたいという気持ちが働く
  • タスク量の多い仕事は嫌なので後に回す
  • お金を持っている人ほど余裕があり、さらに富む

このように、社会の多くは正のフィードバックにより動いているのです。これが根本原因です。

先ほどのコインはこの人間社会の様子を模擬的に表したものです。「富めるものは富む」 その法則から、あのようなベキ分布が生まれるのですね

ベキ分布の平均はあまり意味を持たない。

先ほどのコインのグラフを見ていただけるとわかると思いますが。ベキ分布の平均をとってもあまり意味がないのです。2割8割の法則と呼ばれているように、2割の人間が全体の8割をかっさらっていっているからです。 そのせいで、ほとんどの人が平均未満の収入。。。なんてことが起こるのです。

こういうときに役に立つのが中央値です。 中央値というのは、まさに真ん中の値。1000人いたら、500番目の値です。

正規分布は中央値と平均値がほとんど一緒になります。左右対称のグラフからも想像がつくかと思います。 しかし、ベキ分布では中央値の方がより世相をとらえた量と言えると思います。

f:id:imslotter:20170418022218p:plain

本題 今回のニュースにおけるベキ分布

ここで本題です。今回のニュースにおいて、ベキ分布を作って見て、富裕層と一般庶民の乖離がどの程度まで広がっているか、検証してみましょう。ニュースから抜粋した値はこちら

  • 平均値 820万円
  • 中央値 20万円
  • 最大値 8000万円

これらに大体合うように、ベキ分布のパラメータを調整してみます。

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
N = 30000 # サンプル数
dist = np.zeros(N)
for i in range(N):
  dist[i] = 8000*np.random.power(0.12) #0.12はベキ分布のパラメータ
print(dist.mean()) #平均値 855
print(np.median(dist)) #中央値 25
plt.hist(dist,bins=400)

結果はこちら。サンプル数3万人での年収分布です。

f:id:imslotter:20170418022520p:plain

もしこの世の年収がベキ分布に従っているならば、ニュースから判断するにこのような分布になります。 実に恐ろしい分布をしていますね。にわかには信じられません。この模擬的な分布を少し分析して見ましょう

48.5%が貯蓄0-20万円

counts, savings  = np.histogram(dist,bins=400)
print(counts[0]) #14655
print (counts[0]/N*100.0) #48.55%

分布から、どの程度の貯蓄を持っているかの分布がわかります。この模擬データによれば、 14565/30000, 実に48.55%の人が貯金ほぼ0という結果になります。 この結果は、冒頭のcardmicsさんの記事かきたろーさんの記事で紹介されている値ともほとんど一致しますね。

約半数が貯金0な訳ですね…

上位層15.8%が全体の富の8割を支配

それでは、この分布で2割8割の法則。つまり全体の2割が8割の富を得ているのかについて分析してみます。

## 全体の貯蓄額
total = np.dot(counts,savings[0:-1])
## 全体の80%を超える頻度分布のライン
i = 96
print(np.dot(counts[i:],savings[i:-1])/total) # 0.803
## その人たちの全体に占める人口
print(counts[i:].sum()/30000) #0.1584

2割より少なくなりました。実に恐ろしい結果です。 2割8割よりももっと貧富の格差は拡大しつつあるのかもしれません。

全体の2割になるための貯蓄額は1200万円

逆に、2割8割の法則の強者側、全体の2割になるにはどの程度の貯蓄額が必要なのでしょうか。

i = 60
print(counts[i:].sum()/30000) #0.2037
print(savings[i]) # 1200

出ました、1200万です! 世の中の勝者になりたければ、とりあえず1000万は貯金しなさいということでしょうか。 なかなか現実と非現実の境目っぽくて、面白いです

まとめ

このデータをとんでもデータだという人もいますが、モデルベース分析してみると、いやはやこのデータなかなか綺麗なデータなのではないか…?とさえ思っちゃいます!

ニュース記事だけをみると、実に反直感的で、にわかには信じられないでしょう。しかし、この非現実的な貧富の分布は、現実に起こっています。というか、分析の結果ここまで現実的な数値がいくつか出てきたのに、私も少し驚いています。初めはなんだ、このトンデモデータはwwwみたいな気分で分析を始めたものですから

まとめると

■ 人間生活ではベキ分布がたくさんある
・ それは人間の感情から引き起こされることが多い
ベキ分布に平均値はほぼ無意味。中央値を使うべき
■ 今回のデータがベキ分布に従うと仮定すると
48%が貯蓄0
・ 全体の16%の人が8割の富を寡占している
・ 全体の2割の勝者になるためには、1200万の貯蓄が必要

ということがわかりました。 今回の結果はサンプル数が少ないので、一概に当てはまるとは言えませんが、目安にはなるのではないでしょうか。結果はなかなかシビアですが、たまにはこういうモデルベースの分析も、楽しいものですね。

貯蓄1200万になるまで、あと1180万...頑張るぞ!!ではではっ

付録

付録1 コイントス

  • コイントスを100回行い、表が出た回数を記録。
  • 30000回繰り返して、どのような結果になるかプロット。
import numpy as np
import matplotlib.pyplot as plt
N = 30000
np.random.seed(1)
def cointoss(iteration=100):
    omote = 0
    for i in range(iteration):
        p = np.random.random()
        if p< 0.5: #確率は半々
            omote +=1 #表ならカウント
    return omote
dist = np.zeros(N)
for i in range(N):
    dist[i] = cointoss()
plt.hist(dist,bins=range(0,100,2))

付録2 公平じゃないコイントス

  • コインを投げる
  • 表が出るたびに、0.05ずつ表が出る確率をあげる

というルールを加えてコイントスを行う

import numpy as np
import matplotlib.pyplot as plt
N = 30000
np.random.seed(1)
def cointoss(iteration=100):
    omote = 0
    omote_prob = 0.5
    for i in range(iteration):
        p = np.random.random()
        if p < omote_prob:
            omote +=1
            omote_prob += 0.05 #表が出たら確率も増やす
    return omote
dist = np.zeros(N)
for i in range(N):
    dist[i] = cointoss()
plt.hist(dist,bins=range(0,100,2))

*1:リンクさせていただきました。都合が悪ければお申し付けください

*2:専門用語で"Preferential attachment"と言います

mastodon(マストドン)を使いこなすための用語(象語)・知識集

f:id:imslotter:20170417225549p:plain

こんにちは、ほけきよです! 週末はmastodon(マストドン)に入り浸っていました。

以前の記事でも言いましたが、黎明期の雰囲気がなかなか楽しいです。 今はアーリーアダプター層が思い思いのことを吠えているジャパリパークなので、 今のうちに参入してその雰囲気を味わってみるのも一手です。

さて、『ジャパリパークの掟は自分の身は自分で守る』です。

独自の発展を遂げつつあり、新規参入者には意味不明な単語が飛び交うこともしばしば そこで、今回はmastodon界隈で生きるための用語や無駄知識をまとめてみました。

マストドンとは

この記事に詳しく書いています

  • オープンソース
  • サーバが一つではなく、分散している
  • フォロー・フォロワーの関係ができると、サーバー同士がつながる

あたりがtwitterとの違いです.

公式用語

とりあえず利用に最低限必要な用語

用語 意味
マストドン ゾウやマンモスに似ている、ゾウ目の何か(wikipediaより)
トゥート! ポストする。twitterでいう「ツイート」
お気に入り twitterと同じファボ。mastodonの場合は♡じゃなく☆
ブースト twitterでいう「リツイート
インスタンス Mastodonのサーバ
pawoo.net pixivが運営するインスタンス。現在人口第1位
mstdn.jp 一度はサーバが落ちてデータ消失の危機だったが見事復活した日本人向けインスタンス。現在人口第2位
mastodon.social 世界中の人が集うインスタンス。現在人口第3位(新規ユーザ停止中)
フォロー/フォロワー twitterと同じ
ホーム twitterでいうホームのタイムライン。流れるのはFFの関係だけ
ローカルタイムライン サーバー内での全トゥートが流れるタイムライン
連合タイムライン 自サーバと、FF関係でつながる他サーバすべてのトゥートが流れるタイムライン
Amaroq iOS用クライアントアプリ
Tusky Android用クライアントアプリ
CW Content Warning 途中からトゥートを隠したいときに使う
f:id:imslotter:20170417225056p:plain
NSFW Not Safe For Work エロ画像など、不適切な画像を貼ったときに使う
f:id:imslotter:20170417225146p:plain

象語

マストドン内(特に日本)では、独自の言語体系(象語)がかなり出てきます。 その中でも良く見かける象語について

用語 意味
パオる マストドンする
ズッパオだよ ずっとぱお仲間だよという意味
マストドン 「寝ます」という意味。○○マストドンで他の動詞も可
寝る象 「寝るぞ」の意味。○○象で他の動詞も可
牙生える 「草生える」
象牙不可避 「大草原不可避」の意味
パクトゥー パクったトゥート。twitterでいう「パクツイ」
ぱおぉぉぉぉん 挨拶。mstdn.jp内でとりあえずこれを言っておけばフォロワーが増える
🐘 象。とりあえず語尾につけておけばふぁぼってくれる
公式(公式じゃない)マーク。多くの人がつけているが全員まとめて非公式

有力インスタンス3つとその雰囲気

今の登録者数ベスト3のインスタンスに入っているので、その雰囲気の比較

pawoo.net

現在第1位の登録数を誇るインスタンス。サーバは企業(pixiv)が立ち上げている。 pixivが立ち上げただけあって絵師が多め。ただし絵のジャンルは二極化している。 普通に楽しんでいる人と、エロ画像貼りまくっている人がいる模様。 現在、不適切画像のフィルタリングに躍起になっている模様。

Mastodon開発者とpixivのPawoo、ロリ絵対策について議論する - ITmedia NEWS

ほとんど日本人しかいない。流速は早め。

mstdn.jp

ツイ廃の上澄みが流れてきているイメージ。 すごい勢いでファボしまくる人や名物キャラ(🐬やリザードン)などがクソリプの応酬をしたりしている。 タイムラインの流速は主要インスタンスのなかで最も早い

内輪で独自の文化を作り上げ、ワイワイ盛り上がっている様子はまさに鎖国中の日本の様。 治安は悪いが、まさに黎明期の文化形成途中という感じでなかなか楽しい

管理人はnulkul氏が運営している。もはや個人で運営できるユーザー数を遥かに凌駕し、一度は落ちるも復活。 現在でもサーバ維持や出会い系の規制など、数々の困難に立ち向かわんとしている。 *1

mastodon.social

管理人Eugen氏はマストドンの生みの親。ここが本家本元のインスタンスといって良いだろう(なぜmstdn.jpのほうが人が多いのだろう)。 一時日本人に蹂躙されるが、新規userの登録を規制。その後日本人がmstdn.jpやpawoo.netなど他のおもちゃを見つけポイ捨て。

その為現在では日本語、英語、スペイン語アラビア語など、国際色豊かなトゥートが並ぶ。 ほかの日本人中心のインスタンスに比べ、平和な世の中である。ここにいる日本人もどこか落ち着きがある。

ちなみに、日本人の襲来に外国の方々は驚き辟易としていたようだった。

ちなみに、こちらが約5日間のユーザー数の推移である。いかに日本が熱狂しているかがわかる。 f:id:imslotter:20170417223523p:plain

その他のTips

インスタンスランキングをみる

ここから、マストドンインスタンスに関する情報を見ることが出来る。

Mastodon instances

ちなみに現在(2017/4/17)のインスタンスランキングはこちら。

f:id:imslotter:20170417223354p:plain

userランキング見るやつ

ここから、主要ユーザのフォロー、フォロワー関係が見られる。

マストドン ランキング

フォローしまくっている人か、有名な人(サーバ運営者)かに二極化している f:id:imslotter:20170417224031p:plain

終わりに

これだけ知っていれば、快適なマストドンライフを送れるはずです。

みんなで一緒にパオろう!ではではっ

*1:運営のために休学も辞さないと言っていたが、学校は行ったほうがいいぞ!

スマブラ!ダンレボ!人工知能が人間に挑戦しているゲーム事例5選

f:id:imslotter:20170416220734p:plain

こんにちは、ほけきよです!

人工知能ブームも、とどまるところを知りませんね。 異常検知とか、画像識別などいろんな現実のタスクにも使われ始めていて、 ビジネス面での応用も色々と考えられています。まさに今が旬!と言った感じでしょうか。

そんな中で、お金の匂いがあまりせず、興味駆動で研究を行っているクールな例もあります。 その最たるものが、人工知能で既存のゲームをクリアする」というものです。 まさに自分の趣味を研究にしているようなもの。実にCooooolです。

今日は、どこまで人間のゲーム界に侵食して来ているのか、記事や最新の論文を踏まえながらいくつか紹介します。 あなたは人工知能に勝てますか??

ブロック崩し

www.youtube.com

ゲーム関連での技術では、強化学習(Reinforcement Learning)というのがよく使われます。「自分が行動して、その結果の良し悪しで戦略を変えていく」という学習の仕方です。

この分野、囲碁の世界チャンプをぶっ倒した"AlphaGo"の登場により、爆発的に研究が進み始めています。 新しい強化学習のアルゴリズムが現れた時に、評価用のゲームとしてよく使われるのがこのAtari Gamesのブロック崩し。 タスクとしてわかりやすく、性能の評価もしやすいからでしょう。

この動画のアルゴリズムは、Deep Q Network(DQN)と呼ばれる技術を用いています。 詳細は省きますが、動画を見ると

  • はじめはほぼランダムな動きをする
  • 少しすると、ボールを落とさないようになる
  • もっとすると、戦略を学び始める

というのがみて取れます。 ちなみに、現在ではブロック崩しは人の平均の10倍以上の成績を取れるようにまでなっています 他のゲームでも、人を超えているのがかなりありますね。アーケードゲームはもう人工知能の方が優秀なのでしょうか。

f:id:imslotter:20170416202444p:plain
図 : Deep Reinforcement Learning with Double Q-learning

スマブラ

誰もが一度は通る世界的有名ゲーム、「大乱闘スマッシュブラザーズ」にも、人工知能のメスが入っています。

下記映像は、世界ランクに乗るほどのプレイヤーとDQNで学習したAIとの勝負。1Pが人間、2PがAIです。

www.youtube.com

つえええ。絶対勝てねぇ。。。

原論文はこちら
Beating the World’s Best at Super Smash Bros. with Deep Reinforcement Learning

こちらの記事が技術面のめちゃくちゃ詳しい解説をしてくださっている。

DQNとA3Cで実験を行い、振る舞いの変化なども観測しているようだ。 手法の新しさというよりかは、既存のものをうまく実適用に当てはめたという感じでしょうか。

64ならまだしも、GameCube版のスマブラDXでこの性能出されたら、もうだめだ感ありますね。

マリカー

これも誰もが一度は通る道でしょう。マリオカート

Kevin Hughesという方が、全自動で運転するプログラムを作成しました。名付けて“TensorKart”

その試行錯誤の様子は自身のブログで書かれています(in English)

TensorKart: self-driving MarioKart with TensorFlow

どういう風に特徴ベクトルを設計したか、最適化を行ったかなど、細かく書かれていて「ホーー」という感じでした。 MNIST, Autopilot(自動運転用機械学習モジュール)と比較しながら書いているので、それらに比べてどういう差分があるのかもわかりやすいです。

学習した結果がこちら

www.youtube.com

少しコースアウトしたり、壁にぶつかったりしていますが、 概ねきちんとコース取りできている模様。多分私よりは上手。 彼のブログ内のはじめの動きに比べれば、ここまで学習させられるのか…という感じですね。 個人でここまでできるのはすごいなと素直に思います。

これに関する日本語の詳しい記事はこちら

ダンレボ

リズムゲーの原点にして頂点、Dance Dance Revolution. これもハマった人は多いでしょう。

今回の論文は"Dance Dance Convolution"

まず名前がズルい。うますぎる。このキャッチーなネーミングにつられて思わず論文をダウンロードした人は多いだろう。 やっていることは、DDRを実際にプレイするというわけではなく、任意の曲からDDRの譜面を自動生成するというもの。

技術的には、C-LSTMというモデルを使った模様。

f:id:imslotter:20170416211354p:plain

詳細は論文参照だが、ざっっっくり説明すると

  • 音をフーリエ変換して、周波数帯とその強度でマッピング、可視化
  • 可視化したものをCNNにぶち込んで、どこでステップを出すか、特徴抽出
  • どのステップを出すかを、RNN(LSTM)を用いて選択

といった感じである。 また、実際にWebサービスとして展開していて、ここから実際に譜面を作ることが可能。

Dance Dance Convolution

難易度を5段階(Beginner Easy Medium Hard Challenge)となっているが、 LSTMの精度が高密度の方がいいらしく、難易度が高くなる方が高精度で譜面生成してくれる。 皆さんも、好きな曲でChallengeの難易度での譜面生成、してみてはいかがでしょう。

FPS

根強い人気を誇るFPS(First Person Shooter)*1Call Of Dutyとか、バイオハザードとかは、今でも熱烈なファンが多くいますね。そんなFPSを強化学習で強くしようとした論文がこちら

Playing FPS Games with Deep Reinforcement Learning

対象ゲームは"Doom“と呼ばれる、FPSの草分け的なゲーム。 今ではAIでどこまで強くなれるかの、コンペティションの対象になっているようです(VizDoom )

www.youtube.com

普通に殺せている…強い(確信)

技術的なところを少しだけ話すと、この手のゲームで難しいのは1人称視点なので、観測範囲が限られる(partial observation)ところ。つまり、自分の行動の結果としてみられる範囲が自分の視点だけであり、そこから全体を推測しないといけないところが難しい。

この論文では、その問題に対してDRQN(Deep Recurrent Q-Networks)という手法で取り組んでいます。部分観測から、今の状態(hidden state)を推測して、次の行動へと移るといったイメージです。

もう一つ工夫としては、navigationとactionという2フェーズに分けたところ。

  • navigation : 移動の仕方
  • action : 敵の殺し方

これらをまとめて行動とする場合と、別々のネットワークで学習させる場合で、かなり結果が違っています。

f:id:imslotter:20170416214047p:plain

これだけ行うタスクが明確に違うと、分けた方が学習が効率的に進むということですかね?

まとめ

いかがでしたか?

ゲーム下手な私は多分、どのゲームも勝てないと思います。 自分がゲームの練習して勝つより、学習モデル作って勝てるゲームプレーヤーを作るほうがまだ可能性があるのでは?とか思っちゃいます。そんな時代なのですね。

これからどんどんこういう事例が出てくると思います。 ニコ動の「才能の無駄遣い」タグがぴったり当てはまるこの分野、 なかなかに好きなので、今後も注目です!ではではっ!

*1:一人称視点で行うゲーム

【マストドン】人気爆発中、新感覚SNS『Mastodon』の黎明期を味わえるのは今!みんなでパオろう。

こんにちは、ほけきよです!

最近、とある界隈で話題になっている『Mastodon』というのを、ちょっと試してみました。

Mastodonとは

Mastodon は自由でオープンソースソーシャルネットワークです。商用プラットフォームの代替となる分散型を採用し、あなたのやりとりが一つの会社によって独占されるのを防ぎます。信頼できるインスタンスを選択してください — どのインスタンスを選んでも、誰とでもやりとりすることができます。 だれでも自分のMastodon インスタンスを作ることができ、シームレスにソーシャルネットワークに参加できます。 (HPより)

ロゴはこちら

f:id:imslotter:20170414230816p:plain

wikipediaで調べてみると、象やマンモスの仲間らしい (マストドン - Wikipedia)

特徴は

つまり、サーバさえ持っていれば、だれでもtwitterのようなプラットフォームを作ることが出来ます。 サーバごとに人を集めて、twitterのようなSNSを楽しめる。 分散の一番のメリットは、コミュニケーションが単一の企業に独占されるリスクを避けられるところだと開発者は言っています。 広告なども無く、まさに初期のtwitterのように楽しむことが出来ます。

始めるには

まず、自分の好きなサーバを選びます。 実は、現在(2017年4月14日)、公式サーバでの登録ができません

f:id:imslotter:20170414231645p:plain

おそらくしばらくしたら復旧すると思いますが、早く始めたい!というかたは、別サーバで始めることも可能です。

ただ、自由にサーバがたてられることはメリットばかりではありません。保証がどこにもないサーバだと突然サーバが落ちて、データ全消失でもだれも責任を取れません。パスワードが管理人に抜かれる危険性もあるので、気をつけましょう。

実は、ほんのちょっと前、mstdn.jpという個人運営のサーバがあったのですが、日本人が来ておもちゃにしすぎたせいで、サーバがダウンしてしまったようです。*1 涙なしでは語れない記事はこちら

www.itmedia.co.jp

なので、選べるなら信頼度の高いサーバを選んだほうが良いです。あと、個人的にはある程度人が集まっているサーバのほうが楽しいです。 個人的なオススメサーバは、公式サーバか、pixivが運営しているサーバです。

pawoo.net

サーバを選べば、ユーザーネームとメールアドレス、パスワードを入力して、簡単に登録できます

使ってみた

ブラウザ上で使えるので、PCでも携帯でも使うことが可能です。今回はデスクトップ版中心に紹介します。*2

f:id:imslotter:20170414233431p:plain

なかなかオシャレなデザイン。

twitterと似ている所

まず、つぶやくこと自体はtwitterと似ています。 ただ、Mastodonでは"tweet(つぶやく)“ではなく、"toot(吠える)"と言うらしいです。 ちなみに、500文字まで呟けます。写真は1枚50文字換算のようです。 はじめは「トゥート?ツイートのパクリかよw」と思いましたが、Mastodonっぽくていいですね。

また、タイムラインも上からばぁーっと流せます。それはまるでTweetDeckの様な仕様です。

twitterとは違う所

Mastodonには、大きく3つのタイムラインがあります。

※使ってみて、『多分こうじゃないのかなー』と思いながら書いているので、間違えがあるかもしれません。その時はご指摘お願いします。

  • ホーム
  • ローカルタイムライン
  • 連合タイムライン

です。順番にいくと、

ホームは、フォローしている人の情報が流れるものです。twitterのタイムラインと同じイメージを持つと言いと思います。

ローカルタイムラインは、同一サーバ上の全員のアクティブトゥートが見れます。大きなサーバだと、流速が早く、眺めているだけでも面白いです。そして、特徴のあるサーバを選んだのであれば、ここのタイムラインを見ると、その色に特化されたタイムラインが出来上がっているはずです。たとえば、今渡しがいるpixivのサーバだったら、絵師が多くいたりといった感じです。

そして、Mastodonの面白いところはこの「連合タイムライン」というものです。フォロー/フォロワー関係になった、などで連携しているサーバの人たちとつながることができ、連合タイムラインはそこも含めたすべてのトゥートを見られるようになります。つまり、いろいろなサーバの人とつながるとこの連合タイムラインに流れるトゥートはどんどん増えていきます。このような機能により、いろいろな人と繋がれる仕組みを作っているようです!

f:id:imslotter:20170415000349p:plain
(前画像の右端の拡大図)

ちょっとしたTips

ここでは、Mastodonに馴染めるように、Tipsや小技を紹介します

人を検索するときは、@名前@サーバー名とすると良い

サーバーごとにIDを管理しているようなので、ユニークなユーザーネームにアクセスするためには このようにしましょう。メンションとかを飛ばすときも、これでOKです!

また、スマホ(iphone)でのID検索はUIがイケてなくて、一度書き込みボタンを押すと左上に検索マークが現れます。 検索と書き込みは機能が別のはずなので、分けて欲しいですね…

公式っぽく見せるアイテム

例えばこのトゥート

f:id:imslotter:20170414235717p:plain

私の名前の横に公式マークっぽいのがついていますよね。 Mastodonでは、このようにマークをつけることが出来ます。 「✅」をコピペ、もしくは「チェックボックス」と入力して変換すれば、この公式マークを付けることが出来ます。

ぱおぱおうるさいけど何??

タイムラインを眺めていると、 「いいからパオれ??」とか「ぱおぉぉん」とか

謎の言動をしている人たちが多くいます。これは

「Mastadon ⇨ 象みたいなもんやろ ⇨ ぱおぉぉん」

とのことです。ちなみに『ぱおる』は、Mastodonをする。という意味らしく、タイムラインを観ることも包含されていそう。 すこしツイートするとかよりも便利な言葉のようです。語感もいいし、流行りそう!

連合タイムラインを開きっぱだと、重い

当然ですが、連合タイムラインは爆速でトゥートが流れていきます。 PCブラウザでもかくかくになります。スマホだと、1時間で2回ほど完全フリーズで落ちました。

トゥートしたり、何かMastodonで作業するときは、連合タイムラインは隠しておいたほうが良いかもしれないです。

自サーバの情報を見る方法

自分が使っているサーバが今、どのくらい活発なんだろうか。それらの情報を見るには、右端の「サーバー情報」を押せばOKです。

f:id:imslotter:20170415000539p:plain

  • 誰が運営していて
  • 今何人いて
  • どれくらいのツイートをしていて(ローカルタイムラインに関係)
  • 何個のサーバとつながっているか(連合タイムラインに関係)

という情報がわかります。

用語

Mastodon特有の用語集(思いついたら追記します)

  • トゥート! : ツイートのようなもの
  • ブースト : リツイートのようなもの
  • 連合タイムライン : つながっているサーバとか全部含めたタイムライン
  • ローカルタイムライン : 自サーバ内のタイムライン

所感

正直、今めっちゃ楽しいです。 色んな人がおもちゃのように楽しんでいるので、無法地帯な感じも結構好きです。 まだ秩序があんまりなくて、クソみたいなトゥートやクソみたいなリプしかないんですが、 ほぼ100%の日本人が楽しんでツイートしてます*3。悪意とか、策略とかがまだ一切ない感じ。 例えるなら、みんながジャパリパークのフレンズたちのよう。

わたしも使用30分で、脳が溶けました。たのしー!!!

そのうちまた広告や政治の温床になり、めんどくさくなりそうなので、楽しみたいみなさんは今がチャンスですよ! 何も考えなくていい、サファリパークみたいな場所で、『ぱおぉぉぉん』とつぶやきましょう!ではではっ

ぱおぉぉぉん🐘🐘🐘🐘🐘

*1:現在、サーバは復旧しています!

*2:携帯版は、あんまりUIがこなれていなくて、使いにくいところもありました

*3:日本人が楽しみすぎて、外国人がすこし困っているようですが…w

建設的な議論のために。フィンランド小学生の『議論の10のルール』

f:id:imslotter:20170412014844p:plain

こんにちは!ほけきよです。

2010年から使っている、化石のような自家用Macbook、 1年ぶりに充電器が手に入ったので電源を入れてみると、 久しぶりに懐かしい物を目にしました。スティッキーズに残していた自分のメモです。

フィンランドの小学生が定めた議論のルールというモノです。 それがこちら。

議論における10のルール

  1. 他人の発言をさえぎらない
  2. 話すときは、だらだらとしゃべらない
  3. 話すときに、怒ったり泣いたりしない
  4. わからないことがあったら、すぐに質問する
  5. 話を聞くときは、話している人の目を見る
  6. 話を聞くときは、他のことをしない
  7. 最後まで、きちんと話を聞く
  8. 議論が台無しになるようなことを言わない
  9. どのような意見であっても、間違いと決めつけない
  10. 議論が終わったら、議論の内容の話はしない

人の振り見て我が振り直せ

いかがでしょう。本当に小学生が考えたんでしょうか?と思うくらい、含蓄に富んだ内容です。 久しぶりに見返すと、うんうんと頷きが止まりませんでした笑

  • 相手を尊重する
  • 常に建設的であることを意識する
  • 感情に左右されない

できていない人多いですよね。今の会社でも、

  • 中途半端なタイミング(収束フェーズ)でのそもそも論
  • 自己主張が強いくせにまとめる能力はなくとっ散らかる議論
  • だらだらと朝から晩まで延々と続く会議

などがたまに発生します。

正直、議論したい時、真面目に話したいときにこの辺りができていない人と話をすると、 時間を無駄にした気になってしまいます。

こういうとき、いつも

「自分はああなっていないか?客観的に自分を見て、ならないように気をつけよう」

と自戒します。多分気をぬくと惰性でこんな議論してしまうので、日頃からこの10カ条を意識しないとなと改めて思いました。

まとめ

学生の間、とくに団体でプロジェクトを回している時に常に意識しようと思って一番目につくデスクトップに配置していました。

f:id:imslotter:20170412013645p:plain

作成日が"2011年5月20日"なので、実に5年くらいはこれを見ながらいろんなことをやっていたわけです

この1年くらい、見ていなかったので忘れかけていましたが、また思い出すことができてよかったです。

社会人になってこのルールを見返すと、その通りだなと思ってまた味わい深いですね。

皆さんも、議論を有益にするために、この10カ条を意識してみてはいかがでしょうか。ではでは!

DeepMind社謹製の深層学習ライブラリ『Sonnet』の事始め

f:id:imslotter:20170411211409p:plain

こんにちは、ほけきよです。

DeepMindが数日前に、tensorflowを用いたモジュール"sonnet"をオープンソース化しました。

普段Kerasしか使っていないのですが、ちょっとだけ触ったり調べたりしたので

  • インストール方法
  • Exampleについて
  • Kerasとの違い。想定ユーザ

など、所感とともにメモとして残しておきます。

sonnetとは

  • DeepMind(今一番キテるGoogle傘下の研究所)が社内用に使っていた深層学習用ライブラリ
  • tensorflowのラッパー的立ち位置(tensorflowが入っていることが必要)
  • Linux/MacOSXで対応

requirement

  • python2.7 : 3系はまだ対応していないそう
  • tensorflow >= 1.0.1 : Deeplearning用ライブラリ
  • bazel (>= 0.4.5 )  : Google謹製のビルドツール

インストール方法

bazelのインストール

Documentをみる。自分のOSに応じて。(今回は MacOSXのhomebrew)

Installing Bazel - Bazel

brew cask install java #javaのインストール
brew install bazel

sonnetをダウンロード、チェック

  • githubからコードを取ってきて、まずはインストールできるかチェック
git clone --recursive https://github.com/deepmind/sonnet
cd sonnet/tensorflow
./configure

ないものはエラーに従って入れていく。

./configureで色々聞かれる(コンパイラを最適なやつ使うかとか、OpenCL使うかとか、pythonのパスとか) 別にこだわりがない人はEnter連打で(でも一応メッセージはみておこう)

うまくいくとこんなメッセージが。

Extracting Bazel installation...
..............................................................
INFO: Starting clean (this may take a while). Consider using --expunge_async if the clean takes more than several minutes.
.............................................................
INFO: All external dependencies fetched successfully.

ビルド、インストール

sonnetをビルド

mkdir /tmp/sonnet
bazel build --config=opt :install
./bazel-bin/install /tmp/sonnet

/tmp/sonnet以下にpip installできるファイルができるので、

pip install /tmp/sonnet/*.whl

とする。これで完了

チェック

pythonを起動し、以下のコードを打つ

 import sonnet as snt
 import tensorflow as tf
 snt.resampler(tf.constant([0.]), tf.constant([0.]))

下記の表示になればOK

<tf.Tensor 'resampler/Resampler:0' shape=(1,) dtype=float32>

Exampleを試す

タスク

使えるようになったので、exampleを実際に動かしてみる。 普通こういうのはMNISTを使って分類が定番だが、今回のexampleはRNN(多層のLSTM)を使ったもの。まだexampleはそれしか用意されていないよう。

中身のコードを見ながらLSTMをどうやって書くのか眺めるのはいいかもしれない。今回は結果だけ。

データセット

シェークスピア“CORIOLANUS”を使って学習させ、それっぽい文章を生成するRNNを作ろうという感じ。

Coriolanus (The New Cambridge Shakespeare)

Coriolanus (The New Cambridge Shakespeare)

結果

中身は置いておいて、とりあえず実行してみる。*1

python rnn_shakespear.py

はじめにWARNINGがたくさんでた後に、学習が進んだ。WARNINGは

「お前、もっと環境を最適化できるけどしないの?」

というやつ。

結果はたまに文章ぽいのもあるがちゃんとした文章とは程遠い。学習データが少ないから?

INFO:tensorflow:9999: Training loss 78.764648. Validation loss 100.533051. Sample = b_0: 
ht this, and we letter my house of Hereford,|Will reason at wailer, I have by found you.||BENVOLIO:|
No, therefore, none me thy ear, or we were not a|great-father uncle Edward's right divined soul six with his first,|
And then I tear the back of pleasure; and our sword|
To bowly me of preceion dubfil-god:|Go well in Aufidius to year:|
You may not show thy length.|
|PARIS:|
His lady.|
|POLIXENES:|So Margaret.|
|LEONTES:|Hail, sir, too saying!|
|NORTHUMBERLAND:|So parentme: call me wench-for my greatest,|
Twear have a man; twerver it sorrows I lovely curs you,|Gives me, encorst, for his masters did not myself;|
For thy welcome visiting name of your native|hath not all thy desires to run broke us|
Yon me--and Phoebus Derby, be said, hast thou no man all, my oaths,|Break not that maids with this nighuls of your life|
Will grow themselves: both best in earth! had he were no;|
Who adveral with punish made both|To do them, and majesty, Aumelle;|Many to this the coming love marriage|What, lost deny here: h
INFO:tensorflow:Reducing learning rate.
INFO:tensorflow:Test loss 129.366608

また、学習したモデルは /tmp/sonnet以下に保存される。

中身をちょっとだけ見る

sonnetでは、Deeplearningのネットワークをを作る部品がsonnet/python/modulesに色々と揃っている。

sonnet/sonnet/python/modules at master · deepmind/sonnet · GitHub

例えば

  • conv : CNNのconvolution層を作ることができる
  • gated_rnn : LSTMなど、RNNに用いるゲートを作ることができる

また、ここに、いくつかの既製のネットワークがあるようだ。

sonnet/mlp.py at master · deepmind/sonnet · GitHub

  • Alexnet
  • ConvNet
  • Multi Layer Perceptron
  • Dilation

f:id:imslotter:20170411212105p:plain
(例 : AlexNetのアーキテクチャ(Krizhevsky 2012))

例えば、自分でネットワークを作りたければ↓のようにネットワークを構成していく (DeepMindのSonnetを触ったので、TensorFlowやKerasと比較しながら解説してみた より拝借)

def build(inputs):
    outputs = snt.Conv2D(output_channels=32, kernel_shape=4, stride=2)(inputs)
    outputs = snt.BatchNorm()(outputs)
    outputs = tf.nn.relu(outputs)
    outputs = snt.BatchFlatten()(outputs)
    # TensorFlow
    weight = tf.Variable(tf.truncated_normal(shape=[4096,10]))
    bias = tf.Variable(tf.constant(0.1, shape=[1,10]))
    outputs = tf.matmul(outputs, weight) + bias
    outputs = tf.nn.relu(outputs)
    return outputs
model = snt.Module(build)

学習はtensorflowの記法にしたがって行う。

これがKerasだと、以下のような感じで書く

model = Sequential()
model.add(Conv2D(32, kernel_size=(2,2), activation='relu', input_shape=(28,28,1))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(10))
model.compile(loss='mean_squared_error', optimizer=Adam())

学習はmodel.fit(...)を使う。

最も大きな違いは

  • sonnetはtensorflowとコード上で組み合わせて使うことができる
  • Kerasはkerasとして閉じている

ということ。これは一長一短で、Kerasは全てKerasとして使うことができるので、終始一貫して直感的に扱うことができるように構成されている。しかし少し手の込んだネットワークに拡張しようとすると、柔軟性が低いと感じることがある。

一方でsonnetは面倒なところだけをモジュール化して、細かく設定したい時にはtensorflowをそのまま用いることができるので、自分で柔軟性を自由に調節できる。 しかし、tensorflowを使うのは、Kerasに比べて少し敷居が高いように感じられる。

あとは、ドキュメントやtutorialが圧倒的に少ない。そしてもちろん日本語はない。

所感

sonnetは、すでにtensorflowを使っている強い人たち が対象なのかなって思った。 そういう意味ではまさにDeepMindの社員が使うようなイメージに近い。面倒なところをなるべく省いて、本当に大事なところだけ集中するためのツール、というイメージでした。研究者の間では流行るかもしれない。

個人的には、Kerasを使えればまずはいいかな… もうちょっとtensorflowになれる必要があるなと感じました。

*1:ちゃんと勉強したらまたメモとして記事にしようかな…

はてブ情報をpythonで可視化できるようにしたよ!

f:id:imslotter:20170409153655p:plain

こんにちは!ほけきよです!

はてなブログをしている皆さんなら、当然アレ、気になりますよね??

そうはてブです。

自分の記事が拡散された時の満たされる感じは、クセになりますよね。 今回は、自分の記事のはてブがどのように増えて行くかを、APIを使って取得できるようにしてみました。

また、はてブが伸びるかどうかを左右する情報も取得できるようにしました!! 基本コピペでOKになっているはずなので、pythonを使っている方は、一回試してみると楽しいですよ!

必要なモジュール

まず、モジュールをインポートしていきましょう。デフォルト以外で入れなければ行けないのは以下の二つ

pipで入れちゃいましょう。 windowspythonを使いたい方は、関連記事へGO. Anacondaには上の二つが含まれているのでそれだけでOKですよ。

コード

#coding:utf-8
%matplotlib inline #jupyterを使う方はこれを入れておく
import urllib2 
from bs4 import BeautifulSoup
import json
import datetime
import matplotlib.pyplot as plt
url = "http://www.procrasist.com/entry/2017/01/07/154441"

はてブの情報を取得

はてなブックマークには、簡単に情報をGETできるように、APIが設計されています。 公式HPか、Syncerさんのページがとてもわかりやすいので参照するにはオススメです

はてブの情報をとってくるためには、自分が調べたいurlの前にhttp://b.hatena.ne.jp/entry/json/をくっつける必要があります。ここにアクセスすることで、情報をGETできます。

ここで一つ注意です。ブックマークを非公開にしている人の情報の詳細ブックマーク情報(時間・コメント等)は取得することができません。ですので、結果的には本来のブックマーク総数より小さく表示されてしまうこともあります。

コード

def get_timestamps(url):
    """
    はてブのタイムスタンプをget
    """ 
    data = urllib2.urlopen("http://b.hatena.ne.jp/entry/json/{}".format(url)).read()
    info = json.loads(data.strip('(').rstrip(')'))
    timestamps = list()
    if info != None: # 公開ブックマークが存在する時に、それらの情報を抽出
        bookmarks=info["bookmarks"]
        title = info["title"]
        for bookmark in bookmarks:
            timestamp = datetime.datetime.strptime(bookmark["timestamp"],'%Y/%m/%d %H:%M:%S')
            timestamps.append(timestamp)
        timestamps = list(reversed(timestamps)) # ブックマークされた時間を保存しておく
    return info, timestamps

はてブの伸びを左右する情報たち

以前もブログで少し話したことがありますが、はてブの伸びは、 エントリーに掲載されるかどうかによって左右されます。

私が伸びるかなーどうかなー。と気になるときにチェックするのは以下の5箇所です

  • カテゴリ新着エントリ
  • カテゴリ人気エントリ
  • 総合新着エントリ
  • 総合人気エントリ
  • はてなブログトップ

新着エントリ < 人気エントリ < はてなブログトップ

の順で掲載期間が長くなっている気がします。これら5つについて、情報をGETできるようにしました!

他に集めておいたほうがいいデータあれば教えてください!

コード

# ページカテゴリ取得
def get_category(url):
    try:
        html = urllib2.urlopen("http://b.hatena.ne.jp/entry/{}".format(url))
        soup = BeautifulSoup(html,"lxml")
        return soup.find("html").get("data-category-name")
    except urllib2.HTTPError as e:
        print(e.reason)
    except urllib2.URLError as e:
        print(e.reason)

#はてブのエントリリストの順位チェック
def rank_checker(url,hatebu_url):
    try:
        html = urllib2.urlopen(hatebu_url)
    except urllib2.HTTPError as e:
        print(e.reason)
    except urllib2.URLError as e:
        print(e.reason)
    soup = BeautifulSoup(html,"lxml")
    a = soup.find("a",href=url)
    if a == None:
        rank = None
    else:
        rank = a.get("data-entryrank")
    return rank

# はてなブログのトップページに乗っているか
def is_hatenatop(url):
    try:
        html = urllib2.urlopen("http://hatenablog.com/")
    except urllib2.HTTPError as e:
        print(e.reason)
    except urllib2.URLError as e:
        print(e.reason)
    soup = BeautifulSoup(html,"lxml")
    a = soup.find("a",href=url)
    if a is None:
        return False
    return url == a.get("href")

def getdata(url):
    category = get_category(url)
    # カテゴリ新着エントリ
    category_entrylist = "http://b.hatena.ne.jp/entrylist/"+category 
    new_cate = rank_checker(url,category_entrylist) 
    # カテゴリホットエントリ
    category_hotentry = "http://b.hatena.ne.jp/hotentry/"+category 
    hot_cate = rank_checker(url,category_hotentry)
    # 総合新着エントリ
    entrylist = "http://b.hatena.ne.jp/entrylist"
    new_all  = rank_checker(url,entrylist)
    # 総合ホットエントリ
    hotentry = "http://b.hatena.ne.jp/hotentry/"      
    hot_all  = rank_checker(url,hotentry)
    # はてなトップ
    hatena_top = is_hatenatop(url)
    # データまとめ
    string  = "hatebu category entrylist rank  : {}\nhatebu category hotentry rank  : {}\nhatebu overall entrylist rank   : {}\nhatebu overall hotentry rank   : {}\nlisted up to hatenablog toppage : {}"\
    .format(rank_checker(url,category_entrylist),rank_checker(url,category_hotentry),
            rank_checker(url,entrylist),rank_checker(url,hotentry),is_hatenatop(url))
    print(string)
    return string

プロットをする

先ほどのタイムスタンプと、GETしたエントリ情報をグラフにしていきます。 visualize関数を作り、タイムスタンプで可視化。情報はannotate関数で入力します。

記事が初めてブクマされた時から2日間のプロットとしています。

※注 :グラフの範囲やannotateは、グラフの形によって変えたほうが見栄えが良くなることもあるので、dayrangeで範囲を、plt.annotate内のxytext=(timestamp[-1],5)`の座標を変えることで、調整してください。

コード

# プロット
def visualize(info, timestamp, data, label="", dayrange=2,annotate=True):
    plt.xkcd()
    count = len(timestamp)
    number = range(count)
    submit = timestamp[0]
    plt.plot(timestamp,number,"-",lw=3,label=label)
    plt.xlim(submit,submit+datetime.timedelta(days=dayrange))
    if annotate:
        plt.annotate(data,xy=(timestamp[-1], number[-1]), arrowprops=dict(arrowstyle='->'), xytext=(timestamp[-1],5))

実行してみる

以上が具体的な内容です。それでは、実際にはてブのリストからいくつか可視化したものをみてみましょう

  • かキタローさんのバズっている記事

www.kakitaroo.com

Udemy、いいですよね。プログラミングとかの勉強のために使ったりしています!この記事、今までのはてブの推移と、現在(2017/4/9 15:00)のステータスを見てみましょう。

コード

url = "http://www.kakitaroo.com/entry/Udemy"
plt.figure(figsize=(10,7))
entry_info = getdata(url)
hatebu_info, timestamps = get_timestamps(url)
visualize(hatebu_info, timestamps, entry_info, label="Udemy")
plt.legend()
plt.show()

結果

f:id:imslotter:20170409153056p:plain

まだまだ伸びそうですね!

比べることもできる

時系列データを見ることができるので、他のデータと重ねて比べることもできます。*1 先ほどの記事と、もう一つバズっている↓の記事を比べてみましょう

www.sekkachi.com

plt.figure(figsize=(10,7))
url2 = "http://www.kakitaroo.com/entry/Udemy"
url1 = "http://www.sekkachi.com/entry/Heikin_HyoujunHensa_Flow"
entry_info = getdata(url1)
hatebu_info, timestamps = get_timestamps(url1)
visualize(hatebu_info, timestamps, entry_info,label="Udemy", annotate=False)
entry_info = getdata(url2)
hatebu_info, timestamps = get_timestamps(url2)
visualize(hatebu_info, timestamps, entry_info,label="Ave, Std", annotate=False)
plt.legend()
plt.show()

結果

f:id:imslotter:20170409153109p:plain

後発記事が伸びてきていることがわかると思います! こうやって競争させるのも面白いですよね!

まとめと今後やりたいこと

今後やりたいのは、順位を使って、はてブ数を予測できないかな〜ってこと。 データを集める土台はできたので、あとは学習器に各情報と数分後のはてブ数のデータを投げてやって、伸びを予測してみたいなぁ。と思いました。

色々データを集められると、それを使って色々と考えることができるので、楽しいですね!

ブックマーク研究家、始めます。ではではっ!

*1:適当に重ねているだけなので、もうちょっと出力を整えたほうがいいかもしれません。

【多摩センター】静かで美しい都内の穴場『花見』スポット

f:id:imslotter:20170408224743p:plain

こんにちは!ほけきよです。

先週・今週はお花見シーズンですね。 都内にはたくさん素晴らしいおすすめスポットがありますね。 今回、ある情報筋から推薦してもらって、「多摩センター」周辺を桜を見ながら散策してきました。 地元の人しか知らない、地元の人に愛されている素敵なスポットを紹介いたします。

多摩センター周辺

まず、多摩センターがどこにあるか。 都心で生きている人には、都内といえどもあまり馴染みがないのかもしれません。 内側の緑が大体山手線のあたりなので、なかなか東京の中心からは離れた場所にあります。 京王線小田急線で行くことができます。

東京は西に行くほど伝統的な文化を重んじる人などが多い気がします。 京王線に乗っていると、府中辺りから着物をお召しになられた方々が増えてきて、とても風情があります。

f:id:imslotter:20170408215627p:plain

桜スポット

オススメする理由

都内にたくさん桜スポットはありますが、どこも人でごった返していて、落ち着いて眺めることができませんよね。 しまいには荒れ狂う若者に一番いい場所を占拠され、迷惑を被る始末。

しかし、多摩センター周辺はそのようなことが一切ありません。基本的に家族連れの方が多く、たくさんのハピネスがそこにあります。 落ち着いた時が流れていて、まさに癒されながらゆったりお花見をすることができます。

①乞田川(京王永山〜多摩センター)

桜スポットその1は、乞田川です。 あまり馴染みのない川名ですが、とっっっっても素敵です!

京王(小田急でもOK)永山駅から多摩センターまでの線路沿いに川が走っていて、この間3km、実に見事な桜の道が続いています。

f:id:imslotter:20170408220214p:plain

時間にして30-40分くらいでしょうか。 その間延々と続く桜並木、贅沢な時間です。

②宝野公園(多摩センター)

多摩センター駅からほどなく歩くと現れる公園、『宝野公園』 ここも、緑があふれていて、ゆったりと桜を見ながらお酒を飲むのに最高の場所です。

写真

最後に、見に行きたい人、見に行けなかった人のために、今 日撮った写真をいくつか。

乞田川

川沿いの桜並木。

提灯が素敵

うらら

溢れる桜

髪飾りのよう

色合いが美しい

宝野公園

桜並木

街灯と桜のコラボレーション

落ち着いた時間を過ごしたい人は、ぜひ行ってみてはいかがでしょうか。ではでは!

ひと月で偏差値20, TOEIC150点UPさせた英語勉強法を紹介!

f:id:imslotter:20170407205915p:plain

こんにちは!ほけきよです

英語、皆さん得意ですか?

私は年を取るたびに英語を学んでおけばよかった。と後悔だけが募って結局何もしない毎日を過ごしています。 継続が苦手なんです。すぐprocrastinateします。

だからスピーキングは全然だめ。その他の英語力も、全然だめ。

けれど、短期間で英語の点をあげることは可能です。 というか、短期間で英語の点をあげるにはこれしかないです。

『単語を覚える』

実際、高校2年生で英語が伸び悩んでいるとき、模試の偏差値が55から75に上がりました。 また、社会人になってTOEICを受ける直前に頑張って、点数が730から880にあがりました。どちらも1ヶ月です。

単語の暗記は、即効性がある最もシンプルな方法です。 今日は、具体的にどういう風に単語を覚えているかを、紹介します。 これは単語に限らず、私が試験とかで暗記するときには、ルーティンワークとして行うもので、汎用性もあると思います。*1

今日はそんな『ほけきよメソッド』を紹介します!

暗記の手順

1. 続ける日数と覚える単語数を定める。

そんなことから…と思うかもしれませんが、実際はここが一番大事かもしれません。 まず、明確な目標を持ちましょう。その際のポイントを2つ挙げます

■ 自分がちゃんとクリアできそうだと思う課題を課す

■ 日々のインプットは自分がギリギリ追い込めるところまで行う

一見この2つ、相反していそうですよね。具体例を見ていきましょう。

例えば、

『50日で1000単語』

という目標を定めたとしましょう。一日20単語ペースなら、なんとか行けそうですよね。 けれど、1日にインプットする量は自分のMaxだと思う量 (50とか100)にします。理由は2つあります

  • 時間とともに忘れる量が増えていくので、繰り返すことを考慮して覚えていくのが良い
  • 目標より先行している方が、モチベーションが続く

こういう単純作業は、自分の気持ちと記憶力との戦いです。その2つをキープできるように、このような目標設定にするといいでしょう。

2. 暗記の準備

目標を設定したら、あとは覚えていきましょう。

用意するのは、
・ ルーズリーフ
・ 黒いペン(鉛筆)
・ オレンジのボールペン
・ 赤い下敷き

どうやって使っていくかは以下の通りです。

  • ルーズリーフを4等分に線を引く
  • 左側は単語用、右側は意味用にする。
  • 単語は黒で書いてOK, 意味はオレンジのボールペンで書く
    • 赤だと赤下敷きを敷いたときに、微妙に見えちゃうのでオレンジがbetter

図にするとこんな感じ

f:id:imslotter:20170407204056p:plain

3. 暗記をする

準備は整ったので、いよいよ実際に暗記をしていきます。ここは、ステマティックに暗記!です

ポイントは至ってシンプル。

ただがむしゃらに口に出して書いてを繰り返す。

です。読んだだけで覚えられるヒトもいます。けれど、書いたほうが確実に覚えられます。 単語を口に出して、書いて、まさにあらゆる感覚に単語を刻み込むように覚えていきましょう。

【初日】

1. 単語帳を開き、予め定めた単語数分、初見テストをする。
2. 初見テストで間違ったものは意味を確認し、その都度単語と意味を書く
3. 1セット終了したら、再度テストを行う
4. 間違えたものは同様に意味を確認し、ルーズリーフに単語と意味を書いていく
5. 全部間違えなくなるまで、繰り返す

泥臭くて、正直結構時間がかかります。けれど、一番確実に覚えます!! 実際にやってみると、こんな感じ

f:id:imslotter:20170407205528p:plain

【二日目以降】

1. 少なくとも、3日以内のinput分ははじめにテストをする (目標が100単語/日なら300)
2. 間違ったものはルーズリーフに単語と意味を書く
3. (1日の目標にしている語数) ー (はじめのテストで間違った単語) 分のinputをする
4. 一日目の繰り返し

1日だけの暗記では、短期的に覚えただけになりますので、記憶を定着させるためにも、何日間か繰り返しましょう。

できれば、たまに今まで覚えた所全部のテストをしたほうが良いです。本当に定着しているかのテストですね。 大方は覚えていますが、おそらく、何回も書いている苦手単語などにほころびがあるはずです。

また、inputが多すぎても覚えきれず逆効果なので、その日に覚える単語数は、標数からテストで間違った単語数を引いた数程度にしておきましょう。

これを繰り返すだけです。 単純作業でしょう? 詰め込んでいくので、日を追うごとにきつくはなりますが、そこはなんとかモチベーションを保ちましょう。

長続きさせるためのTips

とはいえ辛くなってくるので、少しだけTipsです。単純作業の一番の敵、それはモチベーションです。

私が行っていた具体的なモチベーション継続方法は、進捗の可視化です。

標数 (今回は1000) のバーやマス目を作り、目標に従って覚えるべき単語数に線を区切っていきます。 一日が終わって単語を覚えたら、どんどん塗りつぶしていきましょう。

f:id:imslotter:20170407205026p:plain

一日のinput量をかなり多く定めているため、初めのほうはかなり余裕を持ってタスクをこなせている感が出ると思います。 これが大事です。ゆとりを持って取り組めているというのを可視化することで、モチベーションが落ちること無く望めます。

オススメ単語帳

単語の暗記なので、オススメの単語帳を最後に紹介します。

正直、なんでもよいです。、一冊やり遂げる方が難しく大事なことなので、学校ですでに配られているのならそれをやり遂げましょう。

あえておすすめするなら、というのを幾つか紹介します

大学入試

私が大学入試で使ったのは、以下の二冊です

DUO 3.0

DUO 3.0

システム英単語 (駿台受験シリーズ)

システム英単語 (駿台受験シリーズ)

ありきたりだな…と思いますが、使いやすいです。

  • 短文で構成されていて、単語にフォーカスした作り

これが結構大事で、正直単語の暗記にダラダラとした文章、いらないです。 文の繋がりよりも、まず単語覚えろって感じなので、この二冊が良いと思います。

社会人の方に

TOEICレベルの英単語というのはよくわからない。ビジネス寄りな言い回しを除けば、基本単語で構成されていることが多いからです。 先ほど紹介した二冊のどちらかを覚え直すことで、大体の単語がクリアできます。なにか一冊したいというなら、TOEIC用に適当に気休めの一冊を選ぶか、 あえて負荷をかけてTOEICのその先をめざせる本を選ぶ、のが良いのではないでしょうか。

後者を選ぶ方におすすめするのは『ボキャビル』シリーズです。

TOEIC TEST スーパーボキャブラリービルディング(CD BOOK)

TOEIC TEST スーパーボキャブラリービルディング(CD BOOK)

発信型英語10000語レベル スーパーボキャブラリービルディング(CD3枚付) (CD BOOK)

発信型英語10000語レベル スーパーボキャブラリービルディング(CD3枚付) (CD BOOK)

正直かなり重くて、なにせ数が多いです。私は10000語レベルの方は挫折しました。もうこれは短期ではどうしようもない量でしたね。。コツコツ努力が必要です。 けれど、これを全部マスターすれば、英字新聞などのこ難しい単語もほとんどすべてわかるようになるでしょう。 (TOEICに必要かは別として。)

おわりに

暗記っていうのは、知恵がほとんどいらないものですからね。 地味ですが、たくさん積んでいくと、いずれその効果が現れてきます。

私は高校時代英語の先生から『10%知らない単語が出てくると、英語が読めない』 と言われました。体感的にはもうちょっと推測で頑張れそうですが、たしかに10%以上知らないと、読む効率は激減します。 1ヶ月頑張って一冊の英単語帳を覚えた前後では、全く文の見え方が違ったのを覚えています。まるで革命でした。

テスト前とか、TOEICの点数が欲しいとか、急を要する人は、騙されたと思って頑張ってみてください。一番泥臭いですが、短期で点数をあげるには一番効果があります。

ただし、本当に英語力をつけたい人は、これに加えてコツコツと毎日鍛錬することを繰り返しましょう。英語は慣れなので、毎日することが本当に大事です。TOEIC880とっても、英語力の全くない私が言うのだから、本当です。

英語の力をつける一方法として、一つの参考にしてみてください。ではではっ

*1:合う人、合わないヒトはいるかと思いますが。

【旅と写真】魅惑の岐阜県物語 in 高山・白川郷

f:id:imslotter:20170406235942p:plain

こんにちは、ほけきよです。

先日岐阜県に旅行で行ってきました。 岐阜県メインで旅する人はそこまで多くないかもしれません。

私も行ったことはありますがそこまでガッツリ行ったことはありませんでした。 そんな失礼な私ですが、正直、岐阜、なめてました 昔と今が融合した、素晴らしい街並み、飛騨牛や栗きんとんという贅の限りを尽くした食、 どこか懐かしさまで思い起こさせるような駄菓子。どれを取っても魅力的で素晴らしいところでした。

あまり多くは語らず、旅行記を写真メインで上げていきます。

今回行った所

f:id:imslotter:20170406235603p:plain

郡上八幡、中津川、下呂あたりもちょっと行ってみたかったのですが、今回は時間の都合断念。 *1

白川郷

言わずと知れた豪雪地帯の世界遺産白川郷を初体験

つらら。でかい。 f:id:imslotter:20170406234510j:plain

逆さ合掌造 f:id:imslotter:20170406234603j:plain

和洋折衷 f:id:imslotter:20170406234454j:plain

展望台から。ちょっと雪解けしてたなぁ。 f:id:imslotter:20170406232850j:plain

名物さるぼぼ f:id:imslotter:20170406232643j:plain

飛騨高山

古き良き町並みの残る場所。更に、氷菓君の名は。の聖地。もちろん、予習していきましたよ、千反田さんかわいい。。

喫茶去『かつて』

氷菓では『喫茶一二三』として出てきたお店。本当は二階が聖地だけど、さすがにお一人様であの座敷はきつかったので一階で我慢

f:id:imslotter:20170406231108j:plain

f:id:imslotter:20170406231138j:plain

わらび餅とお抹茶を一服。大変結構なお服加減でございました。

日枝神社

君の名は。」で三ツ葉が踊っている神社。 けど、正直須賀大社のが雰囲気あったかなー。

f:id:imslotter:20170406231648j:plain

古き良き

ノスタルジー f:id:imslotter:20170406232135j:plain

神社の周りの雰囲気が良い f:id:imslotter:20170406233429j:plain

林業

岐阜、林業が盛んなので、街に一枚板のお店とかお箸屋さんとか、普段見ないお店もあってなかなかおもしろかった。 一枚板とかって、普段見ないし、やっぱりめちゃくちゃ高い(数百万とか…!)けど、いつか欲しい!

お箸屋さん。お箸のマナー「嫌い箸」 f:id:imslotter:20170406233913j:plain

美味いもの達

飛騨牛の握り(こって牛) 極上の柔らかさと、脂の甘みが最高峰 f:id:imslotter:20170406231826j:plain

五平餅 くるみ入りの味噌ダレがまた良い f:id:imslotter:20170406231846j:plain

うっしし丼(坂口屋) 飛騨牛の希少部位からなる丼。実に美味 f:id:imslotter:20170406231838j:plain

他にも駄菓子や和菓子も有名で、特に恵那川上屋栗きんとんは本当に美味しい。通いたいレベル また、試食出来るところが多いので、いろいろ食べ比べながらお土産を選べるのも非常にいいところ。

終わりに

いかがでしたか? 少しでも行ってみたいと思っていただけたら嬉しいです!

今年は色々と写真も撮りに行きたいなぁ。ではではっ!

*1:実はもう一箇所行っているのだが、これはまた別記事にて書くつもり。

PROCRASIST