プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

2015年の振り返り

はじめに

10, 11, 12月のまとめができないで年の瀬を迎えることになったわけですが、NHK紅白をBGMにしながら今年の振り返りでもしてみます。

「2014年の振り返りとかやってないだろ」とか思っていたら、以外にも今年2月に行っていたので貼っておきます。

takuan-osho.hatenablog.com

成果確認

上記まとめで書いていた「今後やっていきたいこと」がどれくらい出来たか、成果確認してみる。

何かプロダクトっぽいものを一つ出す

これは未だ出来てない。SwiftiOSアプリ開発の勉強やWebアプリ作成の勉強は続けているのでそろそろどうにかしたいですね。

SphinxのEpub3ビルダー、さっさとPRして取り込んでもらうようにする

これは現在進行形ですが、pull request自体は送っていて、特に問題なければ次のバージョン1.4に取り込まれそうな雰囲気ありますね。

github.com

とはいえ、クオリティ高くないのでどうにかしたいところ。

epub関係のライブラリ作り

作り始めたが、最近になって手を付けはじめた & 全然実装できてないので、これは来年以降の目標の一つになるかと。

github.com

RubyHaskellを少しは書けるようにする

Rubyは仕事で使ったので素人くさいスクリプトくらいなら書けるようになったと思う。

Haskellに関しては全然学習に手を付けられなかった。

低レベル・低レイヤーの技術や知識を深める

最近これらの本使って学習してる。基礎力無いのが丸わかりで死んでますね。

オンラインジャッジではじめるC/C++プログラミング入門

オンラインジャッジではじめるC/C++プログラミング入門

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

写経したりして学習してる成果はgithubに上げて草生やす肥やしにしてます。

github.com github.com github.com

自然言語処理とか機械学習だとか勉強したい

これに関してはほぼ出来てない。

機械学習に関してはPyCon JP 2015のチュートリアルを利用して、自然言語処理に関してはNLTK Bookで学習していこうかなと思っている。

機械学習チュートリアルで学んだことに関しては以下の記事で少し触れている。

takuan-osho.hatenablog.com

今年やったこと

iOSアプリ開発 & Swift

月まとめを見返していたら結構な頻度でこのことについて書いてあったので、割と時間割いていたんだと思う。 三歩進んで二歩下がるくらいの進行具合だったが、やっと勘所が掴めてきたけれど、結局「作りたいアプリがあるか」「あるならどれくらい具体的な形を思い描けているか」「それを実現するためのCocoa Frameworkの機能をどれくらい使いこなせるか」ということが重要(特に最後)だと分かったので、実際にアプリ作れるようになるのはどれくらい先になるか不明だったりする。

だいたい作りたいと思うもの、既に世の中にあるって問題があるので。

Sphinxとかepub関連の作業

成果確認にも書いたけど、これは一応進捗あった作業だ。来年はSphinx-users.jpの副会長もやることになったので、もう少し意欲的に取り組めればいいなと思っています。

サーバー側の技術で新しめのこと

雑多にやっているので上手くカテゴリ分け出来ないけど、以下のようなことをやってたりしてた。

  • ツールとしてのDocker周りの理解を深める
    • Docker Machineなども含めて、ネットワーク周りの理解をちょこちょこ深めた
  • OpenStack
    • 『OpenStackクラウドインテグレーション』って本を読みながら勉強してみた。まだ途中。以下を見れば途中までの成果が分かる。

  • Consul
    • これはつい最近だけど、HashicorpのツールでSerfとこれだけよく使い方が分からずにネットの資料を漁りながら調べてみた。
    • 色々触ってみたところ、凄く有用なツールだと言うことが分かったので、もう少し色々触って理解深めたい。
    • どういう事を学んだかは後日ブログに軽くまとめたい。

他にも色々やった気がするけど、大晦日終わりそうなのでこれくらいにする。

技術系以外でやったこと

技術系含めて行ったことの中で最大のことは「自分の部屋を掃除して整理した」事だと思う。

恥ずかしくて写真とか撮ってないから掲載も出来ないので他の人に伝えられないが、まさにカオスな汚部屋になっていたのを12/29あたりから片付けはじめて、何とか人が寝られる状態に戻せたのは大きかった。いかに埃がたまっていたのかを実感したので、来年はこのマシな状態をキープして過ごせるようにしたい所存。

最後に

来年の抱負は年が明けてからまとめたい。

今年も色々な人にお世話になったと思うので、来年もよろしくお願いしますとお伝えしたいですね。

PyCon JP 2015に参加してきたので振り返る #pyconjp

PyCon JP 2015に参加してきました。今年のPyConも盛況に終わり、参加者も600名を超えるまでに増加したとのことです。イベント開催に尽力した運営スタッフをはじめ、関係者の方の努力には頭が下がるばかりです。

例年真面目に参加エントリを書こうと気負いすぎて全てのことを一度に書こうとして、いつも仕上げられずにお蔵入りする羽目になっているため、今回は少し手法を変えて書いてみます。

取りあえず思いついた感想を数点書いて一旦公開、それから時間を見つけて参加したトークの感想や感じたことなどを気の済むまで追記していく、というスタイルでやってみようかと思います。

後で書くつもりのことは"Todo"とか書いておいて目印にするつもり。時間が無くて書けなくなったらしれっと消すと思いますが。

チュートリアル

昨年のPyCon JPが終わったあとのブログ記事やら感想を見ていたら「チュートリアル参加したかった」という後悔が強くなったということがあったので、今年はちゃんと射程を合わせて有給を取ってフルで参加しようと思い、実行。

チュートリアルの全体的な感想

有休使ってお金を払って午前も午後も参加してよかった!と思いました。

というのも、今回のチュートリアルで個人的に狙っていた効果は以下のようなもので、それが達成されたからです。

  1. 自習すると無駄に時間がかかりそうな分野の知識・情報を概観して後で自学自習する効率を高めるようにすること
  2. お金を払って受講することで習ったことを無駄にしないようにある種の強制力を働かせること

今後の活動にいい影響が出るかどうかは今後の私次第なのでなんとも言えませんが、少なくとも「機械学習」と「ベイズ推定」に関しては数時間かけて詰め込んだことと豊富な参考資料をゲットしたことを考えると、後で振り返る際の取っ掛かりが出来たのではないかと思います。

Machine Learning Bootstrapの感想

チュートリアルは1日券を購入したのですが、それは午前にも午後にもちょうど参加してみたいものがあったからです。その一つがこのMachine Learning Bootstrapでした。

前々から機械学習には興味があって、空いた時間で勉強していたんですが、どの資料を読んでコードを書いてもそもそもの理論が難しかったり前提となる知識が多くて「全然分からん!」となっていました。特にPackt Publishingで半額期間の時に買ったこの本を読んでいたときにそう感じました。

Building Machine Learning Systems With Python: Get More from Your Data Through Creating Practical Machine Learning Systems With Python

Building Machine Learning Systems With Python: Get More from Your Data Through Creating Practical Machine Learning Systems With Python

英語とかそういう以前に、読んでいて「確率的勾配降下法って何?読んでも分からん…」と分からなくなることが多く、機械学習の習得を少し諦めていたという流れがあったところに丁度よさげなチュートリアルが出てきてしめしめと思い、参加。

実際の内容を細かく書こうとすると多分また書き切れなくてボツ行き になると思うので軽めに書くとすると、(環境構築が事前に必要とは言え)細かい所に時間を割かずに実際に動くアプリケーション環境が事前に用意されていてそれを動かしながら学習の様子を試すことが出来たので、自分で環境構築とエラーを出し続けるコードと闘いながら本を読み進めるよりかはずっと効率的に学べた気がします。

実際やった内容の自習編がQiitaで公開されているので興味がある人、興味があるけど参加できなかった人は見てみるといいと思います。

qiita.com

エンジニアのためのベイズ推定入門:確率論的プログラミングのすすめの感想

(詳しくは後日書く。ハミルトニアンモンテカルロ法とNo-U-Turn-Samplerという単語だけは持ち帰った)

午後にはこのチュートリアルに参加しました。参加した正直なところをいうと、自分には前提知識が足りなすぎて消化不良を起こした感があります。

ただ参加して無駄だったかというとそうではなく、後で確率論的プログラミングを習得してみたいと思った時に復習できるポイントをいくつも提示されたのでそれだけでも価値があるのと、一応自分なりの理解として以下のことを何となく持ちかえることが出来たのでそれが成果かなと思います。

  • MCMCは絶対に収束する。が、いつ収束するか分からない。
  • ハミルトンモンテカルロ法は汎用的に収束を速くする手法(らしい)
  • ハミルトンモンテカルロ法はパラメータの調整がすごく重要で難しかった
  • そういう中、No-U-Turn Samplerが考案されてそのパラメータ調整が非常に楽になった。
  • そのNo-U-Turn Samplerを使って実装されているものの一つがpymc3

メモ書きからの抜粋なので間違っている可能性大なので、間違っていたら教えてくれると嬉しいです。

PyCon JP 2015

PyCon JP 2015の全体的な感想

(各トークの感想を律儀に最初から書いていたら書き終わらずに旬を逃すので、後で少しずつ書いていくつもり)

個人的に非常に勿体ないことというか、後悔したことは「チュートリアルの日以外寝不足で頭が回らず、聞きたかったトークも集中して聞けないことがあった」ということです。

チュートリアルの日を除いたどの日も(スプリントの日も!)前日は22〜23時という早い時間に床につくようにしていたのに、PyConに参加するのが楽しみだったのか全然寝付けず、そのせいで母語である日本語のトークなのに全然意味が頭の中に入ってこないで理解できないという状態になったところもあり、非常に勿体ないなと思いました。

そんなこともありましたが、一応事前に参加したいトークを決め、前年の反省を踏まえて「聴講しに行くトークは本当に参加したいものだけに絞り、空いた時間で休んだり他の人とコミュニケーション取ったり、スポンサーブースを見て回ったりしよう」ということを実践したおかげで、燃え尽きずに平均的に楽しめたので少しはイベント参加経験値上がったなと思いました。

そのおかげでこういうことも経験できました。

オープンスペースで勃発的に発生した講義に運良く参加して知見を得られるというのもイベントの醍醐味ですね。

Todo: 各トークの感想を少しずつ書く

(全てではないにしろ、聴講したトークの感想とかを後でかくつもり…)

まとめ

来年のPyCon JPも楽しく参加したいですね!

後、一回くらい海外のPyConにも参加してみたいと思いました。ワーキングプアなので行くとしても近場(韓国か台湾)になると思いますが。そこまでお金を貯めて他の娯楽に散在したくなる誘惑を抑えるというハードルが高そうなのでどうなるかは分かりません。

まあ、そんな感じです。

PyCon JP 2015 参加者のブログ記事をできるだけまとめてみました #pyconjp

まとめサイトが嫌いなのにまとめサイトと同じ事をしていてダブルスタンダードを感じる今日この頃です。

やろうと思った理由

スライド資料、動画、Togetter公式サイトがもう既にまとめているのですが、参加者のブログ記事は労力考えると運営スタッフ主導でまとめないだろうなと思ったのと、自分が後で振り返って読みたいからです。

と思っていたら、運営スタッフの方がこんなツイートを。

もしかしたら後で公式サイトでもまとめられるのかも知れませんね。その時は適当にこのサイトのまとめ内容利用してください。

追記(2015/10/15 21:37時点)

とのことなので、本エントリの意義は半分は果たした!

これから見る人は上記の公式サイトまとめで感想ブログをフォローしていくといいと思いますよ。

それとは関係なく、まだ追加してなかった感想ブログの存在に気がついたらコソッと追加すると思いますけど。

(追記終わり)

それでは以下「スピーカー系」「参加者系」「スポンサー関係者系」というくくりで分けてまとめました。順番は適当です。 スピーカー兼スポンサー企業関係者の方など、複数属性の方が何人かいらっしゃいましたが、そこは独断と偏見で特定の一つのカテゴリに分けるようにしています。

あともちろん見落としもあると思います。単なる有志のまとめなのでクオリティに期待しないで!という注意だけ言っておきます。

スピーカー系

トークの登壇者だけでなく、チュートリアルのヘルプに入っていた人も私が知っている範囲内でここのカテゴリに入れてます。

nwpct1.hatenablog.com

d.hatena.ne.jp

shinyorke.hatenablog.com

ihcomega.hatenadiary.com

t2y.hatenablog.jp

f-shin.net

amacbee.hatenablog.com

sinhrks.hatenablog.com

librabuch.jp

shacho.beproud.jp

blog.ymyzk.com

http://mocobeta-backup.tumblr.com/post/131025586072/pyconjp-janome
mocobeta-backup.tumblr.com

memo.laughk.org

参加者系

nnsnodnb.hatenablog.jp

dackdive.hateblo.jp

chezou.hatenablog.com

d.hatena.ne.jp

yoshiki-utakata.hatenablog.com

soy-curd.hatenablog.com

soy-curd.hatenablog.com

rinnegrid.hatenablog.com

http://takuti.me/note/pyconjp-2015/takuti.me

www.tento-net.com

hogespace.hatenablog.jp

xaro.hatenablog.jp

arvelt.hatenablog.com

tanishiking24.hatenablog.com

nakagami.blog.so-net.ne.jp

スポンサー関係者系

aial.shiroyagi.co.jp

projectphone.lekumo.biz

projectphone.lekumo.biz

最後に

気が向いたら&新しく記事を見かけたら追記するかも知れません。

2015年9月まとめ

はじめに

前回のまとめはこちら。

takuan-osho.hatenablog.com

8月まとめは盛大に遅れたので今回は間に合わせたいと思いながら書いている状態。

やったこと

  • Sphinx+翻訳ハッカソンに参加。
    • 今回はSphinx自体をいじるのではなく、Gitの社内勉強会用資料をSphinxで作るために参加しました。
    • が、参加者の人と色々話していく内に、資料作りよりも前に課題の洗い出しとかが必要だと気づかされたので、あまり目立った成果は出ず。
  • 平日夜にすごいH本をちょびちょび読む会 18回目19回目に参加。
    • Haskellの話しはほとんどしなくなっていますが、圏論的な話しを元にFunctorの話しとかをゆるふわで色々聞けたり話せる機会があるって良いことだと実感する勉強会だなと毎回思います。
    • 直近の会ではMonoid、Homomorphism、Endomorphism、endofunctor、Monoidal Functor、Monoidal Categoryなど新しいことがドバっと出てきて、世界は広いなあと感じる次第。
  • 久々に一人旅をしました。
    • 八戸、奥入瀬渓流のあたりを旅行してきました。
    • なぜこの辺りに旅行したかというと、人生初の一人旅がここだったので、久し振りに訪れたくなったからです。
      • Foursquareによると、5年前の2010年5月に行っていたみたいですね。
    • 大自然が一杯の中でリフレッシュして、晩ご飯には美味しいビュッフェを堪能し、露天風呂で疲れた身体を癒やすことが出来、余った時間でOpenStackとかSwiftによるiOSアプリ開発の勉強が出来て体操よかったですね。
    • 旅行の様子を写真で紹介。

季節の関係か、残念ながら今回はうみねこの大群にはお目にかかれなそうですな。それでも参拝者がちゃんといる所はいいですね、

海でサーフィンしてる人もいる。

渓流眺めながら朝食。朝は寒い。

コントラストだけ上げて撮影してみた。

十和田湖に来てみた。

  • 写真だけだと伝わりづらい様子も以下の動画で今回は伝えられるので紹介。

所感

今月は主にシルバーウィークから始まった長期休暇中にOpenStackとSwiftの学習を集中的に行い、普段よりもずっと深いレベルまで学習することが出来たのがとてもよかったですね。

奥入瀬の静かな自然の中、お金を奮発して堪能したホテルで優雅に過ごしつつまったりと集中して勉強できる幸せを感じ、普段の生活もこの1/5でいいから幸せ感じて勉強したいと思いました。はい。

目に見える成果としては以下の通り。

これから

プログラミングの記事をアウトプットするのと、人前で発表する訓練積みたいところです。できれば多人数いる場所ではなく、こじんまりとした場所で練習したいですね。

2015年8月まとめ

はじめに

前回のまとめはこちら

takuan-osho.hatenablog.com

そしてもう9月が終わろうとしているのに8月まとめを書いていることに対して色々思うことはある。 9月まとめは今日中にやらないとまた死亡する。

私の今の場合、インプット優先するの、よくないですね、と思いました。

やったこと

自分のカレンダーを見ながら思い出すの、辛い…

  • Rebuild meetupに参加した。
    • After showのなんとも言えない空気感を体験して、現場にいる醍醐味を感じました。
  • YAPC Asia TOKYO 2015に参加した。
    • 未だブログに感想エントリ書いてないので、俺のYAPCは終わってない!
    • 今から書くのもどうだろうと思いつつ、うーんとなっているところ。
    • 簡単に今思い出せるだけの感想を言うと、ワンライナーのセッションが一番感心しました。
      • というのも、ある質問に対する登壇者の回答の仕方が素晴らしかったからです。
      • 気が向いたらそのことを含めて書くかも。
  • AnnictのMeetupという名の飲み会に参加した。
    • 最近忙しくて使用頻度が落ちているとはいえ、アニメ視聴記録用に重宝しているサービスなので参加できてよかったですね。
    • 参加した全員がAuthor or Contributerだったのには笑いました。
    • 色々開発の話しも聞けたので、時間を作ってちょくちょくPR投げられるようにしたいという思いを新たにしたところ。
  • 第23回Haskellもくもく会 @ 朝日ネットに参加。
    • こういう機会でHaskell勉強しているけれど、やはり遅々として進まないのでもう少しどうにかしたいところ。
    • とはいえ、あれもこれも手を広げすぎているので、少し抑えた方がいいのではないかと思いつつ、Haskell勉強したい欲はそれなりにあるのでどうしたものか、と考えています。
  • ゼーガペインのリセット祭としてサンライズフェスティバルに参加。
    • 行ってみたらセレブラントがたくさんいたので、熱の高まりを感じました。
    • 来年は10周年で大きな花火の予告がちらほら出ているので、今から楽しみです。

毎回やる度に、箇条書きの中でですます調とだである調が混じるという不具合勃発してますね。

所感

全てが後手後手に回ってしまって今更書いてしまうという体たらくなのが痛い。

これから

プログラミング系のアウトプットできていないのは7月から変わっていないので、どうしたものかと思案中。

Annictをローカルで動かそうと試してみてハマった箇所を記録してみた #annict

Annictというアニメ視聴記録サービスがあります。結構前から利用していて、私がアニメ視聴記録サービスに求めているものが結構あるので、個人的に重宝しているサービスです。Github会議の時に開発者の方とお話しする機会があった際、「こんな機能が欲しい*1んですよね!」と訴えるくらいには使っています。

さて、このAnnictというサービス、日本のアニメ視聴記録サービスとしては珍しい特徴(恐らく現時点では唯一?)があります。それはOSSであるということです。

github.com

今回はこのAnnictをローカルで動かそうとしたときにハマってしまったポイントをメモ代わりに残そうかと思います。

前提条件

開発環境はVagrantを使用して、Ubuntu 14.04を仮想マシンのOSに選びました。

Annictを動かすのに必要なツール類はこの記事が書かれた時点でのREADMEに書かれた指示通りにやっていてみました。

bundle installに失敗する

これはnative extensionを必要とするgemをインストールするときに事前に入れておかなければいけないソフトウェアを入れていなかったことが原因でした。具体的に言うとpgとかrmagickとかのgemをインストールするときの話しですね。

具体的に何を入れておけば問題なかったかどうかは色々試行錯誤しながらだったので全ては覚えていませんがrmagickを入れるためにsudo apt-get install libmagick++-devをして、pgを入れるためにpostgresqlだけでなくsudo apt-get install libpq-devをしたのは覚えています。

bundle exec rake db:createが失敗する

bundle installが成功したのも束の間、次はbundle exec rake db:createが失敗して途方に暮れるという事態に。

エラーを見ていてpostgresql周りの設定が出来ていないのだろうと当たりをつけて色々ググった結果、pg_hba.confという設定ファイルの設定の仕方に問題がありそうだということがなんとなく分かりました。

要するにRailsの知識ではなくてPostgreSQLの知識が足りなくて失敗していたということです。

で、根本原因を突き詰めると知識不足もあり果てしなく時間がかかりそうだったので、とりあえず急場しのぎとしてpg_hba.conf内のauth_methodがmd5になっている箇所をtrustに変更してみたら無事bundle exec rake db:createが通るようになり、続くbundle exec rake db:migratebundle exec rake db:seedも成功するようになって解決。

ただ、これはpg_hba.confの設定をよく分からずにやっているよろしくない例なので、今後設定の意味をちゃんと調べて安全なやり方でやってみたいところですね。

ポートフォワーディングしてもVirtualbox上の開発環境にアクセスできない

ここまで出来たから後はアクセスするだけだ!と思ったのも束の間、今度はbundle exec rails sしたVirtualbox内のRailsにホストマシンからアクセスできない状態に苦しめられました。

ここのポイントは「ポートフォワードを正しく設定しているのにアクセスできない」というところで、原因が本当に分からずに死にました。

色々調べて最終的に分かったことは、Rails 4.2からrails serverのデフォルトホストが変わったことが影響しているということでした。

これはRack側の変更の影響とのことですが、これにより仮想マシンで動かしているRailsにアクセスしようとしても依然と同じようにはアクセスできないため、この記事を書いている時点でのREADMEの説明だとアクセスできなくなっていたということが判明したので、Rails 4.2のリリースノートに書いてあるように-b 0.0.0.0オプションをつけてbundle exec rails sして解決しました。

で、コレに関しては既存のものを恐らく壊さないだろうし、私でも間違えずに貢献できそうだと思ったので、Pull Requestを送っていましたが、記事を書いている間にMergeされました!

Twitterの認証に失敗する

で、これでようやくRailsにアクセスできるようになって「やった!」と思ったら、認証にハマりました。

結論を言うと、これも結局Railsの知識とかではなく、Twitterのアプリケーション登録しているかどうかという話しでした。

Twitterのアプリ登録をして得たConsumer KeyとConsumer Secretを、一連の作業の中で出来たconfig/application.ymlの中の設定に書き込んで解決。

この時地味にハマるのが、Twitterのアプリ登録時にCallback URLを設定していないと認証するときにエラーになるということ。(参考記事)

…こう書いていると自分の知識の無さにへこみますね…

最後に

とりあえず画像変換サーバーのtomboを動かしてやっているわけではないので画像周りは表示されませんが、無事にローカルで動くようになったので、とりあえずよしとしたいです。

今後の開発者が試しやすくなるようにVagrantfileとかDockerfileとかdocker-compose.ymlとかを用意してPull Requestを送れるようになったら送ろうと考えて今四苦八苦しています。

今後も何かしらいじってみて貢献できたらいいなと思って利用していくつもりです。

*1:「アニメ視聴ステータスにHummingbirdでいうOn Holdにあたるステータスを追加して欲しい」という要望でしたが、これは後日、ありがたいことに「中断という視聴ステータスが追加」という形で実装されました

2015年7月まとめ

はじめに

前回のまとめをまず貼ることから。

takuan-osho.hatenablog.com

今回も当月中にまとめがアップできていないのである。

やったこと

  • gulpでslimやsassのコンパイル楽にする方法を覚えた。
    • 秘伝のタレ化してしまいがちなところに気をつけていれば有用なツールっぽい。
    • とはいえ、秘伝のタレになるくらいならnpmだけで対処した方がいいのかも?とか思う今日この頃。
  • react.jsの基本的なところはやっと覚えてきた。
  • 会社の懇親会に出た。
    • いつもこういうのには出てないので、たまには出るかと思って出てみたら意外とよかった。
    • ただ、コレに出る関係でHちょびよみに一回出られなかったのは痛かった。
  • Swiftの勉強会に再び参加。
  • 久しぶりにHちょびよみに参加。
    • 7/30の回でFuntorとApplicative Functorの箇所を学ぶ。
    • 本格的に始まる前に前回までのノートを写してもらう時間があったので非常に助かりましたね。遅れていた分を少しは取り戻せてよかったかな、と。

所感

なんとなく少しはまともに過ごせた気がする1ヶ月だったと思います。

これから

今回も7月まとめを8月にやっているという状態なので、どうにかしたいところ。

とはいえ、ブログ更新も少しずつまた出来るようになってきたので、少しアウトプットを意識してやってみたいですね。

特に、書いたコードのアウトプットが最近出来ていないのでそこをもう少しどうにかしたいです。

まず手始めに、「最近学んだgulpとか使って開発時に色々楽をする」というところから記事にする、という感じかと思ってます。