Apache Kafkaの触りだけ勉強してみた

仕事の関係でApache Kafkaを扱えるようになる必要がだんだん出てきたので、これを機会にしてKafkaについて学び始めました。実際私がどれだけKafkaの運用をすることになるかは分からないんですけどね。

以下、適当に調べたことを適当に書き散らして記録を残します。主に書くことによる備忘録。

そもそもApache Kafkaって何?

一言で言うと「とにかく凄いキュー」と理解。公式サイト曰く、"Apache Kafka™ is a distributed streaming platform"とのことで、キューとしてだけ使われているのではないのですが、取りあえずの理解としてはそんなに間違っていないはず。

元々LinkedInで開発されて、その後Apacheに寄贈されて今も活発に開発が続けられているようです。

大量のデータを(リアルタイムに近い形で)扱う必要のある企業がよく使っているようです。

概念とか構成とか

いきなり公式サイトに行っても意味不明だと思ったので、一旦以下のような記事を読んだり手を動かしてみて、だいたいの概念を掴んだ後に公式サイトを見ました。

これらを見た後、公式サイトのQuickstartをやってみて何となく理解。

今までキューとかpub/subシステムを扱ったことがなかったので、Producer, Broker, Consumerと言われても何のことだか分からなかったのですが、上記ステップを踏む中で一応の理解は得ました。

Kafkaの構成としては中心にBrokerというやつがいて、そこがhubになってデータをやり取りしていて、Kafkaにデータを送りたいときはProducerを介してデータを送り、Kafkaからデータを取り出したいときはConsumerを介してデータを取得するという感じみたいです。

Kafka側で一旦データを受け持ち、データを取得する側がKafkaに問い合わせてデータを取得するので色々都合がいいみたいです。

で、Kafkaはクラスタを組める作りになっていて可用性が高いよ、ということらしく、そういったクラスタの情報とか何たらのデータをクラスタ間で持つようにApache Zookeeperを利用しているとのこと。

おすすめ学習ソース

で、最初の一歩はネット上のソースで何となく理解したのですが、いまいち理解しきれなくて色々学習ソースを探している中、有料ですがいい学習ソースを見つけました。

www.udemy.com

しょっちゅう90%近いセールを行っていることで有名なUdemy*1ですが、上記Udemyのコースをたまたま見つけてやってみたところ、かなりよかったです。AWS上にZookeeperとKafkaのクラスタを組んで、Kafkaの運用の仕方だけでなく、Zookeeperはどういう情報を持っているかとか、Kafkaのパフォーマンスを確保するときに注意した方がいいことなども含めて教えてもらえるので、初心者の私としては学びがありました。

仕事で既にKafka運用している人には当たり前すぎる内容しかないと思うのですが、これから学び始めようとする人にはオススメできると思います。

講座内の"Configuring Kafka in production is AN ART“という文言が非常に印象に残っています。

最後に

Apache Kafka、いじっていたら何となく面白くなってきたので、仕事のことも視野に入れつつ、趣味でも少しずつ触ろうかなと思いました。

*1:今回のコースは90%オフだかの時に見つけて、1200円でゲットしました

Raspberry Piで電子工作(の最初の一歩)を学び始めた

経緯

こういうこと書くと外からどう見えるか分からないなーと思いつつ書くと、最近プログラミングとかソフトウェア関連の作業とか知識に対する学習意欲が逓減していて、何か面白そうかなと思って始めた勉強も長く続かないという状態でした。*1

何でそういう状態に陥ったのか考えてみたところ、一言で表現すれば「飽きた」というのが実情に近い気がしました。

そもそもソフトウェアエンジニアをする上で必要な基礎知識も技能も足りないのに「飽きた」とか言うと「何言ってんだ、こいつ?」と自分でも思ってしまうくらいですが、プログラミングを始めた当初の「学ぶ毎に新しいことができるようになって面白い!」という、できなかったことができるようになるときに感じる根源的な面白さ・楽しさをここ最近実感しづらくなってきたという風に言いかえると、少しはまともに聞こえるでしょうか?

そんなわけで、自分のモチベーションを復活させるため、ソフトウェアも絡むけどハードウェアも絡む電子工作に手を出し始めてみました。

教材

色々調べてみて評判が良かったこの本を使って勉強し始めました。

全10章中、まだ5章途中までしか進めてないですが、私みたいにRaspberry Piで電子工作始めようとする人にはオススメできる書籍だと思います。以下理由。

回路図の読み方や必要な知識などを最初から丁寧に教えてくれる

正確な情報・知識や根本的な箇所は省いているとは思うのですが、回路図の読み方に始まり、電流・電圧・抵抗やオームの法則の説明、「何故この回路を作る時にこの抵抗が必要なのか。この抵抗を外した場合、どうなるのか」といったことなど、物理(電気)の知識が頭からすっかり抜けた私のような人間でも無理なく理解できるように説明されていて、実際に回路をブレッドボード上に作る時もついていけるようになっているのが好印象です。

必要なキットがセットで揃えやすい

実はこの書籍で学ぶ前に何冊か本を買ってRaspberry Piで電子工作の勉強をしようと思って頓挫した経験があります。

何で頓挫したかというと以下2つの理由からです。

  • Raspberry Piが上手く起動しないとき、OSを正しくインストールできなかったことによる問題なのか、単に使っている機器(SDカードや無線LANモジュールなど)とRaspberry Piの相性の問題なのか、問題の切り分けが難しかったこと
  • 必要となる外部品の調達が個別になっていて面倒&どれを選べばいいか分からなかったこと

前者の問題は今回の『カラー図解 最新 Raspberry Piで学ぶ電子工作』でも解決しづらいところではありますが、後者は出版サイドが解決策を用意してくれています。

akizukidenshi.com

書籍の公式サポートページからもたどれるのですが、『カラー図解 最新 Raspberry Piで学ぶ電子工作』では書籍内の演習で必要になるパーツセットをまとめたものを秋月電子通商で売っているのです。

私のように電子工作初めての人間にとって、こういう「これだけ買っておけば取りあえずOK」というルートが示されているだけで労力を大幅カットできるので大助かりです。

もしこの書籍で電子工作を始めようという人は上記パーツセットを予め買っておいた方が手間が省けていいと思います。

あと、使うRaspberry Piに関して何も考えなくても無線でネットにつなげるRaspberry Pi 3 Model Bが(2017/07/23現在)個人的にはハマらなくてオススメです。最近日本でも発売したRaspberry Pi Zero Wでも標準で無線通信できるようですが、外部品が色々専用だったりするみたいなので自身がある方以外は避けた方が無難ですかね?と思ってます。

進捗

先に記したように、全10章中、まだ5章途中です。やったことを具体的に言うと、いわゆる「Lチカ」をプログラムとタクトスイッチで制御するところを終えたところですね。実際にプログラムでGPIO経由でON/OFFを制御できるのは面白いなと思いました。

この書籍で基本的なことを学んだら、Raspberry Piを使って温度・湿度をトリガーにした通知の仕組みとか、何か運動時に使える仕組みを作りたいと思ってます。

*1:機械学習とかですね。Courseraの勉強復活させたい…

最近ブログを更新できてなかったので、最近やったことをまとめてみる

タイトル通り、最近全くブログ更新できていなくて色々よくないなあと思っていたので、手抜きであったとしても更新しようかなと思って今書いてます。

といっても5ヶ月もまともな日本語を書いていなかったのでどうせ大したことを書けるわけでもないから、転職してから学んだことや知見を深めたツールの種類、仕事とは関係なく適当に自分で学び始めたことなどを箇条書きで書いてお茶を濁します。

知見を深めたツール

  • Concourse CI
    • baggageclaim周りはいまだ理解してない。あとv3.3でVault対応する予定らしいので待ち遠しい。というか早く来てほしい。
  • Prometheus, Grafana(による監視画面構築)
    • 仕事でGrafanaの環境やPrometheusをいじる機会があり、多少覚える必要があったので、どうせなら自分のプライベートな環境でも活用してみようと少し調べて自分のホスティングしているサーバーの監視にPrometheus + Grafana + cadvisor使ってDockerコンテナの状況も含めた監視画面を以下のように作ってる。が、Alertmanager全く勉強してないのでアラート通知できていないので不十分なまま止まってる。
    • スクリーンショットを上げたかったが、Flickrに何故か写真アップロードできないので、Grafanaのトップページのリンクを貼り付けておいて、実際に構築している証明にする。
    • と思ったが、はてなフォトライフにアップしてGrafanaの画面を見せることにした。cadvisorがdockerコンテナの情報をPrometheusに渡して、そのPrometheusをdatasourceにしてGrafanaに表示しているのが分かると思う。 f:id:kutakutatriangle:20170611222800p:plain

プライベートで適当に学んでいること

  • OCaml
    • 『プログラミングの基礎』と『Real World OCaml』で勉強してる。まだ終わってない。どちらかというとプログラミングの基礎を身につけたいからやっているので、OCaml「で」勉強している。

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

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

Real World OCaml

Real World OCaml

  • 詳解システムパフォーマンス

  • OpenStack

    • 完全にお遊びで構築に挑戦してみたら、やっとできたっぽいので嬉しい。kolla-ansibleを使って構築した。いつの間にかkollaとか新しいサブプロジェクトが増えていて隔世の感。
    • Flickrにアップできないので、これもリンクを貼っておく。scalewayのベアメタルサーバーに構築してる。お試しなのでURLすぐに違うのになるかも。
    • と思ったが、これもはてなフォトライフにアップして対応する。horizonの見た目から、OpenStack Ocataがデプロイされてるのが見て分かると思う。 f:id:kutakutatriangle:20170611222807p:plain
  • 機械学習

    • CourseraのAndrew Ng先生の講座を年明けから進めていたが、途中で止まってSVMの項からやれていなくて3ヶ月くらい経過している。大分忘れてきているのでもう一度最初からやらないといけないかも…
    • ただ、『ゼロから作るDeep Learming』は最後まで読み通した。コードの写経は半分くらいで止まってる。

あと色々やってる気がするけど思い出せない…

何かツールの使い方とかは覚えていて知見は増えているのだけれど、OSやプロセスの仕組みとか日々のオペレーションを進める上で必要になる知識に穴がたくさんあるのを埋めることができていないのでそこを本当はどうにかしたい。

まあ、少しは自分でも勉強しているよなと自分で自分を慰めておきたいのであった。

『SCRUM BOOTCAMP THE BOOK』を読みました

以前の記事でも書きましたが、セルフホスティングしているソフトウェアの中にプロジェクト管理ツールのTaigaがあり、これを有効活用したいと思いつつ、このTaigaはスクラムを知っていること前提のツールなのでメニューに出てくるものの意味が分からず、今までちゃんと使えていませんでした。

新年になり、新しい目標も立てたので、これを機会に少しスクラムのことを勉強してTaigaを上手く使えるようになろうかと思い、以下の本を読むことに。

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

結論から言うと、スクラムの全体像を少ない時間で把握するにはとてもいい本でした。

「スプリントをこなしていく中で、ベロシティを安定させていけるようにチームを育てていくのが重要だ」*1というようなことが書かれていたり、単に単語の説明とかで終わるのではなく、外すと致命的になりかねないポイントについても書かれていて、なるほどと思いながら最後まで読めました。

そもそもこれを読んだ目的は単に使われている用語とか概念が知りたかっただけなので、実際のチーム開発で起こりうる事例みたいな記述の箇所は自分にとっては特に必要なかったのですが、必要としている人にはちょうど良い分量なのではないかと思います。

本自体はマンガ部分含めて270ページなので、割合サクッと読める(割にちゃんと内容も書いてあった)のもよかったです。

あと、個人的な趣味嗜好の話しになりますが、こういう「マンガを挿入しながら説明していくスタイルの本」の中では、マンガで描写されるストーリーや説明、マンガ自体の絵柄が本自体の方向性から浮きすぎず、いい感じに作用していると思います。*2

*1:という風に私は理解した

*2:中には「これ、マンガを入れない方がいいだろ」と思えるような書籍もあるので。

2017年の抱負

去年も年始に立てたので今年も立てます。

takuan-osho.hatenablog.com

去年の抱負はあまり達成できたとは言えないので、今年はもう少し胸を張って「達成できた!」と言えるように個人的に方策をとっているところです。

ただ単に目標を立てるだけだと制約がなさすぎて達成しようという意欲が減ると思ったので、以下のような制約を自分に課して抱負を考えてみました。

  • 1年間で達成しようという目標は多くても「3つ」に絞る

3つという数に根拠はないのですが、多すぎず少なすぎず、自分でも空で覚えられて把握しやすいちょうどいい安定した数なのでこれにしました。

で、その抱負を「IT系技能関連の目標」と「ITとか全く関係ない目標」というレイヤーに分けて考えた結果、以下の3つを今年の抱負にしようと思います。

2017年の抱負

IT系技能関連の目標

オペレーションをこなせるようにする

仕事でサーバーの運用業務をするようになったのですが、issueとして登録されている問題の特定・解決するのに必要なオペレーションを思ったようにできていないなと痛感しているので、Linuxの基礎知識*1を含めて、オペレーションの能力を強化していくのを1つめの抱負にしました。

随分抽象的ですが、今のところイメージしているのは id:y_uuki さんの以下の記事に書いてあるような方向性の技術・能力を伸ばして仕事をスムーズにこなせるようになりたいということですね。

blog.yuuk.io blog.yuuk.io

機械学習の最初の一歩を踏み出す

前年立てた目標を全く進めていなかったのと、そろそろ手をつけたい気分になってきたので。

既存のアルゴリズムを自分で実装できるくらいに理解できれば理想ですが、そこまで行かなかったとしても、素材を自動で分類したくなったときに各種ライブラリを活用してソリューションをでっちあげるということができるようになるといいなあと思ってます。

UdemyやらCourseraやら各種書籍を使って今まさにやり始めたところです。

(180度の)開脚をできるくらいの柔軟性を得る

これは仕事とは全く関係ない目標で、自分の身体の柔軟性を挙げたいというものです。

一応数値目標を出しておいた方が計測できるので180度開脚としたいのですが、多分これ難しいのでなるべくそれに近づけるという意味合いをこめてカッコをつけてます。

今続けている空手のパフォーマンスにも関わってくる話なのでそれなりに真面目に取り組みたい抱負です。

まとめ

言っただけではなくて、進捗が見せられるようにしたいと思いながら記事を締めます。

*1:基礎知識って何だよって話ですが…

2016年の振り返り

はじめに

2015年もしたので2016年分もします。

takuan-osho.hatenablog.com

体調微妙だから年が明けてからアップしようと思ったら、購読しているブログの人たちも結構ギリギリに2016年まとめブログをアップしていたので、私もそうすることにしました。去年もNHK紅白歌合戦見ながら書いていたみたいなので、成長してないですね。

時間も無いので結構適当です。

成果確認

以下の記事に書いた目標がどれくらいできたかの進捗確認。

takuan-osho.hatenablog.com

takuan-osho.hatenablog.com

パッと見た限りではほぼできていませんね、コレ。

以下、確認していきます。

基礎固め系

アルゴリズムやプログラミングの基礎作り

できてません!

セキュリティ周り

できてません!

コードを書く系

技術的な分野

ES2015を前提にしたJavaScriptを書く

これは前職のときにできたので〇とします。

今時のCSSの書き方を学ぶ

これに関しても同じく前職のときにある程度はできたので〇としたいですね。PostCSSはできませんでしたが、CSS設計を実際に仕事でやって少しは勘所を掴んだのと、実際にflexbox使って納品したので〇にカウントしてもいいはず。

Node.js

コレは△。

iOSプログラミングとSwift

これは全くできてませんね。

githubのアクティビティ率を高める

できてないですねえ…

一つプロダクトをリリースする

だからできてないという…

SphinxにContributeする

これは〇!

takuan-osho.hatenablog.com

読書系

目標に挙げていたものはほぼできていないですね。ある程度読んでいるのは『大規模サービス技術入門』くらいでしょうか。

あとは当初の予定になかったけど読んでよかったと思った『インフラエンジニアの教科書2』でしょうか。

takuan-osho.hatenablog.com

余力があればやる系

機械学習

はい、例のごとく全くできてません。

技術系以外でやったこと

掃除

これはできました。11/23〜11/29まで少しずつやって、一応成果が出るところまでやったので。

takuan-osho.hatenablog.com

空手

続けています。

転職

これが一番大きいことでしたね。今年の4月に転職して本格的にソフトウェアエンジニアとして仕事を始めて色々忙しかったです。

「転職して忙しかったのでブログをあまり更新できなかった」という言い訳をしたい気分になりましたが、多分その言い訳は通用しないんでしょうね。

「お前の退職エントリはニューラルネットワークで生成できる!」ということが言われる前から退職・転職エントリ嫌いだったので、ブログでは微妙ににおわせるくらいのことしか書いてませんでした。

takuan-osho.hatenablog.com

なので転職のことに今回言及するの微妙だと思ったのですが、取材を受けてネットにアップされたのでそれを代わりにします。

codeiq.jp

まとめ

「退職・転職エントリは他人に書いてもらう時代です」と嘯いておきます。

来年の抱負は年が明けたら書こうかと思います。

来年も変わらずよろしくお願いします。

ミャンマー観光旅行に行ってきたので振り返り

Twitter, Facebook, Instagramなどでは既に書いていたのですが、今年11月にミャンマーに観光旅行しました。*1

思えばこのブログがプログラミング関連の記事一辺倒になる前はこういったちょっとしたイベントの思い出も記事にしていたことを思いだし、記録として残しておかないと色々もったいないなと思ったので、今回はその観光旅行のことについて書こうと思います。

いい機会なので、旅行したときの写真をflickrにアップしてアルバム形式にしてまとめました。

上のリンクをクリックすれば私が撮影した写真がまとめて見られるはずです。

全体的な感想

大学のときの友達に誘われたので一緒にミャンマーへ行ってきたのですが、現地ツアーガイドをつけていたこともあり、大きなトラブルに見舞われることもなく楽しんで過ごせました。

ただ、それなりにお金がかかりましたね。

写真で振り返る観光旅行

久し振りの海外旅行でスリとかにあわないように気を張っていたことが多かったので、「あの場所の写真撮ってなかったかー」とこの記事を書いて気がつく有様ですが、まあ何となく面白かったところ紹介でもしてみます。

個人的に面白かったポイント

IMG_0015

バスの中の風景です。

「走行中は席を立たないで下さい」という注意書きが貼ってあることからも分かるように、明らかに日本で使われていたとわかる中古のバスがミャンマーではよく使われていました。

これ以外にそのことが分かる写真を撮っていなかったので後悔してます。

たとえば「宮崎県バス協会」だとか「小松空港行き」だとか書かれたバスがそのまま使われていて、結構な頻度で日本の中古バスを見かけましたね。

何で日本語の文字を消さずにそのままにしているかというと、現地ツアーガイドの方曰く、「日本語が書いてあるのがカッコイイから文字を消さずにそのままにしてることが多い」とのことでした。それって本当なんですかね?と今でも思わずにはいられません。

IMG_0017

私がミャンマーで観光してきたところはヤンゴンとバガンというところで、上の写真はバガン空港で撮ったものです。

ジカ熱怖いな、と思いつつ、友達に虫除けスプレーを借りる以外に特別の対策をしていないという体たらくでした。

IMG_0016

ヤンゴンとバガンの間を行き来するときに乗っていたプロペラ機です。

普通のジェット機(というのだろうか?)には何度も乗ったことがありますが、こういったプロペラ機に乗るのは初めてでした。

やはり海外を経由するようなジェット機みたいなのと比べると振動はそれなりにありましたね。

IMG_0123

ミャンマー語で書かれた看板。もちろんなんて書いてあるのか読めません。

この看板に限らず、観光する中でミャンマー語で書かれた色々なものを見かける度、「全く意味分からないのもつまらないなあ」と思っていたところ、「そういえばGoogle翻訳のアプリって画像認識でリアルタイムに翻訳できる機能があるって見たことあるぞ」と思い出し、さっそくダウンロードしてみたのですが、ミャンマー語はカメラを使った翻訳が未対応で使えなくて残念でした。

IMG_0140

夕陽を撮影するためにシュエサンドー・パゴダに登っている観光客の図です。

私もこのシュエサンドー・パゴダの最上部まで登ったのですが、人が多すぎて身動きしづらかったのと階段がめちゃくちゃ急で手すりにつかまりながらじゃないと降りられないと思い、 夕陽が終わって降りる人が増える前に降りてしまおうと思ったので、実際の夕陽は撮らず、この人混み溢れる光景を撮りました。

私が感じた恐怖感を伝える写真が手元に一枚も無いので文章で書くしかないのですが、本当に階段が急で、降りるときに地面を見ようとすると高所恐怖症を発症してしまうと感じるくらいに恐かったので、上の写真の一部の観光客のように足を投げ出して座っている人の感覚が信じられませんでしたね。恐くないのかな?と。

IMG_0340

観光旅行最終日、空港にチェックインする前に寄った地元のスーパーで見つけたものです。

こういったいわゆるオタク的な絵柄のものがあるのがこれだけだったので撮影しました。

絵柄的に遊人さんの作品に出てくるキャラみたいな感じですが、これがオリジナルのキャラなのか、それともどこか元ネタがあるキャラなのかは知りません。

後、色んなパゴダとか仏像とか、いわゆる観光スポットの写真もそれなりにあるのですが、それ含めるとブログ更新が遠くなりそうなので止めます。

海外旅行で遭遇したトラブル

面倒になってきたので概要だけ記録に残しておきます。

現地SIMでネットに繋げるように設定したらApple IDがロックされた

これ、ちゃんとした原因がいまだ分からないのですが、現地のヤンゴン空港に着いた後、ロビーで現地SIMの売買している所に行き、SIMフリーiPhone渡して設定してもらった後、メールで「お前、何か普段と違うからApple IDをロックしておいた」というメールがAppleから送られてきて、その後調べたら実際ロックされていました。

2段階認証かけるときに手元においておいた解除キーを参照できる状態だったからいいものの、そうでなければ色々と面倒になったと思います。

宿泊しているホテルのトイレが詰まった

そのままです。2日目移行に泊まったバガンのホテルで、部屋の中にあるトイレが詰まって難儀したという話です。

詰まったこと自体も面倒だったのですが、それよりも面倒だったのはホテルの人に状況を伝えることでした。

英語、微妙に話せはするのですが、聞き取るのは割とダメな方なので、「トイレがトラブったから助けてくれ」と訴えることはできても、相手が何を言っているかが分からず、実際に来た人に任せて棒立ちするしかなかったです。

ここは反省ポイントですね。

まとめ

海外旅行はいいぞ*2

*1:正確には11/23〜11/27の5日間

*2:かかるお金を考えなければ