Consulがよく分からなかったので色々調べて勉強する時に訳だった資料をまとめてみた
最近のDevOpsだとかInfrastructure as Codeとかの流れを汲んだ開発スタイルに少しでも触れていたらHashicorp社製ツールには何らかの形でお世話になっている人が多いと思います。私もその一人ですが、Hashicorp製のツールの中で「これ、よく分からん」というものがあって、それがConsulとSerfでした。
というわけで、去年の年末から年始にかけてConsulいじってみて、「なるほど、全自動オーケストレーションとかに使えるツールなのか(そこまで設定するのが大変そうだけど)」という感触を掴めるくらいには理解できてきました。
で、以下はConsulを勉強する時にとても役に立った資料です。
一番最初の「やわらかConsul」はConsulでどういうことが出来るのかを実際にConsulクラスタを組んで体験できるのでオススメです。ただ、バージョンが変わったりしていてビルド時にバージョン番号を一部変更する必要があったりするので、docker-composeの使い方が分かってないとそこで詰まるかも知れません。
2つ目のエントリもやわらかConsulと似たようなものですが、dockerを利用してConsulクラスタを組んで新しめの機能を体験できるようになるのでこれもオススメです。この中で使われているgliderlabsのconsulのDockerfileを読むと軽量なAlpine LinuxのDockerイメージが有効活用されてるなってことも分かって勉強になると思います。
最後はHashicorp製ツールのことを調べていたら絶対にいくつかの資料が出てくる前佛さんのサイトですが、参考役やslideshareの資料含めて、「Consulとは何か?」「Serfとは何か?」ということが分かるので、こちらも読んでみると非常にためになります。 前佛さんはHashicorp社製ツールについて最近本を出しているので、気になる方はそちらも購入してみると良いでしょう。 (私はもう既に買いました)
DevOpsを支える HashiCorpツール大全 (Think IT Books)
- 作者: 前佛雅人,クリエーションライン株式会社
- 出版社/メーカー: インプレス
- 発売日: 2015/10/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
2015年の振り返り
はじめに
10, 11, 12月のまとめができないで年の瀬を迎えることになったわけですが、NHK紅白をBGMにしながら今年の振り返りでもしてみます。
「2014年の振り返りとかやってないだろ」とか思っていたら、以外にも今年2月に行っていたので貼っておきます。
成果確認
上記まとめで書いていた「今後やっていきたいこと」がどれくらい出来たか、成果確認してみる。
何かプロダクトっぽいものを一つ出す
これは未だ出来てない。SwiftとiOSアプリ開発の勉強やWebアプリ作成の勉強は続けているのでそろそろどうにかしたいですね。
SphinxのEpub3ビルダー、さっさとPRして取り込んでもらうようにする
これは現在進行形ですが、pull request自体は送っていて、特に問題なければ次のバージョン1.4に取り込まれそうな雰囲気ありますね。
とはいえ、クオリティ高くないのでどうにかしたいところ。
epub関係のライブラリ作り
作り始めたが、最近になって手を付けはじめた & 全然実装できてないので、これは来年以降の目標の一つになるかと。
Ruby、Haskellを少しは書けるようにする
Rubyは仕事で使ったので素人くさいスクリプトくらいなら書けるようになったと思う。
Haskellに関しては全然学習に手を付けられなかった。
低レベル・低レイヤーの技術や知識を深める
最近これらの本使って学習してる。基礎力無いのが丸わかりで死んでますね。
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ
- 発売日: 2014/06/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
- 作者: 渡部有隆,Ozy(協力),秋葉拓哉(協力)
- 出版社/メーカー: マイナビ
- 発売日: 2015/01/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
プログラミングの基礎 (Computer Science Library)
- 作者: 浅井健一
- 出版社/メーカー: サイエンス社
- 発売日: 2007/03
- メディア: 単行本
- 購入: 17人 クリック: 409回
- この商品を含むブログ (126件) を見る
写経したりして学習してる成果はgithubに上げて草生やす肥やしにしてます。
github.com github.com github.com
自然言語処理とか機械学習だとか勉強したい
これに関してはほぼ出来てない。
機械学習に関してはPyCon JP 2015のチュートリアルを利用して、自然言語処理に関してはNLTK Bookで学習していこうかなと思っている。
機械学習をチュートリアルで学んだことに関しては以下の記事で少し触れている。
今年やったこと
iOSアプリ開発 & Swift
月まとめを見返していたら結構な頻度でこのことについて書いてあったので、割と時間割いていたんだと思う。 三歩進んで二歩下がるくらいの進行具合だったが、やっと勘所が掴めてきたけれど、結局「作りたいアプリがあるか」「あるならどれくらい具体的な形を思い描けているか」「それを実現するためのCocoa Frameworkの機能をどれくらい使いこなせるか」ということが重要(特に最後)だと分かったので、実際にアプリ作れるようになるのはどれくらい先になるか不明だったりする。
だいたい作りたいと思うもの、既に世の中にあるって問題があるので。
Sphinxとかepub関連の作業
成果確認にも書いたけど、これは一応進捗あった作業だ。来年はSphinx-users.jpの副会長もやることになったので、もう少し意欲的に取り組めればいいなと思っています。
サーバー側の技術で新しめのこと
雑多にやっているので上手くカテゴリ分け出来ないけど、以下のようなことをやってたりしてた。
- ツールとしてのDocker周りの理解を深める
- Docker Machineなども含めて、ネットワーク周りの理解をちょこちょこ深めた
- OpenStack
- 『OpenStackクラウドインテグレーション』って本を読みながら勉強してみた。まだ途中。以下を見れば途中までの成果が分かる。
シルバーウィークの成果です。 pic.twitter.com/tLPnYmPO8v
— SHIMIZU Taku (@takuan_osho) 2015, 9月 27
- Consul
他にも色々やった気がするけど、大晦日終わりそうなのでこれくらいにする。
技術系以外でやったこと
技術系含めて行ったことの中で最大のことは「自分の部屋を掃除して整理した」事だと思う。
恥ずかしくて写真とか撮ってないから掲載も出来ないので他の人に伝えられないが、まさにカオスな汚部屋になっていたのを12/29あたりから片付けはじめて、何とか人が寝られる状態に戻せたのは大きかった。いかに埃がたまっていたのかを実感したので、来年はこのマシな状態をキープして過ごせるようにしたい所存。
最後に
来年の抱負は年が明けてからまとめたい。
今年も色々な人にお世話になったと思うので、来年もよろしくお願いしますとお伝えしたいですね。
PyCon JP 2015に参加してきたので振り返る #pyconjp
PyCon JP 2015に参加してきました。今年のPyConも盛況に終わり、参加者も600名を超えるまでに増加したとのことです。イベント開催に尽力した運営スタッフをはじめ、関係者の方の努力には頭が下がるばかりです。
例年真面目に参加エントリを書こうと気負いすぎて全てのことを一度に書こうとして、いつも仕上げられずにお蔵入りする羽目になっているため、今回は少し手法を変えて書いてみます。
取りあえず思いついた感想を数点書いて一旦公開、それから時間を見つけて参加したトークの感想や感じたことなどを気の済むまで追記していく、というスタイルでやってみようかと思います。
後で書くつもりのことは"Todo"とか書いておいて目印にするつもり。時間が無くて書けなくなったらしれっと消すと思いますが。
チュートリアル
昨年のPyCon JPが終わったあとのブログ記事やら感想を見ていたら「チュートリアル参加したかった」という後悔が強くなったということがあったので、今年はちゃんと射程を合わせて有給を取ってフルで参加しようと思い、実行。
チュートリアルの全体的な感想
有休使ってお金を払って午前も午後も参加してよかった!と思いました。
というのも、今回のチュートリアルで個人的に狙っていた効果は以下のようなもので、それが達成されたからです。
- 自習すると無駄に時間がかかりそうな分野の知識・情報を概観して後で自学自習する効率を高めるようにすること
- お金を払って受講することで習ったことを無駄にしないようにある種の強制力を働かせること
今後の活動にいい影響が出るかどうかは今後の私次第なのでなんとも言えませんが、少なくとも「機械学習」と「ベイズ推定」に関しては数時間かけて詰め込んだことと豊富な参考資料をゲットしたことを考えると、後で振り返る際の取っ掛かりが出来たのではないかと思います。
Machine Learning Bootstrapの感想
チュートリアルは1日券を購入したのですが、それは午前にも午後にもちょうど参加してみたいものがあったからです。その一つがこのMachine Learning Bootstrapでした。
前々から機械学習には興味があって、空いた時間で勉強していたんですが、どの資料を読んでコードを書いてもそもそもの理論が難しかったり前提となる知識が多くて「全然分からん!」となっていました。特にPackt Publishingで半額期間の時に買ったこの本を読んでいたときにそう感じました。
- 作者: Luis Pedro Coelho,Willi Richert
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/03/26
- メディア: ペーパーバック
- この商品を含むブログを見る
英語とかそういう以前に、読んでいて「確率的勾配降下法って何?読んでも分からん…」と分からなくなることが多く、機械学習の習得を少し諦めていたという流れがあったところに丁度よさげなチュートリアルが出てきてしめしめと思い、参加。
実際の内容を細かく書こうとすると多分また書き切れなくてボツ行き になると思うので軽めに書くとすると、(環境構築が事前に必要とは言え)細かい所に時間を割かずに実際に動くアプリケーション環境が事前に用意されていてそれを動かしながら学習の様子を試すことが出来たので、自分で環境構築とエラーを出し続けるコードと闘いながら本を読み進めるよりかはずっと効率的に学べた気がします。
実際やった内容の自習編がQiitaで公開されているので興味がある人、興味があるけど参加できなかった人は見てみるといいと思います。
エンジニアのためのベイズ推定入門:確率論的プログラミングのすすめの感想
(詳しくは後日書く。ハミルトニアンモンテカルロ法とNo-U-Turn-Samplerという単語だけは持ち帰った)
午後にはこのチュートリアルに参加しました。参加した正直なところをいうと、自分には前提知識が足りなすぎて消化不良を起こした感があります。
ただ参加して無駄だったかというとそうではなく、後で確率論的プログラミングを習得してみたいと思った時に復習できるポイントをいくつも提示されたのでそれだけでも価値があるのと、一応自分なりの理解として以下のことを何となく持ちかえることが出来たのでそれが成果かなと思います。
- MCMCは絶対に収束する。が、いつ収束するか分からない。
- ハミルトンモンテカルロ法は汎用的に収束を速くする手法(らしい)
- ハミルトンモンテカルロ法はパラメータの調整がすごく重要で難しかった
- そういう中、No-U-Turn Samplerが考案されてそのパラメータ調整が非常に楽になった。
- そのNo-U-Turn Samplerを使って実装されているものの一つがpymc3
メモ書きからの抜粋なので間違っている可能性大なので、間違っていたら教えてくれると嬉しいです。
PyCon JP 2015
PyCon JP 2015の全体的な感想
(各トークの感想を律儀に最初から書いていたら書き終わらずに旬を逃すので、後で少しずつ書いていくつもり)
個人的に非常に勿体ないことというか、後悔したことは「チュートリアルの日以外寝不足で頭が回らず、聞きたかったトークも集中して聞けないことがあった」ということです。
チュートリアルの日を除いたどの日も(スプリントの日も!)前日は22〜23時という早い時間に床につくようにしていたのに、PyConに参加するのが楽しみだったのか全然寝付けず、そのせいで母語である日本語のトークなのに全然意味が頭の中に入ってこないで理解できないという状態になったところもあり、非常に勿体ないなと思いました。
そんなこともありましたが、一応事前に参加したいトークを決め、前年の反省を踏まえて「聴講しに行くトークは本当に参加したいものだけに絞り、空いた時間で休んだり他の人とコミュニケーション取ったり、スポンサーブースを見て回ったりしよう」ということを実践したおかげで、燃え尽きずに平均的に楽しめたので少しはイベント参加経験値上がったなと思いました。
そのおかげでこういうことも経験できました。
.@tokibito 先生の薫陶を受けてMercurialのextension作ってみた成果を投下。 #pyconjp pic.twitter.com/4SWbMG5qaq
— SHIMIZU Taku (@takuan_osho) 2015, 10月 10
オープンスペースで勃発的に発生した講義に運良く参加して知見を得られるというのもイベントの醍醐味ですね。
Todo: 各トークの感想を少しずつ書く
(全てではないにしろ、聴講したトークの感想とかを後でかくつもり…)
まとめ
来年のPyCon JPも楽しく参加したいですね!
後、一回くらい海外のPyConにも参加してみたいと思いました。ワーキングプアなので行くとしても近場(韓国か台湾)になると思いますが。そこまでお金を貯めて他の娯楽に散在したくなる誘惑を抑えるというハードルが高そうなのでどうなるかは分かりません。
まあ、そんな感じです。
PyCon JP 2015 参加者のブログ記事をできるだけまとめてみました #pyconjp
まとめサイトが嫌いなのにまとめサイトと同じ事をしていてダブルスタンダードを感じる今日この頃です。
やろうと思った理由
スライド資料、動画、Togetterは公式サイトがもう既にまとめているのですが、参加者のブログ記事は労力考えると運営スタッフ主導でまとめないだろうなと思ったのと、自分が後で振り返って読みたいからです。
と思っていたら、運営スタッフの方がこんなツイートを。
#pyconjp 2015のブログ記事、どれくらいあるんだろうか
地道に探していくのさすがに効率悪いよな
google formがいいのかな
— カレーメシ (@c_bata_) October 14, 2015
もしかしたら後で公式サイトでもまとめられるのかも知れませんね。その時は適当にこのサイトのまとめ内容利用してください。
追記(2015/10/15 21:37時点)
PyCon JP 感想ブログエントリをまとめています。掲載されていない場合はページ下部のGoogle Formからお伝え下さい。 https://t.co/LpGAoyzkcS #pyconjp
— PyCon JP 2015 (@PyConJ) October 15, 2015
ありがとうございましたー / 他1コメント http://t.co/aDGcElGup6 “PyCon JP 2015 参加者のブログ記事をできるだけまとめてみました #pyconjp - プログラマ行進曲第二章” http://t.co/FEf5Wy86UY
— カレーメシ (@c_bata_) October 15, 2015
とのことなので、本エントリの意義は半分は果たした!
これから見る人は上記の公式サイトまとめで感想ブログをフォローしていくといいと思いますよ。
それとは関係なく、まだ追加してなかった感想ブログの存在に気がついたらコソッと追加すると思いますけど。
(追記終わり)
それでは以下「スピーカー系」「参加者系」「スポンサー関係者系」というくくりで分けてまとめました。順番は適当です。 スピーカー兼スポンサー企業関係者の方など、複数属性の方が何人かいらっしゃいましたが、そこは独断と偏見で特定の一つのカテゴリに分けるようにしています。
あともちろん見落としもあると思います。単なる有志のまとめなのでクオリティに期待しないで!という注意だけ言っておきます。
スピーカー系
トークの登壇者だけでなく、チュートリアルのヘルプに入っていた人も私が知っている範囲内でここのカテゴリに入れてます。
- PyCon JP 2015 発表資料 - AtsuoIshimoto's blog
- hagino3000's blog: PyConJPで「アドネットワークのデータ解析チームを支える技術」という発表をしました
参加者系
- 10nin.com - BLOG : PyCon JP 2015 参加レポート (その1:1日目午前)
- 10nin.com - BLOG : PyCon JP 2015 参加レポート (その2:1日目午後)
- 10nin.com - BLOG : PyCon JP 2015 参加レポート (その3:2日目)
- PyCon JP 2015 | (ns chopp.in/clj
- PyCon JP 2015 〜10月10日編〜 | hotchpotch
- PyCon JP 2015 〜10月11日編〜 | hotchpotch
- PyConJP 2015 10日(土) 参加レポート | 木星ホテル
yoshiki-utakata.hatenablog.com
http://takuti.me/note/pyconjp-2015/takuti.me
スポンサー関係者系
最後に
気が向いたら&新しく記事を見かけたら追記するかも知れません。
2015年9月まとめ
はじめに
前回のまとめはこちら。
8月まとめは盛大に遅れたので今回は間に合わせたいと思いながら書いている状態。
やったこと
- Sphinx+翻訳ハッカソンに参加。
- 平日夜にすごいH本をちょびちょび読む会 18回目と19回目に参加。
- 久々に一人旅をしました。
- 八戸、奥入瀬渓流のあたりを旅行してきました。
- なぜこの辺りに旅行したかというと、人生初の一人旅がここだったので、久し振りに訪れたくなったからです。
- Foursquareによると、5年前の2010年5月に行っていたみたいですね。
- 大自然が一杯の中でリフレッシュして、晩ご飯には美味しいビュッフェを堪能し、露天風呂で疲れた身体を癒やすことが出来、余った時間でOpenStackとかSwiftによるiOSアプリ開発の勉強が出来て体操よかったですね。
- 旅行の様子を写真で紹介。
季節の関係か、残念ながら今回はうみねこの大群にはお目にかかれなそうですな。それでも参拝者がちゃんといる所はいいですね、
- 写真だけだと伝わりづらい様子も以下の動画で今回は伝えられるので紹介。
所感
今月は主にシルバーウィークから始まった長期休暇中にOpenStackとSwiftの学習を集中的に行い、普段よりもずっと深いレベルまで学習することが出来たのがとてもよかったですね。
奥入瀬の静かな自然の中、お金を奮発して堪能したホテルで優雅に過ごしつつまったりと集中して勉強できる幸せを感じ、普段の生活もこの1/5でいいから幸せ感じて勉強したいと思いました。はい。
目に見える成果としては以下の通り。
シルバーウィークの成果です。 pic.twitter.com/tLPnYmPO8v
— SHIMIZU Taku (@takuan_osho) September 27, 2015
これから
プログラミングの記事をアウトプットするのと、人前で発表する訓練積みたいところです。できれば多人数いる場所ではなく、こじんまりとした場所で練習したいですね。
2015年8月まとめ
はじめに
前回のまとめはこちら
そしてもう9月が終わろうとしているのに8月まとめを書いていることに対して色々思うことはある。 9月まとめは今日中にやらないとまた死亡する。
私の今の場合、インプット優先するの、よくないですね、と思いました。
やったこと
自分のカレンダーを見ながら思い出すの、辛い…
- Rebuild meetupに参加した。
- After showのなんとも言えない空気感を体験して、現場にいる醍醐味を感じました。
- YAPC Asia TOKYO 2015に参加した。
- AnnictのMeetupという名の飲み会に参加した。
- 最近忙しくて使用頻度が落ちているとはいえ、アニメ視聴記録用に重宝しているサービスなので参加できてよかったですね。
- 参加した全員がAuthor or Contributerだったのには笑いました。
- 色々開発の話しも聞けたので、時間を作ってちょくちょくPR投げられるようにしたいという思いを新たにしたところ。
- 第23回Haskellもくもく会 @ 朝日ネットに参加。
- ゼーガペインのリセット祭としてサンライズフェスティバルに参加。
- 行ってみたらセレブラントがたくさんいたので、熱の高まりを感じました。
- 来年は10周年で大きな花火の予告がちらほら出ているので、今から楽しみです。
毎回やる度に、箇条書きの中でですます調とだである調が混じるという不具合勃発してますね。
所感
全てが後手後手に回ってしまって今更書いてしまうという体たらくなのが痛い。
これから
プログラミング系のアウトプットできていないのは7月から変わっていないので、どうしたものかと思案中。
Annictをローカルで動かそうと試してみてハマった箇所を記録してみた #annict
Annictというアニメ視聴記録サービスがあります。結構前から利用していて、私がアニメ視聴記録サービスに求めているものが結構あるので、個人的に重宝しているサービスです。Github会議の時に開発者の方とお話しする機会があった際、「こんな機能が欲しい*1んですよね!」と訴えるくらいには使っています。
さて、このAnnictというサービス、日本のアニメ視聴記録サービスとしては珍しい特徴(恐らく現時点では唯一?)があります。それはOSSであるということです。
今回はこの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:migrate
、bundle 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にあたるステータスを追加して欲しい」という要望でしたが、これは後日、ありがたいことに「中断という視聴ステータスが追加」という形で実装されました