ドキドキするとき無敵でしょ

映画とプログラミングの話

2020のまとめ

若さとは振り向かないことらしい。Gunziです。
今年も年末なので振り返ることにした。ちなみに去年の振り返りは2020/1/3にやっていた。またいでんじゃねーか。
ちなみに今体温が37.3℃になりました。ちょっとつらい。

今年はコロナもあってかなりバタバタしていたなぁ、という印象。今年は月別で書いて来年の肥やしにする。

1月

就活終わらん、になっていたので死んでた。もうここだめだったら、21卒は諦めよう、って思って会社を受けていた気がする。

2月

まだ就活していた記憶がある。決まらん...になっていた。

3月

コロナが札幌でも流行り初めていた気がする。
バイト先でリモートワークに向けたネットワーク周りを色々やっていた。
ルーターをちゃんと触り初めたのもこの頃だった気がする(あんまりちゃんとできてなかった)。

4月

もうここだめだったらが完全にフラグだった。人事とCTOの5次面接で落ちた。
結局どこにもいけないまま21卒は終わりを迎える気配を醸し出してきた。
バイトではセキュリティ周りの話で調査を色々していた記憶がある。
この頃から「ネットワーク面白いし、パケット解析のコード書いてみようかな」と思って色々調べてたら
気づいたらプロトコルを実装する決意を固めていた。

5月

バイト先がまだバタバタしていた気がする。まだ調査していた気がする。
人がいなかったから WiFi の引き回しを直してた。
就活終わる未来が視えなかったのと、コードもっと書く元気が出てきたのでプロトコルスタックの実装を本格的に始めた。
RFCを翻訳するところからやっていたけど、英語マジでだめだったので、文法ひたすら調べながらわからないところはむー氏に聞いて
必要な部分全部翻訳した。むー氏ありがとう...になった。
この頃はEthernetヘッダ周りを書いていた気がする。

6月

VLAN 楽しい。ネットワーク面白い
ことみんあたりから連絡がきて、就活系の人事を紹介してもらった記憶がある。
この頃はIPヘッダ周りを書いていた気がする。

7月

イベント参加してきた。髪が長かったり派手な色だとだめらしい。
21卒は諦めることにした。
ICMPを実装しようと思ったらARPがないと解決できないことに気づいてARPの実装を始めた。

8月

大学の課題をひたすらやっていた。

9月

ICMPを実装した。末までかかったけど。ARPリクエストとリプライに喜びを感じた。

10月

バイト先の毎年ある停電に合わせてルーターの設定を弄ってネットワークをいい感じにした。
ニアミスしてたけど、上長達が気づいたちょっとあとに自分も気づいて、すぐに直したら動かせた。
ネットワーク力の向上を感じた。

11月

なんか忙しかった。

12月

年末なので雑務ひたすら片付けてた。ちょっと忙しかった。
ワークショップ参加して懇親会でひたすらネットワークの話してた。周り置いてけぼりっぽかったけど。
何社か面談したりしたけどやっぱり合わなくてしんどかった。ネットワーク周りやりたいっすね...

感想

今年は変化が多かったので結構忙しかった。ただ、バイトで学ぶことがたくさんあって純粋に勉強になったのがとても良かった。
ルーター触って、プロトコルスタック実装したらネットワーク力がめっちゃ上がったので手を動かすの大事だなぁ、と思った。
就活は何もうまくいかなかったけど、勉強面だったりはすごく順調だった。
来年行き先見つかるといいなぁ。ISPとかでネットワーク触れたら嬉しい。

来年はソフトウェアルーターフルスクラッチをやる。あとはネットワーク以外も何か触りたいけど、題材思い浮かばないなぁ。
流行ってるインフラ技術は触りたいっすね。
終わり。

プロトコルスタックを自作する Part1

まだ改善点は多くあるけど、一通りの実装ができたので忘れないうちにまとめておく。

完成したものはこちら。

github.com

コマンドラインARP テーブルを表示するようなものにした。

gunzi@gunzi-desktop:~/protocol-stack$ make 
gcc -o arp_test -I ./ test/arp_test.c *.c
gunzi@gunzi-desktop:~/protocol-stack$ sudo ./arp_test 
[sudo] gunzi のパスワード: 
Network Address         MAC Address
192.168.0.1             A4-12-42-19-DC-B0
192.168.0.2             00-25-DC-FC-43-C7
192.168.0.8             74-DA-88-FE-61-DC

きっかけ

去年の9,10月ぐらいからネットワークの構築とかちょっとした設計をすることがあったのですが
家でも何かしらネットワークの構築ができるようにルーターを人からもらったりしていました。
ただ、ネットワーク関連でプログラムを書いたことがなく、いいネタないかなと考えていたところ
友達のけんつくんがプロトコルスタック自作インターンに参加していたことを思い出しました。

rabbitfoot141.hatenablog.com

ちなみにこちらが上のインターンのメンターの pandax さんの資料です。

www.slideshare.net

これだ!!!と思い「次回機会があれば参加しようかな...」と一瞬考えたんですが、それをやると負けだと感じたので自分で一からやることにしました。

目標設定

最初、目標は「まずは一つプロトコルを実装してみること」に設定しました。自分としては
最初に ICMP を実装するつもりだったのですが「これもしかしてパケットの宛先がわからないとだめでは?」と気づいたので ARP の実装を行うことへと変化しました。

しかし、ただ実装するにしても面白くないので、いくつかの縛りを設けることにしました。
(ダクソシリーズで好きな素性は持たざるもの派です)

  • プロトコルスタックを実装した人のソースを読まない( Pandax さんやその他の人の実装など)
  • プロトコルスタック実装について書かれてる書籍は読まない(小俣光之さんの書籍やマスタリングTCP/IPシリーズなど)
  • 人に質問しない(完全に手詰まりでどうしようもないときはする)
  • できるだけ man 、 Linux のソースを調べる
  • RFC は時間がかかっても自分で一度翻訳してみる(日本語訳を脳死でみないでちゃんと読んでみる)

なぜ人の実装を読まないのかの理由ですが、自分自身写経が苦手なためコードをそのまま書き写して学ぶと 完全に理解した(わかってない) になってしまうためです。
また、難易度は高いほうが気持ちいいのでハードルを上げました。

ちなみにこれを見たけんつくんには RTA と呼ばれました。

今回実装を行ったのは以下4つです。

進め方

何もないところから生成するのは至難の業なので、パケットを解析するところからはじめました。
まずはこの記事を一通り触ってパケットを解析してみることにしました。

https://www.opensourceforu.com/2015/03/a-guide-to-using-raw-sockets/

ここで使われてる関数を man で調べたり、インクルードされている linux のファイルを調べてソースを読むを繰り返して
ひたすら情報を集めました。 基本的な情報は man にあったのでかなり助かりました。

man7.org

man7.org

RFC はここから引っ張ってきました。

https://tools.ietf.org/rfc/index

実装はパケット解析をするプログラムで使用されているヘッダファイルを置き換えていくようにし、以下の流れを繰り返しました。

  1. RFC を読む
  2. 実装
  3. パケットを解析

inet に属する関数群は man 2 で挙動を確認して類する、もしくは同様の挙動になるように実装を行いました。 あとはデバッグの機能でこんなのあったらいいな、というものを実装していきました。

余談ですが、途中で「バイナリデータを見れるやつがあると便利だよ」「エンディアン周りで注意したほうがいい」と アドバイスしてくれた人もいて非常に助かりました。本当にありがとう

実装を終えて

総評すると、初めて触るものが多すぎて何もわからない状態から始めたのでかなり難しかったです。
ただ、 既存の技術をハックして自分なりに考察して改善する面白さは段違いでした。
そのうえ難易度設定を上げて縛りプレイをしたので、最後まで実装できるか正直わからなかったのですが目標までやりきれました。
一人で誰の目もなくできるのか?という点も本当に心配だったんですが、自分で常にマイルストーンを置いて毎日バイトに行く電車でRFC を読んだり、実装について考えていたので全く問題なかったです。

個人的に一番良かったポイントなんですが 自分の作った ARP リクエストパケットに ARP リプライが返ってきたところを tcpdump で見た時は感動しました。

あと定期的にるくすさんのこの記事を何度も読み返してモチベーションを保っていました。
低レイヤーのモチベーションが落ちてきたら読み返すのがおすすめです。(ユーザースペースで動いてるから低レイヤーではないという主張は無視しておく)

rkx1209.hatenablog.com

あと実装中は evernote で資料とか socket の設定とか色々メモしてたらノートの数が14個になってました。
メモ取っておくとあとで見返した時に楽なのでおすすめです。

難しいと感じた部分

デバッグ関連はかなり苦労した部分が多かったです。そもそもどうやって送信するパケットをデバッグするんだ?とか。
tcpdump やヘキサダンプしたデータ、関数の返り値から推測して行いました。基本的なところで行けば man を参照してなにかをしたことがほとんどなかったので、そこも少し大変でした。

教訓として得たのは風邪のときのように冷静な判断が難しいときは休む、というこです。頭が回らないので勘違いが増えます。これで1週間溶けました

次の目標

粗い部分が多いのでそのへんの修正しなきゃなぁ、というのがまず第一。
ICMP の実装ができたら ping pong するところまでを wiki なりにまとめて資料化する予定です。
Part2 以降の目標として ICMP, TCP, UDP など有名なプロトコルをあといくつか実装してみようと考えています。
それに加えてよりカーネルに近い部分の低レイヤーに手を入れていきたいので、デバイスドライバ本を読み進めて実際にイーサネットポートのドライバを書いてみたいと思います。
あとはハックネタを探して理論と実装の部分を学んで自分の中になるギャップを埋めて IT だけでなく CS に強くなりたいですね。

最後に

普段は通信制の大学に通いつつ(?)、バイトでインフラエンジニアのアシスタントをしているのですが普段の業務では構築などが多く
正直プログラミングは向いてないんじゃないか?と思うことも多々あったのですが、実際に実装しているとそうでもないな、ということに気づけました。
ただ、インターンハッカソンで行ったことではないので客観的な評価は得られないため、そこはちょっとデメリットだなと感じます。
実装中は常に自分が何がわからないか、今何ができて何をすべきか、を解決するために man や RFC を電車での移動中などにひたすら調べていました。
縛りを設けたことで難易度が上がりましたが、それらを実践したことでメタスキル的な部分が磨かれたんじゃないかな、と思います。
あと、これは悔しいポイントなんですが RFC でどうしてもわからない部分があって、そこについて調べるためにググってしまったことですね。
見てからデバッグ方法に気づいたのでそれが本当に悔しかったです。 ICMP では絶対に見ないぞ...と心に誓った。
実装中誰にも頼らずやると決めていたので、正直辛いんじゃないだろうか?と思ったんですが全く辛くなかったです。むしろ限られた情報ソースの中からどこかにヒントがないか、
もっと良い実装があるんじゃないか、といったことを常に考えていられたので純粋に楽しかったです。
あと、一通りやったことでネットワーク技術に興味が湧いたので ARP の実装が終わったあとに EuroBSDcon の資料読んでみたりしました。
次はカーネルに挑戦して低レイヤーに挑むぞ、という気持ちが固まりました。最低限のハードウェアの仕様書を読んでコードを生成できるようになりたいですね。
まだ挑みきれてないコンパイラであったり、エミュレータを書いてみるとか、ちょっとずつ挑戦していけたらなと思います。

あとは就活を終わらせるのが目標ですね......早く終わらせて低レイヤーと CS の勉強に集中できるようになりたい...

Cisco WLC の 1815i を触ってみる

今のところ10社落ち、 Gunzi です。
就活が終わらないまま5月になったので、22卒に切り替えようか悩み始める今日この頃。

閑話休題

ここ半年ぐらいネットワークについて触れることが増えてきたのもあり、自分も徐々に興味を持ち始めました。
触ったメーカーで言えば YANAHA, NEC, NETGEAR, HP ってとこでしょうか。
「なんか Cisco 有名だけど触ったことないな?」と思ったのでヤフオクで機材をあさっていたのですが
ちょうどいいところにお手軽な値段であったので買いました。
機材はこいつです

www.cisco.com

資料をみるとクライアント数がそこそこあって、お値段も中古で1万円程度とお買得。
一般家庭への導入にぴったりな製品です。

  アソシエートするワイヤレス クライアントの最大数:Wi-Fi 無線ごとに 200、合計でアクセス ポイントごとに 400 クライアント

というわけでこいつをセットアップした話を書いていきます。
今回は一通りのセットアップから個人的にやってみたかったことを少し踏まえつつ、
家で使えるところまでを目指します。

用意するもの

  • 1815i
  • 適度な長さの LAN ケーブル cat6 以上 x2
  • PoE ハブ
  • RJ45 ケーブル

諸注意

OS の起動にはおおよそ 7 分程度かかります。気長に待ちましょう。
作業を通して待つことが多々あります。
このことは必ず前提として覚えておきましょう。これで自分は 1 時間溶かしました。

こちらの動画がおおよそ 6 分程度となるので、見終わるころに OS は起動し終えるでしょう。

youtu.be

やること

  1. 説明書を読む
  2. 本体の初期化
  3. WLAN のセットアップ
  4. 接続テスト

説明書を読む

まずは下記の資料を読み進め、セットアップに向けて素振りをします。

基本的に GUI で進めるならこの辺を読むと良いです。今ブログ書いててこれを見つけて泣きました。
お家で Cisco するならこの資料読んで GUI でゴリゴリするのがよさそう。
ブラウザは Edge か Firefox を必ず使いましょう。 これで自分は 3 時間溶かしました。

https://www.cisco.com/c/dam/global/ja_jp/solutions/enterprise-networks/mobility-express/Cisco_Mobility_Express_8_4-setup.pdf

ムカついてきたので CLI で設定する方法についてここからは書いていきます。

CLI 関連についてはこちらを参照すると良いでしょう。バージョンには気を付けてください
www.cisco.com

セットアップ時は本体をルーター、もしくはスイッチへと接続して行うことをおすすめします。
接続テストの際にインターネットへのアクセスも同時に確認できるからです。

本体の初期化

ではまず本体を初期化します。ハードウェアリセットの方法は GUI に関連する資料を参照すると良いでしょう。
おそらく初期化済みだとは思いますが、もし何かあった場合は CLI から以下の方法で初期化することができます。

  1. コンソールケーブルから本体へログイン
  2. reset system とコンソールへ入力
  3. 設定の保存をするか聞かれるため N と入力
  4. y と答えて再起動
  5. 起動したら Username に recover-config と入力
  6. エンターを押して再起動し初期化

WLAN のセットアップ

このセクションでは大きく分けて下記の手順について説明を行います。

  1. 本体の初期化
  2. 管理ユーザーの作成
  3. アクセスポイント本体 ( 1815i ) の設定
  4. WLAN 作成

初期化済みのものを起動した場合、コンソールに以下のように表示されます。

Enabling Controller Provisioning
 Configuring management interface
 Enabling mgmt via wireless
 Enabling Provisioning SSID
 SSID: CiscoAirProvision, Admin Status: 1, Interface Name: management, 802.11 Auth: WPA2-PSK,  Wi-Fi Protected Access : Enabled

(Cisco Controller)

Cisco Aironet 1815 Series Mobility Express
Welcome to the Cisco Wizard Configuration Tool
Use the '-' character to backup


Would you like to terminate autoinstall? [yes]:

yes と答えて先に進みます。

管理ユーザーの作成

管理ユーザー名とパスワードを設定します。パスワードには条件があり、条件が満たされていなければ
下記のようにエラーが表示されるので気を付けましょう。

Would you like to terminate autoinstall? [yes]: yes
Enter Administrative User Name (24 characters max): gunzi
Enter Administrative Password (3 to 127 characters): ***********
Use at least three of the following four classes in the password: lowercase letters, uppercase letters, digits or special characters .
Enter Administrative Password (3 to 127 characters): ***********
Re-enter Administrative Password                 : ***********

アクセスポイント本体 ( 1815i ) の設定

アクセスポイント本体の設定を行います。
まずは本体の名前を決めましょう。変更ができるため、多少安直でも構いません。
管理しやすい名前をつけましょう。私は設置位置を名前に設定することが多いのですが、ここでは cisco_ap とします。
次にカントリーコードの設定です。こちらは J4 と入力します。日本以外の方は help を叩いて調べてください。
日本の場合は J4 です。
NTP サーバーの設定はよくわからなかったので今回は2つの選択において no を選択しました。
適宜の判断でここの選択は行ってください。
次にマネジメントインターフェースの IP 、 Netmask 、 Default Router を設定します。
ルーターにより設定が異なるため参考程度に留めておいてください。
弊宅の場合は家庭用ルーターでしたので、下記の通り設定を行いました。
また DHCP が元からあるためこちらは NO を選択しました。

System Name [Cisco_cc:46:00] (31 characters max): cisco_ap

Enter Country Code list (enter 'help' for a list of countries) [US]: J4

Configure a NTP server now? [YES][no]: no
Configure the system time now? [YES][no]: no

Note! Default NTP servers will be used

Management Interface IP Address Configuration [STATIC][dhcp]: STATIC

Management Interface IP Address: 192.168.0.100
Management Interface Netmask: 255.255.255.0
Management Interface Default Router: 192.168.0.1
Create Management DHCP Scope? [yes][NO]: NO

WLAN 作成

初期 WiFi を設定します。今回は後ほど変更するため、適当に設定します。

SSID: cisco_test
Password: test12345

最適化は no を入力します。
最後に yes と入力すると再起動が始まるため 7 分ほど待ちます。
ちなみに save もちょっとかかります。

Employee Network Name (SSID)?: test_ap
Employee Network Security? [PSK][enterprise]:
Employee PSK Passphrase (8-63 characters)?: *********
Re-enter Employee PSK Passphrase: *********
Enable RF Parameter Optimization? [YES][no]: no

Configuration correct? If yes, system will save it and reset. [yes][NO]: yes

Configuration saved!
Resetting system with new configuration...


Writing reload timestamp (Mon May 18 15:40:45 UTC 2020) to disk



[05/18/2020 15:40:47.7799] UBIFS: un-mount UBI device 0, volume 3
[05/18/2020 15:40:47.8399] UBIFS: background thread "ubifs_bgt0_3" stops
[05/18/2020 15:40:48.6599] reboot: Restart

接続テスト

起動が確認できたら test_ap へと接続してみましょう。お手元の端末でも構いません。
「接続できたけど AP をまだルーターにつなげていなくてインターネット出られないから動いてるかわからない」
という場合は、お手元のブラウザでさきほど設定したマネジメント IP 192.168.0.100 を開いてみましょう。
管理画面が表示されたならお手元の端末はアクセスポイントを介していることがわかります。

WLAN を設定する

参考資料はこちら

www.cisco.com

ここからが本番です。このセクションでは

  1. WLAN の作成
  2. WLAN パスワード設定
  3. WLAN テスト
  4. WLAN の削除
  5. ゲスト用 WiFi の作成

を行います。
ルーターにコンソールで接続し、現在の WLAN を確認してみましょう。
show wlan summary コマンドを入力するとさきほど設定した WLAN があることがわかります。

(Cisco Controller) >show wlan summary

Number of WLANs.................................. 1

WLAN ID  WLAN Profile Name / SSID                                                  Status    Interface Name
-------  -------------------------------------                                    --------  --------------------
1        test_ap / test_ap                                                        Enabled   management

(Cisco Controller) >

WLAN の作成

WLAN を1つ作成します。

(Cisco Controller) >config wlan create 2 cisco_accesspoint


(Cisco Controller) >show wlan summary

Number of WLANs.................................. 2

WLAN ID  WLAN Profile Name / SSID                                                  Status    Interface Name
-------  -------------------------------------                                    --------  --------------------
1        test_ap / test_ap                                                        Enabled   management
2        cisco_accesspoint / cisco_accesspoint                                    Disabled  management

WLAN パスワード設定

WLAN へパスワード設定を行います。下記ドキュメントが参考になるでしょう。
www.cisco.com

下記の手順で先ほど設定したSSID: cisco_accesspoint へパスワードを設定します。
方式は WPA2-PSK です。
上のドキュメントを参考にパスワード test12345 を設定します。

(Cisco Controller) >config wlan security wpa enable 2


(Cisco Controller) >config wlan security wpa wpa2 enable 2


(Cisco Controller) >config wlan security wpa akm 802.1x disable 2


(Cisco Controller) >config wlan security wpa akm psk enable 2


(Cisco Controller) >config wlan security wpa akm psk set-key ascii test12345 2

WLAN テスト

このままでは SSID は出力されていません。なので WLAN を enable します。
さきほどと同様にスマホなどで接続を試してみましょう。
問題がなければここで一度 save を行います。 Cisco 製品では設定を保存しておかなければ
再起動時にデータが消えてしまうためです。

(Cisco Controller) >config wlan enable 2


(Cisco Controller) >save config

Are you sure you want to save? (y/n) y


Configuration Saved!

WLAN の削除

全部飛ぶので気を付けましょう。 save config 実行前であれば再起動することでなかったことにできます。

(Cisco Controller) >config wlan delete 2

最後に

Cisco 機材は全く触ったことがないという理由で勢いだけで WLC を買ってみたんですが、ドキュメントが充実していて
見つけるまでは不安でしたがなんとかなりました。
PSK を設定する方法が一番調べていて時間がかかったような気がします。
次回はもう少し GUI に注目して書こうかな、と思っています。
あとは他の色々な機能も触ってみたいし WiFi って実はネタ豊富なのでは?という気持ち。
面白かったのでまたネットワーク触ろう。

ワンルームCisco

open.spotify.com

おまけ

radio policy を変更

この AP の真の力を使いたいので、調べた。
802.11a-only に設定することで 802.11ac の設定も適用される。
これとデータレートのチューニングで最速へのチャレンジも夢じゃない

(Cisco Controller) >config wlan radio 2 802.11a-only

2019のまとめ

2019 のまとめ

そういえば何したか振り返ってないのと
10~12月あたりしたことについて何も書いてないし書いとく。

2019 10~12月

この辺は rui ueyama さんのC自作コンパイラをちょいちょい進めて知識不足で終盤でやめてしまった。興味ある分野がぽろっとでてきたのもある。
そのあとはバイト先でネットワークちょっと触りつつ、自分でも勉強しようと思って色々調べたり本読んだり。12月末からは実践パケット解析を読み進めてる。

2019 まとめ

バイト先の体制がちょろっと変わったりで自分に振られる仕事もかなり変わった。今年はインフラ周りのタスク振られることが多かったので、バイトが楽しかった印象が強い。
具体的にやったことを列挙すると

インターンで Ansible に関わる CD/CI の検証(1週間)
・ネットワークの検証(VLAN周りでこまごましたやつ)
WiFi設置と監視鯖(鯖立ててGrafana、Zabbix、InfluxDB組み合わせたり)
・サーバ構築
・ちょっとしたスクリプト書いたり

多分こんな感じ。もうちょいネットワークの監視周りでパケット見てどーのこーのしたいなーと思ったので、パケット解析を読み進めている状況。

2020 にむけて

とりまパケット解析読みながら一部実装してみたりでコードを書きたいなーと思っている。最近書けてないので。
あとは就活がな~~~~~~就活終わらねーかな~~~~~~~

あと月1ぐらいでちゃんとブログ書くのは目標にします。終わり

自作コンパイラに入門して1か月ぐらいたった

イントロ

こんにちは。最近ジョーカーの公開が楽しみすぎてバットマン ダークナイトの序盤のシーンを何度か見てしまいました。
吹替声優が藤原啓治なんですけど、スーサイドスクワッドの子安武人版ジョーカーも非常に変態的で捨てがたい。そんな悶々とした毎日を過ごしています。

先月ビルコンにスタッフとして参加しつつ、みてみたかったセッションをみたら激アツすぎて帰りの飛行機から Rui Ueyama さんのオンラインブックを読みながら
自作コンパイラに入門している最中です。途中経過と記録的な意味を込めて、ここに少し書き残しておきます。

どのぐらい進んだのか

現在は関数とローカル変数の項目です。 就活でバタバタしたり、バイトでバタバタしたりで進捗はかなりゆっくりです。
また、ドラゴンブックも買って今ノートに取りながら問題を解きながら進めています。

GitHub - GunjiD/compiler-book: rui ueyama さんのオンラインブックの進捗

今のところの感想

スタックポインタなんもわからん~~~みたいになってるので、アセンブリで何かしらコード書いてみるのが良いのかなぁ、という感じ。
RSP と RBP をどう使うのがいいかがまだみえてこなくてつらい。

ただコンパイラがどう動いてプログラムを解釈するのか、への理解が深まってきていてデータ構造について学びたいと思えたり
色々刺激はあるので触り始めてよかった、という感じ。 みんなもレッツトライコンパイラ(小並感)

CAのインターンに行ってきた

経緯

結論をいうと、7月にこんなイベントがあって
参加したら特典でインターンがついてきたのでいってきた。

www.cyberagent.co.jp

インターン先は Sumzap というCAの子会社だった。

www.sumzap.co.jp

メンターは上のイベントに参加していた Sumzap の SRE チームの方が引き受けてくれた。

経緯の詳細的なやつ

イベントの募集要項にサーバー・インフラの設計・開発・運用などにおける以下のキーワードに興味がある方・経験がある方
とあり、「お、ガチインフラやん!いったろ!」と思い応募した。
なかなかこういったインフラを知る機会ないしね(ちなみに想定していたのはバックエンドっぽかった)
そんなこんなで選考に通ったのでイベントに参加してみると「物理サーバーから引っ越した話」「部署移動してみたけど戻ってきたよ」
みたいな感じでバックエンド含んで幅広くだった。
社員さんたちの LT 後に社員と座談会があったため、物理サーバーから引っ越した話をしていたエンジニアの方とずっと話していた。
その日は2回の面談があり、人事の人とビデオ面談し、いよいよ社員と面談、というときに
イベント中にずっと話していたエンジニアの方と面談することになり驚いたのを覚えている。
インターンに行くことを決めた理由は

  • その人から4つ考えてきたけどどれがいい?と言われて、そのうちの1つに興味を惹かれた
  • その人がメンターなら安心だと思った
  • ちょうどビルコンに行く期間と近かった

という感じ。そんなわけで以下本題

どんなインターンだったか

期間は1週間で「 CircleCI で ansible の playbook が変更されたらそれを検知して実行し、
問題なく構築できるか」という内容だった。

メンターの方が最初に4つ提示してくれた中で、一番手応えがあって面白そうだったのでこれにした。
選択肢があると思わなかったので正直驚いた。

期限は1週間だったが実際は1日目に環境構築をして最後の日に振り返り、他の日には別部署の方とお話する、
という日程で実際は 3~3.5 日ぐらいだったのでかなりタイトになってしまった。

結果的には CircleCI を動かして git push すると検証用サーバーに ssh して playbook を走らせる
というところまで終えることができた。

インターンを終えて

インターンを通して会社の印象が 180° 変わった。最初はキラキラしたエンジニアがいっぱいいると思っていたが
むしろカンファレンスとかにいるようなタイプの人が多く感じた。
しかもエンジニアはみんなコミュニケーションが取りやすくて、インターン中も何度か話かけてくれたりもした。
会社内はエンジニア以外にもデザイナーやプランナーもいて非常に賑やかでわりと好きだな、と思った。 あとは、あくまでも一人のエンジニアとして扱われるのかな、という印象を持った。(個人的には嬉しい点)
それに話した多くのエンジニアは少なくともギークだったし、何よりメンターがゴリゴリのギーク
家までハックしていて最高にクレイジーでホットだった。(最後に花束まで渡してくれた)
あと、ランチを人事のゴッディさんがセッティングしてくれたので色々なインフラエンジニアとも話せた。
本当に感謝しかない。

個人的なところで言えば、今までの経験と組み合わせて行うものだったし、全く使ったことのないサービスを
どうやって調べて組み込むか、どんな仕組みで動いているかを短時間で理解する必要があるのが大変だったが
すごく良い経験を積めた、素晴らしいインターンだった。
反面、動かす大まかな仕組みを作るところで終わってしまったのが残念だった。
どんな風に通知すればよいか、どんな機能があると他のエンジニア達が使いやすいのか、
そういった点を解消していく前段階で終わってしまったので2週間あれば色々機能を追加できたのに
という感じで悔しかった。
あとは自分のどんなところが弱いかもわかったし、フィードバックももらえて頑張れそう。

色々な人と話したりする機会を設けてもらって思ったけど、
やっぱりなるのはインフラエンジニア一択だなと固められたのもとても良かった。
物理やりたい、物理( SRE も面白そうだったよ!)

というわけで20卒のインフラ採用してる会社を教えてください!!!!

まあでもコードも書くし物理も扱えるインフラができる会社って絞られそう。

最後に

期間中に ODC に顔出したり YUC'e の DJ を見るためにクラブで6時間爆音を聴き続けたり
インターン終わった次の日に予定を詰め込んだ上に、次の日から2日間ビルコンスタッフをやったりで
めちゃくちゃなムーブをかましたけどめちゃくちゃモチベーションが上がって最高に楽しかった。
行動力の化身かよ。

f:id:Gunzi:20190902215712j:plain
最後にメンターの方から頂いた花束

追記

「インフラ広すぎるわ」って突っ込まれたので書くと、泥臭くてどうしようもない
感じのインフラがやりたい、というのがざっくりいうと強い。
クラウドでポチポチして直すとかそんなのは求めてなくて、自分はどうにかして
パフォーマンスを出したい!とかバックアップにこんだけ時間かかる…どうしよう
とか、そういう部分がやりたい。監視とかもそうだけど。
やりたい仕事がそんな感じで若干ふわふわしてるが、物理寄りで主に色々な
ことがしたい、という部分が強いということでご容赦いただきたい。

ビルコンに初めて参加してきた

毎度イベントがあるとほぼスタッフ参加のGunziです。
今回も Tシャツ目当てに めちゃめちゃみたいセッションがあったので参加してきた。
ちなみにインターン終わって1日あけて金、土で参加した。実際はあけた木曜日に予定を詰め込み過ぎた
ためにエクストリーム当日スタッフである。

前置きはこんな感じで本題に入る。

見たかったセッション

主に2つある。

builderscon.io

builderscon.io

ちなみに2つとも賞を取っていて、純粋に2人が評価されることがとても嬉しかった。
ちゃんとYoutubeで公開される予定なので、見逃した人はぜひ公開されたら見てほしい。

感想

北海道から東京のカンファレンスに初めて参加して、いきなりスタッフをしたけどそんなに不安でもなかった。
仕事内容はそこまで変わらんし。にしてもめちゃくちゃアツいカンファレンスで正直思っていたよりもずっと熱量を感じた。
コンパイラのセッションに関しては数カ月前にQiitaに上がっていたGo言語のセルフホスティングの記事の人でめちゃくちゃ楽しみにいしていたし
ライブコーディングで簡単な実装をする、という内容は刺激がすごかった。参加者からのバグの指摘があったのは本当ゲキアツでこのカンファレンスでしか
味わえないだろうしロックだった。
コアスタッフの知り合いに煽られて当日スタッフ参加にしたけど、本当に良かった。色々な人とも話せたしすごくやる気がでた。
来年は興味のあることで何か作ってビルコンの選考に投げたいと思う。Lispネタで