zimathon blog

フルリモート開発エンジニア

DevLOVE Advent Calendar 2014「越境」 会社を越境しそうになった話

このエントリーは DevLOVE Advent Calendar 2014「越境」の25日目の記事です。

今の自分

僕は一休.comという会社で宿泊のサービス開発をしています。

僕が越境しそうになったのは自分が所属する組織です。 (つまり転職を考えたということです。)

ikyu.jpeg

越境を考えた理由

ぼんやりと転職したいなーと考え始めたのは結構前です。(一年ぐらい前)

理由はいろいろあるのですが、大きくは2つあります。

  • エンジニアとして成長する土壌が今の会社にはもうない
    • 常に一番ヘタクソでいたいと思っている
      • 自分が所属する組織で最も評価される形はプロジェクトマネージャーとしてであり、自分が目指す形とは異なっていました(その昔)。自分が好き勝手やるということもできなくはない会社ですが、ビジネスと自分のアクションが紐付いていないと正直しんどくなります。
  • 家族のことを考えると地元(九州)に戻ったほうがいいのではないか
    • エンジニアとして成長する土壌があって、家族が過ごしやすい環境(地元)を考えて福岡という場所を選びました。

転職活動→内定

実際に転職活動を始めたのは今年の夏〜秋ぐらいです。
福岡にはどういった会社があるのかなーと思っていろんな会社を見て、いろんな人に会って話をして縁あってとある緑の会社に内定を頂きました。

報告した

会社

いろいろな人に報告をして、むっちゃ話しました。いろいろ。めちゃ引き止められました。

弊社の技術顧問

ある日の打ち合わせで、弊社の技術顧問に報告しました。
僕「年内でやめようと思っています。」
技術顧問「は?なにそれ。俺聞いてないよ。君がやめるのインパクトでかいよ。」
僕「すみません。いろいろ考えた末の結論で。。」
技術顧問「一緒にやろうって言ったのはそっちだろ。なぜ途中で辞めるんだ。まだ山登ってる途中だろ。」 (いろいろと辛辣なコメントを頂きましたが割愛w)

その日の夜に飲みに行った

あんなに真剣に誰かと向き合った時間は社会人になってからなかった。
今後自分がエンジニアとしてどうやっていきたいか考えさせられた。後単純にこの人達ともっと一緒に働きたいと思った。本当にまじ最高だなと。

いやー今思い出しても泣ける。

残留

いろいろあって残りました。会社は越境しませんでした。
残ることを選択してくれた家族にも感謝を伝えたいです。本当にありがとう。

自分が越境したこと

技術顧問の人に言われて今でもすごく覚えていることがあります。飲み会で飲んでいて
「エンジニアとして大事にしたほうがいいことがある。ソース直したり、機能追加したりした時にこのソースいけていないな〜ってやっててあるでしょ?その時にどうアクションしてる?
そういったストレスを感じた時に、自分なりにアクションをしてそういった部分を直していく。そういった部分を大事にしてどれぐらいアクションできるかがエンジニアとしてはすごく大事で、そういった部分が分かれ目になるよ」

ガツンと来た

今のサービス開発を進める際に自分がやってない部分でイケてない部分は目を塞いだりしたことあります。あそこ俺やってないしな〜ってなってました。
でもそういった思いがあるときにこそトライすべきかなと今は考えています。(実際に今はこれいけてない!って思った時はガンガンリファクタしてます)

常により成長できる環境に身を置きたいと考えていますし、転職したほうが楽だったなとぶっちゃけ最近思うことがあります。残った環境で今まで以上に成果を出して成長し続けるというのはかなりしんどいです。
(ただ、転職をぼんやり考えていた頃と組織の状況は変わってきました。)

それでも今の会社に残ったということ

残ったほうが良かったかどうかはわかりません。
でも常に自分が選択した方をベストにするために頑張って努力を続けたいと思います。
(そもそもどっちが良かったかを決めるのは自分自身だしね!)

今挑戦していること

自分がサービス開発を行っているシステムのレガシーコード改善+リプレイスです。
今のメンバーと一休のシステムをRebornさせたいと思います。

弊社技術顧問

naoya.png

エンジニアとしてまだまだチャレンジしていきたいので、引き続きこれからもよろしくお願いします!!

バトンタッチ

明日は12/3は@s_kicさんです! よろしくお願いいたします! 

ISUCON本戦に出場して、下から2番目だった話

11/8(土)に渋谷のLINEで開催された、ISUCONの本戦に出場してきました。

こんなに楽しいイベントを開催してくださったLINEさん、 こんなに楽しい問題を作ってくれたCookpadさん、 こんなに楽しいイベントをインフラで支えてくれたテコラスさん まじでありがとうございます!こんなに楽しいイベントを知らずに30年生きてきたなんて本当人生存してました。(ISUCONは今年が四回目)

結果

29位/30チーム中

f:id:sisijumi:20141113234637p:plain

いや、本当にすみませんでした。(デフォルト実装より低いって。。。迷走しすぎ)

参加メンバー

  • @_taketake
  • @kentana20
  • @zimathon

この三人であーだこーだ言いながらなんとか予選突破しました。 (今にして思えば予選は自社でやれたってのはすごいでかかった)

当日

午前

事前準備の段階でチーム内で話をしていた

  • インフラ構成の把握
  • レギュレーションを読み込む
  • 初期実装でベンチを動かしてスコアを見る
  • OS設定、ミドルウェアの設定を確認する

あたりはさくっとできると思っていました。

でもできなかった

いつまで経ってもベンチマークが安定しない。。と@_taketake、@kentana20が悩んでいました。

今の状況どうですか?とか聞いても 「うーーん。。」 としか返事が無く、ただことではないことは分かった。

そのままお昼ごはんに突入

午後

なんだかこのままではどう考えてもスコアが上がらないので、 自分なりにログを追ったり、コードを改修したり微調整していました。 (ただ問題の根本が把握できておらず、コードの動作から把握できるログ調整などしか実施できず)

結局チーム感が出てきたのが17時ぐらい?

結局基本的な設定ができていなかった(userport拡張)とメモリを読み違えていた(1gbなのに10gbだと思っていたのだよ)ので、スーパー迷走しました。

  • Redisに乗っている動画データをファイルで出力
  • ファイルI/Oで管理していたログファイルをメモリに載せる

とかやり始めたのがそれぐらいで時既に遅し。。。 33万点とかスコアを見て俺たちもう無理だよ。。。 とか諦めてしまいました

最終スコア

68

来年に向けて

  • もっとコミュニケーションを取る(なにやってるか話す)
    • 競技中にもっとコミュニケーション取らないとお互いが何やっているかさっぱりわからないので、もっと会話しようと(むしろ空気ののまれすぎ)
  • 会場内で散歩(考える時間を確保する)
  • 詰まった時は一度手を止めてどうするか話す
    • みんな追い込まれすぎw
  • 横一線辛い(背中合わせがベター)
  • 共通の言語作る(RubyかGo)
  • こっちのほうがいいなと思ったことをしっかりやる
    • これやったほうがいいな(sshの鍵作成とか基本すぎるけど誰もやらなかった)と思うことはさっとやる
  • アウェイに呑まれない体力づくり
    • ぶっちゃけここが一番大きい
  • AMI公開されたら60万点取る
    • 直近の目標
  • このへんはマストだよね!(むしろ無くて予選よく通った)

もっと体力つけて絶対に絶対に絶対にリベンジしたいです。

最後に一つ言い忘れましたが、、、、、、、、、、、、













ISUCON最高!!!!!!!!!!!!!!!!!!!!!!!!

ReactiveCocoa Tokyoに行ってきました #rac_tokyo

f:id:sisijumi:20141019232641p:plain

概要

2014-10-18 (土)、freee社@五反田のオフィスで開催されたReactiveCocoa Tokyo に行ってきました!

そもそも行ったきっかけは

ninjinkunさんが勉強会やるって聞いたのと、会社の製品にReactiveなやりかたを導入したかったから

@tinpay はじめてのReactiveCocoa

@ninjinkun FrilでのReacitiveCocoa事例

@yo_waka freee社での活用事例

@ikesyo var RAC3 = ReactiveCocoa + Swift

所感

みんなReactiveCocoaべた褒めだったので、導入してみようと思いますー (個人的にはもっと勉強して @ikesyoさんの話が全て把握できるレベルまでは行きたいです。) やっぱりああいう場所にいくと、現在の自分の位置がわかるし、世の中的な流行りがわかるので ああいったイベントを開催してくれたninjinkunさんに感謝です!是非また行きたい!!

本当は最後までいる予定だったのですが、直前でios8Yahooに行けることになったので抜けちゃいました(´・ω・`)

追記

今回のイベントはconnpass のイベントから参加したのですが、 参考資料内にある

はすごい良かった!

YAPC::Asia Tokyo 2014に行ってきました!(初日)

YAPC::Asia Tokyo 2014

YAPCに行ってきました!!!

f:id:sisijumi:20140829232847p:plain

一応個人スポンサー(会社ぱわー借りた)

f:id:sisijumi:20140829232852p:plain

今日聞いたセッション

Go For Perl Mongers

今日のベストセッション!!!!!!!!!!!!!!!!!!

スライドはこちらから
でもGitリポジトリからcloneしたほうがいいかも
git@github.com:lestrrat/go-slides.git


最近ずっとやりたいなと思っていたGoの話をいろいろ聞いてきました!!
(落とし穴の話はすごく面白くてそんなことまじであるのかと思ってビビったな〜特にnilの話)
この話を聞いたせいで無性にGoがやりたくなり、ローカルVim開発環境をセットアップした
軽くはまり他のセッションに若干影響するという本末転倒ぶり(笑)

Gitによるツール開発

これはいろいろ勉強になったなー Git導入していろいろやれることが増えてきてもっと便利にいろいろやれそうな気がしました! PullRequestまとめられるの最高だし、これは来週から即実行

コマンドラインツールについて語るときに僕の語ること

コマンドラインツール作りたい(しかもGoで!) ごーごー

Where狙いのキー、orderby狙いのキー

この辺り復習しといたほうがよい

めちゃ聞きたかったけど聞けなかった話

YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました

スライドはこちら

インフラエンジニア(狭義)は死んだ

スライド上がったらあげます!

いやー、明日も楽しみ!

GithubEnterpriseでhubコマンドを使う方法

hubコマンドって?

Githubの操作をコマンドラインからあれこれ操作できるようになるツール

参考記事 GitHubユーザーのためのhubコマンド

インストール

参考記事 https://github.com/defunkt/hub#installation

そのままじゃ使えなかった。。

社内のGithubEnterpriseがhttp接続になっており、 デフォルトのhubコマンドはHttpsを想定しているのでhttpだよと明示的に指定すればおkでした。

以下が参考になりました

https://github.com/github/hub/issues/306
https://github.com/github/hub/pull/159

設定内容

設定ファイル

~/.config/hub

設定内容

http://github.com:
- protocol: https
  user: zimathon
  oauth_token: $github.com.token
http://github.host.name:
- protocol: http
  user: sasajimay
  oauth_token: $githubenterprise.token

oauth_tokenは各Github上でトーケンを発行して設定して下さい!

上記設定をするとコマンドラインからPRできる!

hub pull-request

試してみてください!

Vimで自動的にコメント文字列が挿入されるのをやめたい

.vimrcにこれを設定する (いろいろやったけどうまくいかずこの設定ででけた)

augroup auto_comment_off
    autocmd!
    autocmd BufEnter * setlocal formatoptions-=r
    autocmd BufEnter * setlocal formatoptions-=o
augroup END

【Objective-c】メソッドよりも同じ意味のリテラル構文を使う

リテラル構文?

NSObjectを使うときの構文が簡素化できる

リテラル数値

NSNumber *someNumber = [NSNumber numberWithInt:1];;
NSNumber *someNumber = @1;

ほら短くて簡潔

リテラル配列

NSNumber *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mousu",nil];
NSNumber *animals = @[@"cat",@"dog",@"mousu"];

要素にアクセス

NSString *dog = [animals objectAtIndex:1];
NSString *dog = animals[1];

ほら短くて簡潔

注意事項

オブジェクトの中にnilが含まれてるとエラーになるみたい

リテラル辞書

NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:
@"Matt", @"firstName",
@"Galloway", @"lastName",
[NSNumber numberWithInt:28],@"age",
nil];
NSDictionary *personData = @{
@"firstName":@"Matt",
@"lastName":@"Galloway", 
@"age":28];

要素にアクセス

NSString *lastName = personData[@"lastName"];

正直辞書の書き方は夢に出てくるぐらいわかりづらいと思ったけど、リテラル構文使えばすっきり書けるからいいですね! さらにObjective-cが好きになりました:D