monolog

monora log #=> ものろーぐ

2016年10月の投稿

バイトを辞めました

雑記

溜まっているタイトルしか書かれていない下書きを消化するシリーズです。

ただの事後報告で、自省です。

僕が当初この記事を書こうとしたタイミングで、他の方から激しい退職エントリが流れてきたので、そういったものを求められている方はそちらをご参照下さい。

ベンチャー企業のアルバイトを辞めた - 人権喪失メンヘラワンダーランド

結局のところは自分の技術力が見合っていなかったというところに帰結する話です。

10ヶ月ほど、ベンチャー企業のアルバイトとして、インフラ関連の開発をしていたわけですが、僕が辞めたのは特に上記の記事で述べられているようなことがあったからではなく、ただ単に環境に馴染めなかったからというのと、大学周りの活動が忙しくなったからです。

別の会社でのアルバイトと掛け持ちで始めた本職でしたが、忙しくて行けない日が続き、環境に馴染めず、目標がハッキリとしないうちに時間だけが過ぎていきました。

僕が関わっていたのは、当時はまだ社外へ公開もされず、社内でも関わっていた人はごく少数のプロジェクトで、なんか良い感じに新しいプラットフォームでした。(公開情報です) CTO がアーキテクチャ設計を先導して、コードもほとんどが CTO のお手製という状況に放り込まれたのが自分でした。 アーキテクチャも採用した技術もイケていて、パワーのあるプロダクトでした。(と今でも思っています)

ただ、いかんせんベンチャー企業というのは勢いがあるもので、プロダクトのコードはあっという間に書き換えられ、毎週出社する度に操作方法が変わっているような状況でした。 その度にどうやって動かすのかを尋ね、コードを追い、そして僅かに自分の作業を行うといった日々が続きました。

結果として、自分の生産性は恐ろしく低く、これで給料を頂いていいのかと自問するほどでした。(時給が前職に比べて良かったのもありプレッシャーにもなっていた) そしてしばらく、「辞めたいな、でもここで辞めても何も生み出せてないし、ここで辞めるのもな……」と焦燥感だけが募る日々が続きました。 結果として、10/3 夜に退職の意志を表明して、翌々日の 10/5 に退職しました。実時間でいうと40時間ほどしか掛かっていなくて勢いしかなかったですね。

結局、昨年の12月に働き始めてから、100時間も労働していなかったみたいです。 決めるには時期尚早だった感じもありますが、単に周りの環境に自分が馴染めなかったことも後押しする結果となりました。

(これは個人的な意見ですが、エンジニアと営業を同じフロアに詰めるのは幸せになれないと思っています。ただ、ベンチャー企業として社員の気持ちを共有するという目的のためには良いのかもしれないですが、これが最適解だとは思っていません。) 会社の方々はとても良い方々で、技術力があってパッションがあって、サービスを良くしていこうという気持ちの感じられる社風でした。 学生のバイトも多く、自分とは比べ物にならないような方々にも沢山出会いました。

本当に短い間ではありましたが、お世話になりました。

そんなこんなしていたら貯蓄が尽きまして、良い感じにやっていけるバイトをふらふらと探しています。 結局のところ、アプリもフロントもサーバも書くしインフラもやっていて、自分が何をやりたいんだろう、ということが最近見いだせていない気がする。

溜まっているタイトルしか書かれていない下書きを消化するシリーズです。 ただの事後報告で、自省です。 僕が当初こ[…]

サイバーエージェントのインターンに行った

雑記

1ヶ月近く経ってしまいましたが、書くぞという気持ちがあるので書きます。

2018年新卒ではないですが、 2016/9/6 〜 2016/9/26 まで、2018年新卒向けの CyberAgent の夏季長期インターンであるところの WORKインターン (インフラ) に参加して、アドテク本部というところでなんやかんやしていました。

2018年新卒向けとはいっても、特に制約があるわけでもなく普通に応募できます。まあ、インターンに行くのは普通は学部3年 or 院生なので、必然的にそうなるんでしょうか。

ICTSC 関連の知り合いの方に誘われて、大規模なインフラに触れてみたいという気持ちもあり応募したことから始まったインターンでしたが、今までに無い濃密な日々でした。

まず、面接が2回ある。これは本当に驚きで、まず人事面接があって、その後に部門面接がありました。 ただの職業体験的なインターンだと思っていたそれまでの観念が書き換えられて、1ヶ月間共に仕事をする人という扱いをされているんだなあという気持ちになりました。

人事面接の後、人事の方から「kyontan君のやってみたいことからすると、ここ(アドテク本部)のインフラとかどうかな〜」といったサジェストを頂き、インフラができればどこでも! ということでレスポンスをしたところ、そこの方と部門面接をすることになりました。 CyberAgent のインターンは内部的には100箇所以上の配属先があるらしくて、それぞれの学生に一番マッチするところへ、ということでマッチングにとても気を遣われている印象がありました。

部門面接で興味のある技術やなんやかんやという話をしていましたが、やはりそこでも印象的だったのは、「もしやりたいことが変わったり気が変わったらいつでも連絡してね!」と言われたことでした。なるほどなるほど……

そんなこんなでインターンでは、OpenStack Mitaka と Midonet という SDN のプロダクトの運用検証や、ストレージ(SAN)の性能検証みたいなことをしていました。 「とにかく今までやったことがないことがやりたくて、やりたい、SDNとか興味あります!」みたいな意味合いのとにかく具体性のないことをメンターの方に伝えたのですが、実際にそんな感じになってとにかく感動しました。 ICTSC6 では CloudStack を使用していて、ICTSC5 では OpenStack を使っていた、みたいなことはあったのですが、自分で構築したことは一度もなかったし、この機会に1からやってみるのも良いな、というのもありました。 ついでにプロビジョニングも1からやってみたいという感じで、Ruby で書ける Itamae を使って、OpenStack Mitaka と Midonet を一発構築するレシピを書いた。

kyontan/itamae-recipe-openstack-with-midonet: Itamae recipe for installing Openstack Mitaka + Midonet

ちょっと最近私用で使ってみたら壊れてたので直します、ゆるしてください。

Midonet 、セールスポイントとしては ovs のカーネルモジュールを使っていて信頼性があって SPOF のない SDN オーバレイネットワークを構築できて OpenStack Neutron と密接に連携してくれるというところなんだけれど、結構イケてるプロダクトだと思う。 アーキテクチャの筋はめっちゃ良いと思っていて、おもしろプロダクトなので、これからも詳しく見ていきたい気持ちがあります。

で、主にそのあたりの検証をしたりした。

ストレージの検証は難しくてあまり成果が出せなかったのでしんどいという気持ち。

実質15日しかなくて、その中でいかにして結果を出すかみたいなことをメンターの方とも相談して方向性を決めたりした。 結果として、15日で目に見える成果物も出せて、濃密な感じにできたのは良かったと思っています。

最終的にできたのは以下のようなもの。(公開の許可は頂いています / 検証環境です)

Midonet Traffic Monitor on Zabbix

Midonet はトラフィックを可視化する機能が Enterprise (有償) にしかなくて、標準だと CLI で謎UUIDと紐付けられた値が取得できるだけなのだけれど、それを色々してちゃんとVMやらホスト間のトラフィックを可視化して Zabbix で表示するようにした。 これは結構イケていると思っていて、実際動くのでイケています。よかったですね。 技術系のネタはまた別の記事で書きたい気持ちもあるので端的にこんな感じで。

 

とにかくインターンを通して、メンターの方や社員の方々には良くしてもらって、気にかけて頂いていた気持ちが強い。本当に一言で表せないぐらいなのですが、お世話になりました、ありがとうございました。 配属された組織がとにかく強い人の集まりで、僕のふわっとした要領を得ない質問に対して簡潔で的確で正確な応えが返ってくるのは学びになりました。

 

他にも、インターン同士の交流会があってどこぞの大会でお会いした人に再会したり、インターネットの有名人(と個人的に認識している人)にお会いしたり、社内の施設も社員と同様に使えたりして感動した。(使う機会がなかったのが残念) 社内のリラクゼーションスペースがちょうど工事中で、インターン期間に行けなかったのが悔やまれる。

他にも、椅子がエンボディチェアで、これがハーマンミラーか……! と感動したり、無限に甘ったるいドリンクが出てくるベンディングマシン(普通のコーヒーやコーラももちろん出てくる) があって、無限にアイスチョコバナナとかいう不健康飲料を摂取したりしていた。アイスチョコバナナは最高。

(2016/10/25 22:12 補足: 記事の公開時にアーロンチェアと表記していましたが、エンボディチェアだという指摘を頂きました。調べてみたら最上位……なるほど……)

他のインターンの方の話を聞いていると、やはり配属される部署でこの辺りは結構差があって、営業と同一フロアでノイジーな環境だったりすることもあるみたいですが、とにかくありとあらゆる手法で解決することが可能なのでやっていきましょう。 ちなみに僕の環境はオールエンジニアのフロアで静かでした。キラキラしてる印象はそんなになかったです。(他のフロアに行ったらキラキラしてたので驚いた)

そんなこんなであっという間に過ぎた3週間でした。改めて、アドテク本部のとある組織の皆様、メンターの方、人事の方、ありがとうございました!!!

 

1ヶ月近く経ってしまいましたが、書くぞという気持ちがあるので書きます。 2018年新卒ではないですが、 201[…]

第6回 ICTトラブルシューティングコンテストの運営委員をしていました

雑記

ICTトラブルシューティングコンテスト という学生が主体となってインフラやサーバに関するトラブルを起こして、学生が解決する(雑) な大会がありまして、その第6回、通称 ICTSC6 の運営側として参加してきました、ということです。

大会自体は8/27, 28 (土日) が本番でしたが、運営委員は 4/24 のキックオフMTGから活動が始まっていて、実に4ヶ月近くの期間があったことになります。

写真とかは公式のレポートにたくさんあるのでご参照下さい。

NTT西日本杯 ICTSC6 準備期間 レポート – ICTSC | ICT トラブルシューティングコンテスト NTT西日本杯 ICTSC6 DAY1 レポート – ICTSC | ICT トラブルシューティングコンテスト NTT西日本杯 ICTSC6 DAY2 レポート – ICTSC | ICT トラブルシューティングコンテスト  

ICTSC には運営委員として、第5回 (ICTSC5) から関わっていて、ICTSC6 では運営委員の副リーダーなるものを務めさせて頂きました。 (ICTSC6 は16人の運営委員と大人の方々による実行委員とスポンサーの方々によって成り立っており、その学生側ということです。)

ICTSC5 の反省を活かして、ICTSC6 のために自分が行ったことはとにかく1つに集約されていて、「とにかく見える化、情報の集約化を徹底して、何かをしたいときにすぐに行動できるようにする」というもの。

結局この記事は僕の自己満足ですし完全に主観で書いていて、最終的にはここに書いていない範囲、色々とよくないこともあったし、そもそも未だ僕が把握してない範囲で色々揉めたというのもあるのですが、結果としてそれを全部汲み取って解決できなかったのは本当に自分が悪いと思っています。未だももやもやとする気持ちもあります。 責任転嫁するつもりはないし、頼むから直接言ってくれという気持ちです。

 

以下、雑多に何をしたのか書いていきます。

 

ICTSC5 は、自分が初参加で周りが見えていなかったということもあるのだけれど、とにかく情報がブラックボックス化されていて誰が知っているのかすら良く分からないみたいな情報でつらかったという印象があった。 そのためにやったことは大きく2つあって、以下をしました。

  • Wiki を作る

  • Slack で Public チャンネルを大量に立てて話題を分ける / 見える化する (Private チャンネルを減らす)

Wiki は色々と模索した結果、 Crowi という国産の WIki が一番イケている印象があったので選択しました。半年間運用しましたけど本当に安定していて、ちゃんと動いて階層化ができて MarkDown がシュッと書けて良かったと思っています。 開発も精力的に行われていて、大会運営の後半では Elasticsearch と連携して検索機能も実装されて更に便利になった。開発者の人とも Gitter でコミュニケーションが取れて良いプロダクト。

とにかくありとあらゆる情報はこの Wiki から参照できるようにして、他サービスとして利用していた Google Drive やら Trello やらも全部参照できる情報をここに載っけるようにした。 合宿みたいなほぼ全員で集まる機会もあったので、Wikiの使い方をレクチャーしたり、みたいなこともした気がする。(あまりうまく行かなかったな、とは思っています)

結果としては、4ヶ月間で 147ページ ものページが作成されて Wiki で常に参照できる状態になった。 僕は文書化をほぼほぼ機械的にしていて、Slack で議論された事柄を片っ端から Wiki にまとめるみたいなことをした。 懸念していたのは、情報が錯綜することと古くなって参照されなくなることだったので、とにかくそこに気を使って更新を止めないようにした。

Crowi には Slack 連携機能があったので、#wiki-update みたいなチャンネルを作って通知を飛ばすようにした。 基本的に人が寝ている時間に作業する人間なので、4時とか5時とかにバンバン通知を飛ばしていた気がする。

Slack については完全に議論と雑談をするためのフリースペースでいいという認識で、1万件問題についてはログを取って参照できるようにすればいいし、そもそも確定した重要事項については Wiki に書くのが大前提なんだから、いくら流れてもいいのでとにかく書いてくれというスタンスで運用した(つもり)。

分報 (#times_{username})を導入したのもそういう意図があるし、運営委員そのものが日本中に散らばっているので、そのコミュニケーションの要となる Slack はとにかくコミュニケーションでツーでカーな感じにしたかった。

とにかく議論が混乱しないよう、分野ごとにチャンネルを大量に作成して、分けて議論がそれたらすぐに該当するチャンネルへ誘導するといったスタンス。 具体的には、 #infra やそのサブチャンネルとなる #infra-dc, #infra-network, #infra-server 問題作成に関連する #problem, 大会運営に関する #event-support などなど。times 含め59チャンネルが作成された (うち分報13チャンネル)

概ねこの方針は正しかったと思っていて、一部分けすぎて混乱したみたいなのはあったのですが、それでも全部が #random に書き込まれる世界よりはよっぽど健全だったと思っています……

そんな感じでやっていきました。

最後に、副リーダーとしてはリーダーの仕事を常に奪い続けるスタンスで行動していて、リーダーは常に手が空いてる状態を維持するように善処したつもりです。結局どうだったのかは人により意見が別れると思いますが、どうだったんだろう……

その他にも、無限に人にタスクを投げ続けるように立ち回ったつもりではあるのですが、結果としては僕がタスクを抱えすぎたり口を滑らせたりで本番直前で周りに大迷惑を掛けてしまったということが一番の反省点です。

結局、大会の運営というのは最終的にはどうやって人をマネジメントするかということに帰結していて、していますということです。

 

改めまして、この大会にご尽力くださった運営委員、実行委員、スポンサーの皆様、そして参加して頂いた皆様には厚く御礼申し上げます。ありがとうございました。

 

ICTトラブルシューティングコンテスト という学生が主体となってインフラやサーバに関するトラブルを起こして、学[…]

Dentoo.LT #15 に登壇した

雑記

世にも不思議な電気通信大学MMAという団体が主催している Dentoo.LT #15 というイベントがあって、登壇しました。あと寝坊しました。ゆるしてください

資格の話といいながら今年のネスペの午後II 問題を眺めたりしたのですが、案外普通に解ける感じだったし難易度が意外と高く無さそうだった。ちゃんと問題文を読みましょう。

** 資格の話 #3.2 @Dentoo.LT #15 ** from kyontan

最近は150枚ぐらいスライドを作って100枚ぐらいで時間切れになっていることが多い気がするので反省したい。次回は最後まで話します。

余談ですがスライドのテンプレート作ってたらまたCSSとSVGを延々と書くオタクに戻りたくなった。

世にも不思議な電気通信大学MMAという団体が主催している Dentoo.LT #15 というイベントがあって、[…]

CloudStack の VM を cs コマンドでデプロイしようとしてハマった

Infrastructure

こんばんは。タイトルだけ書いた下書きが溜まっているので書いていきますということです。

ICTSC6 で CloudStack を使用していた話はまだ書いていなし多分書かないですが、使用していました。

その中で、API を叩いてくれる薄っぺらいラッパーコマンドであるところの exoscale/cs を叩いてデプロイなりVMの起動停止なりボリュームのアタッチなどをやっていたわけですが、デプロイ関連で少しハマったので解決策を紹介。

ちなみにこれ: https://github.com/exoscale/cs。 exoscale 、 CloudStack なんですかね……

~~CloudStack の API はあまりにも愚直なのでパラメータが無限に多くてしんどいという話はさておき ~~APIの一覧は http://cloudstack.apache.org/api/apidocs-4.9/ にあります。 (4.9 の場合) VM を作成する場合は、 deployVirtualMachine 書いてある通りですが、必須なパラメータは以下の3つです。

  • serviceofferingid

  • templateid

  • zoneid

それとは別に、IPアドレスを固定したり複数のネットワークにVMを接続するときは iptonetworklist パラメータを指定するわけですが、このパラメータの設定がなんもわからんという感じです。

iptonetworklist[0].ip=10.10.10.11&iptonetworklist[0].ipv6=fc00:1234:5678::abcd&iptonetworklist[0].networkid=uuid

難しすぎる。なんで突然配列の演算子が出てきて & で繋ぐ必要があるんだ……

実際に直に API を叩いたことはないのですが、 cs ではこの通りにパラメータを書いても上手く動いてくれません。 なので、以下のようにする必要があります

cs deployVirtualMachine ... iptonetworklist[0].ip=192.168.15.3 iptonetworklist[0].networkid=4bbc38e5-3e36-4a11-9c93-5a5261911120

ただ & で繋げずにスペースで区切るだけです。どういう挙動なんだろう…… どこにも仕様が載っていないので試行錯誤せざるを得ないわけですが、やっていきましょう

結局 cs コマンドの引数はこんな感じになってしまうので非常に読みづらい。各位 Ansible のパワーに頼っていきましょう。僕は Ruby でラッパーを書きました。

cs deployVirtualMachine displayname='vm1-p15-t7' name='vm-x-hoge' serviceofferingid='3ebb38bf-dbb6-42b1-b301-041d3546b5dc' templateid='cec5838f-1bae-442f-9009-9e27dcf33941' zoneid='57305097-d51a-467b-bbec-862ab20850d1' hostid='3edc5cc0-5375-462d-8a38-b2e4920791f4' account='xxx' domainid='1d43bf7b-b00c-41ba-959a-e422c4649547' startvm='false' iptonetworklist[0].ip=192.168.15.3 iptonetworklist[0].networkid=4bbc38e5-3e36-4a11-9c93-5a5261911120
こんばんは。タイトルだけ書いた下書きが溜まっているので書いていきますということです。 ICTSC6 で Clo[…]