蛇ノ目の記

技術のことも。そうでないことも。

第85回#pyhackに行ってきた

今月もPython mini Hack-a-thonに行ってきた。

pyhack.connpass.com

先月は冬山合宿だったので通常開催は今年初。

前回の冬山合宿から手を付け始めたゼロから作るDeep Leaningの続きをやる予定だったがしばらく放置していたせいで思いの外、忘れていたので復習が主になった。

ということで3章までの復習(1章はNumpyの使い方が主なのでさらっと)。 2章(パーセプトロン)~3章(ニューラルネットワークのソフトマックス関数あたりまで)を、これまでMarkdownで書いていてダサかった数式をTexコマンドで書き直すなどしていた。Jupyter notebookでまとめているのだけど、後から読み直したり公開したりすることを考えると読みやすい方がいい。

TeXコマンドを使うのが初めてだったので { で場合分けする数式の表現なんかで少し苦戦した。学生のときに覚えておけばよかった。

github.com

Djangoを勉強しはじめた人の疑問に答える場面があったけど、力及ばず@aodagさんの力を借りることとなった。Django力の足りなさを痛感した。Class-based viewsなんかをわかるようになっておきたい。

みんなのPython勉強会#32に行った話

みんなのPython勉強会#32に行ってきた。

startpython.connpass.com

今回の内容は

  • Kubernetes

  • Kaggle

  • Network Embedding

「Kubernetesのエコシステムとその影響」

Dockerも触ったことないインフラ面弱すぎマンとしてはKubernetesの話のレベルがかなり高かった……。あ、KubernetesってK8Sって略すらしいっすよ(唯一、把握できたこと

「Road to kaggle master」

機械学習コンペプラットフォームであるKaggleの話。 めざせKaggleマスター。コンペ上位10%に入るともらえるメダルが集まるとマスターになれる仕組みみたい。賞金付きのコンペもあるので興味湧いてくる。

  • 初級編

  • 中級編

  • 上級編

に分かれていて聞きやすかった。

  • 初級編

Kaggleに入門したらまずはTitanicの生存者予測のコンペをやるのがよさそう。他のユーザのコードが公開されているので、チュートリアルして参考にすると捗りそう。

初級者がハマるのはXgboostというアルゴリズム。これは高い精度が出るので、意味もわからず使ってしまうという罠があるみたい。

  • 中級編

中級者の課題は、特徴量の抽出とバリデーションセットの構築。

コンペで使うデータセットから以下に特徴量を抽出するか。Jupyter Notebookで可視化して効いてきそうな値を探したりする。

バリデーションセットは特に時系列データの際に注意が必要。 学習データ・バリデーションセットで未来と過去を分ける工夫をしたりする。

  • 上級編

上級まで来ると、機械学習モデルをコンペの評価指標へ最適化してさらに高いスコアを目指す。そのためにはアルゴリズムの理解・ハイパーパラメータの調節が必要になってくる。

「いまNetwork embeddingが熱い!」

複雑ネットワーク科学の話。 学生時代に少しだけ複雑ネットワークに絡むことをやっていたので熱が入る。

WWWの構造や交友関係、細胞の代謝ネットワークまでが複雑ネットワークという構造になっている。

ネットワークが表現する対象をノード、繋がりをエッジと呼ぶ。WWWならWebサイトがノードでリンクがエッジ。

細胞から人間関係、インターネットまでが同じ構造になっていると考えるとロマンがすごい。

複雑ネットワークの性質として2つ挙げる。

  • 膨大なリンクを持つ極わずかなノード(ハブ)・大してリンクが持ってない大多数のノード

  • ネットワークの規模によらず全てのノード同士は数ステップで繋がっている

6次の隔たり」という例がある。世界中のどの人同士も約6人の知り合いを介して繋がっている、というもの。日本でPythonエンジニアやってる人とサバンナで携帯使ってるマサイ族の人が6人で繋がるようなことになる。実際に繋がるかは置いておいて、これを可能にするのが膨大なリンクを持つノードと理解している。何千何百の知り合いがいる人と繋がっていれば、その先にいる人が地球の裏側にいることも全然あり得るだろう。それを繰り返すと、日本のPythonエンジニアからマサイ族に到達する。

ハブの役割に着目して伝染病の感染をモデル化するといった応用事例がある。

複雑ネットワークにはBetweeness Centralityという値がある。和訳すると媒介中心性。辻さんのスライドの引用が以下。

自分以外のノード間の接続に、自分がどれくらいの影響度合いで関わっているかを表現

この値を使うと、ネットワーク内になるコミュニティ検出ができる。Twitterでいうところの〜クラスタ。この値が高いノードはコミュニティ間の橋渡し役になっていると考えられ、そこを基準にすればネットワークからコミュニティ構造を探し出せる。

複雑ネットワークの考えをWeb開発に応用すると、「この商品を買った人はこれも買っています」「あなたのフォロワーはこの人をフォローしています」ができるようになる。購入履歴やフォロー状況をベクトル化して、ネットワーク構造をつくる。これがNetwork Embedding。

実際のECサイトSNSのノードはあまりに膨大。しかし購入した商品やフォローしているユーザはそのごく一部で、ベクトル化したときに次元がやたら大きいだけでほとんどの値が0になる。コンピュータに計算させるときにもつらいので、ぐっと縮約する。そこでDeep Learningが使われているらしい。Deep Autoencoderという。そして縮約したデータを機械学習に使うとか。

複雑ネットワークを応用することで、実世界の様々な物事を機械学習アルゴリズムで扱うことができそう(小並感

複雑ネットワークの本としては、この分野の第一人者アルバート=ラズロ・バラバシによる「新ネットワーク思考」がわかりやすいし面白い。学術書ではなく科学読み物なのでハードルもそんなに高くないのでおすすめ。

LT

エディタで書いたMarkdown形式のスライドをGitで管理して公開までできるGitPitchの紹介と布教をするLTをやった。

GitPitch Presents: github/NaoY-2501/GitPitch-Slides

雪山合宿に行ってきた話とライブに行ってきた話

#pyhackの雪山合宿に行ってきた。普段のもくもく会は常連だけど合宿は今回が初参加。

pyhack.connpass.com

長野県菅平のペンション マウンテンパパで行われた。

@terapyonの車に乗せてもらって、御徒町から出発。12時半に上田駅近くの蕎麦屋かたなやで昼食。ビールやつまみを買い出ししてからペンションへ、という流れ。

ゼロから作るDeep Leaningを進めたり、美味しいごはんとビールを堪能しまくったりした。

ゼロからDeepは第3章ニューラルネットワーク、手書き数字のクラス分類実装の辺りまで進捗。難しい数式を出さず、かつ(基本的に)NumpyとMatplotlibだけを使ってスクラッチで実装していくスタイルで解説する大変さは想像して余りある。しかしそのお陰で本当にわかりやすい。これからも徐々に進めていきたい。

1/17に発売された「プログラマの数学 第2版」も持っていったけど、こちらは読み始めることができず。腰を据えて一冊に挑むのがいいのかもしれない。

せっかく雪山に来たので雪だるまを粗製乱造したりもした。

雪だるま作りって性格出る……。

今回の学び

  • かたなやの蕎麦はボリュームが半端ない。

  • 合宿で進める本は一冊に絞るのがいいかも

  • 合宿スタイルはすごく進捗出る

  • マウンテンパパのご飯は美味しい

合宿自体は21日までだけど、siraphのライブがあったので一足早く帰ってきた。次の夏山合宿はフルで参加したい。

siraphは同人音楽やアニソンで活躍するAnnabelを中心にしたバンド。バンドメンバーが豪華。 siraph - Wikipedia

レコ発ならぬ酒発とかいう謎ライブ。大和川酒造とコラボしてラベルをsiraph仕様にした日本酒のお披露目的な。ロックバンドと酒蔵がいつどこで知り合ったのかは誰も知らない。

今回はゲストとしてシンガーソングライターのkidlitがバックコーラスとして参加。kidlitも好きなのでテンション上がったし、今後ツインボーカルの曲が作られたらすごく嬉しい。

最後にクロスフェードデモを貼って布教。きちんとしたMVを作るのがsiraphの今年の目標のうちの一つだとか。


siraph Xfade demo


【siraph】「quiet squall」クロスフェード

ブログ初めには遅すぎた

新年明けました。おめでとうございます。

ゼルダにドハマりしたり風邪ひいたりしているうちに仕事が始まり、気付けば2018年も2週間が経過していました。

ゼルダは全然進んでない。オープンワールドにありがちな寄り道をしすぎて本筋を見失う現象が発生している。

新年に入ってからの出来事をば。

1/10のみんなのPython勉強会 #31で登壇してきました。

Pythonでスタートして、Pythonを仕事にするまでの話というエモめなやつ。転職するまでの話とかBPに入ってからの話、それとPythonコミュニティについての話。

GitPitch Presents: github/NaoY-2501/GitPitch-Slides

LT以外で喋るのは初めだったのでえらく緊張した。これからも登壇するチャンスがあればきっちり拾っていきたいし、そのためには素振りしておかないとならない。実のところ、今年に入ってから趣味の開発をなにもできていない。networkXを使ってみるとか、今度こそ機械学習を勉強するとか色々やりたいことはあるのになかなか手を付けられずにいる。まあ焦っても仕方ないので、のんびりいこう。

2018年の目標をいくつか並べて遅すぎたブログ初めを締めたい。

  • 積んである技術書を消化する

  • ブログをもっと書いていく

    • 最低でも週に1本は書いておきたい
  • 本に関わる

    • レビューに関わる

    • 書く実績を解除する

  • Python基礎力を上げる

  • 仕事で機械学習に関わりたい

最後のは目標というか願望になってる。

2018年もよろしくお願いします。

2017年を振り返る

年の瀬なので今年を振り返ってみる。

雑に言ってしまえば2017年はビープラウド以前・以後に分かれると思う。今回は主に以前に焦点を当てていきたい。

以後については先日の記事が詳しい。お陰さまであの記事を書いた12/27は約300のアクセスがありました。普段の15倍くらいの数です。すごい。読んでくださった方・拡散してくださった方、ありがとうございました。

前職の記憶

新卒で入社して今年の9月半ばまでの約1年と5ヶ月半、某大手SIer子会社の金融系部署で働いていた。何をしていたのかあまり記憶に残ってない。最後の方は災害時にDBを切り替えるためバッチ処理シェルスクリプトで書いていたことと、システムのリリース当日に24時間以上会社にいたことは覚えている。ちなみに転職を考え始めたのは2016年の秋頃から。早い。

Pythonコミュニティ・勉強会への参加

もくもく会に参加し始めた。connpassの参加イベントを遡ると2/26の第14回 Pythonもくもく会 が初参加のようだ。SQUEEZEさんの旧オフィスが会場で、雨が降っていて寒い日だった記憶がある。DjangoでIT勉強会検索サイトを作るための調べごとをしていた。このとき作り始めたのがco[m|nn]pass。コードがすごいことになっているので更新された知識を活用して書き直したい。

同じく2月にPython3エンジニア認定基礎ベータ試験を受験してみた。結果は無事、合格。

3月にはキカガクさんの機械学習・人工知能『脱ブラックボックス』少人数セミナーを受けた。わかりやすい解説のお陰で数学が苦手だけども付いていくことができた。

4月に入って、4/15のPython mini Hack-a-thonに初参加。飲み会で中神さんとSIerつらみあるあるについて話した記憶がある。

PyCon JP 2017のスタッフになったのも4月。みんなのPython勉強会でデザインチームの新村さんがスタッフを募集していたのがきっかけ。初作業日は4/19で、このときはブログの更新をしていた。そのときの記事 PyCon JP Blog: PyCon JP 2017 スタッフ作業日#1(2017.04)を開催しました!

6月は、たかのりさんに誘われてOSSユーザーのための勉強会 #19 PythonでLTをした。みんなのPython勉強会以外の場で話すのは初めてだったので地味に緊張していた。

www.slideshare.net

そして9月のPyCon JP 2017。初参加・初スタッフにも関わらずオープニング・クロージングで司会をするという経験をした。Jonasがいてくれなかったら乗り切れなかった。ありがとう。PyCon JPスタッフ参加がきっかけで、それまで顔見知り程度だったPythonista達や知らなかったPythonista達と距離を縮めることができた。

10月にはPython入門者向けハンズオン #6でTAをやった。教える立場になるのはこれが初めて。2回目以降はまだだ。

今月はみんなのPython勉強会の特別編 Pythonオープンサイエンスシンポジウム in つくば で科学技術分野で使われているPythonの話を聞いてきた。

また、石上さん(@ishigamipro)が主催しているメイドカフェでノマド会に初参加した。メイドさんかわいかった。さらにメイドカフェで勉強会にも参加して、Discord botについてLTをしてきた。

写真

flickrはこちら。 Nao Y. | Flickr

5月13日から15日に掛けて、台湾旅行に行った。初台湾。

現地に知り合いがいたお陰で言葉で困ることはなかった。ありがとう、現地の知り合い。

5月だというのに既にえらく暑かった。雨がちな気候と聞いていたけど幸い、降られることはなかった。

1日目は主に九份、2日目は台北市内(台北101とか市林夜市)、3日目は台北市内で昼を食べてから帰国。という流れだった。5月15日が誕生日なので台湾にいる間に年齢がインクリメントされるという体験もあった。

Taiwan

PyCon JP 2017の直後に九州の友人のところに遊びに行ってきて、もちろん写真を撮ったのだけれどFlickrにアップするのを忘れていた…。

今月にはフィルムカメラ Advent Calendar 201712/19分を担当。夜の新宿・代々木周辺の風景を撮った写真を記事にした。

Shinjuku Night Scene

ここらで今年の振り返りを終えたい。

Pythonコミュニティに顔を出して始めてPyCon JP 2017スタッフをやり、その直後に転職。この一年でPythonistaの知り合いがかなり増えた。というよりPythonistaの知り合いほぼ全てが今年知り合った。かなり濃密な一年だった。

2017年はありがとうございました。

2018年も引き続きよろしくおねがいします。よいお年を。

SEからPythonエンジニアにジョブチェンジして早くも3ヶ月経った話

某IT勉強会支援サイトとか某Python学習サービスPythonでやっている会社に入社してから3ヶ月が過ぎた。

そういうわけでビープラウドに入社してからの話。

3時間がんばれたら3日いける。3日いけたら3週間いける。そんな言葉を入社してすぐにもらった覚えがある。気付いたらもう3ヶ月。

まずはざっくりと今、何をやっているか。DjangoでWeb開発してます。入社前にやっていたDjango Girls Tutorialでは触ることのなかった Class-Based View で悩んだりユニットテストの修正で迷ったりしているけれど、私はげんきです。

転職の経緯

  • 新卒で入ったSIerではコードを書く機会がほぼ無く、エンジニアとしてこれでいいのか?と思ってた

    • 就職してから気付いたけど自分で思っていたよりコード書くのが好きだった
  • 学生の頃に少しPythonやってたので、勉強を再開しつつPythonやれる仕事を探そう

  • 転職エージェント使ったりPyCon JPスポンサーの会社を見てみたり

  • ビープラウドは猛者のたくさんいる会社という印象だったけど意を決してメールした

  • 入社できた

入社して変わったこと

  • Pythonで仕事ができる

  • コミュニケーションは全てSlack

    • 情報共有がスムーズ

    • #randomでの雑談も楽しい

  • タスクの管理はRedmine

    • 自分の仕事がチケット単位になっているとわかりやすい
  • コードの管理がGitHub

    • PR出してコードレビューしてもらってMergeという流れ

    • コードレビューからして新鮮な概念だった

  • (週5いつでも)リモートワークができる

    • 気軽に自宅で仕事ができる

    • 宅配の荷物が来ても大丈夫

    • ベランダにアウトドアチェア出して仕事したりした

  • 技術の話ができる

    • 前職は…お察しください
  • 猛者がたくさんいる

    • 困ったときの強い相談相手

    • PythonだけでなくVagrantとかDockerのことを教えてもらう機会もあった

  • スーツとか着なくていい

    • 似合わないので服装自由は嬉しいことこの上ない

    • 生活と仕事がくっきり分かれすぎる感じがあまり好きじゃなかった

  • 毎日、乳酸菌とってる

入社して驚いたこと

環境が激変したけど、今ではだいぶ順応してる。前より格段に働きやすい環境なので嬉しい変化しかなかった。

これからも増々Pythonでがんばっていこう。

フィルムで新宿周辺の夜を撮ってみる

これは フィルムカメラ Advent Calendar 12/19 の記事です。

フィルムで新宿・代々木の夜を撮ってきた。一度目は9月29日、二度目は11月17日。

カメラとフィルムは以下の通り。

  • Nikon FE2 Ai NIKKOR 35mm f2S

  • Natura 1600 (09/29)

  • CineStill 50D (11/17)

街角スナップはNatura 1600、光跡夜景にはCineStillという映画撮影用フィルムから作られたフィルムを使ってみた。CineStillは常温で放置してたせいでおかしな模様が出たコマがあった。やめよう常温放置。

まずはNatura 1600で撮った街角スナップ。9月29日。

Untitled

代々木の踏切手前にあるバーガー屋さん。店から漏れる灯りが暖かげ。

Untitled

Untitled

代々木駅横の高架下のあちらとこちら。

Untitled

新宿駅南口付近。ぼやっと光るネオンサイン。

Untitled

新宿駅西口。ヘッドライトの群れと光を反射する車体の金属感。

CineStill 50Dで撮った光跡夜景。11月17日。

ゴリラポッドをガードレールや歩道橋の欄干に括り付けて撮った。どれも露光時間は30秒くらい。

Untitled

代々木の踏切。電車の霊が通り過ぎたかのよう。

Untitled

新宿駅の南口・新南口のはざま。行く光と来る光。

Untitled

人混みはフィルムに焼き付かない。

Untitled

赤い光が分かれていく場所。

Untitled

半透明の人の群れ。

Flickr Albumを作ったのでどうぞよしなに。記事に載せていない写真も何枚かあります。

Shinjuku Night Scene | Flickr

Shinjuku Night Scene