一部上場の大手ソーシャルゲーム会社を退職しました。
この度、約6年間勤めた一部上場の大手ソーシャルゲーム会社を退職しました。
といってもこの会社で実際に働いたのはおよそ3年間で、後半の3年間は子会社に出向していました。
思い返せば2012年の新卒採用で未経験の私を採用していただき、様々なチームで色々なプロジェクトに携わらせていただきました。
まさにエンジニア人生はここから始まったという意味では、大変ありがたい6年間だったなと思います。
入社当時の飛ぶ鳥を落とす勢いの雰囲気を肌で感じる事ができたこと、また盛者必衰を内部の人間として見る事ができたことはとても貴重な経験でした。
両社ともに居心地が良く可能ならばずっと勤めたいくらいでしたが、
年齢ももう若くない頃になってしまったのでそろそろコンフォートゾーンから抜け出すべく転職を決めました。
転職活動の詳細については色々と書きたい事があるので別エントリーにしようかなと思います。
2017年振り返り、2018年目標
2017年の目標振り返り
2017年の目標は以下の3つだった。
- お金の勉強をする
- 海外の企業に応募してみる
- 体脂肪率9.9%
お金の勉強をする
未達成。最近話題のビットコインにすら完全に乗り遅れた。コインチェックが六本木ヒルズに大々的に広告出したり出川がCMやったりと、世の中的にすごい流れが来てる雰囲気はびしびし感じる今日この頃、世間から置いてかれてる感ハンパない。ビットコインに限った話ではないけど、来年はこういう話が周りから聞こえてきた時点ですぐにとりあえずやってみる精神で生きていきたい。
海外の企業に応募してみる
達成。ブログに書いた通り、成果は何も出なかったけど、これを契機にキャリアについてより考えるようになったのはよかった。キャリアは定常的に考える必要があると思った。12月から本格的に開始した転職活動にも影響した。転職についてはまた別の機会に書こうと思う。
体脂肪率9.9%
未達成。西麻布に住んでた頃は仕事終わりに気が向いたらジムに行くという感じで習慣化ができておらず、体型もどんどん弛んでいく一方だったけど、10月に引っ越してから、ちゃんと習慣化したほうがいいよなということで、火曜と木曜と土日のどちらかで週に3回ジムに行く習慣をつけることができた。習慣化されるとあとは続けるだけで、体型も次第に絞られてきて、最近は痩せたと言われるようにもなった。以下メモ:
12/31時点
- 体重 75.5
- 体脂肪 15.5
- 筋肉量 60.0
メニュー
- ランニング 10min
- マシンチェストプレス 42kg 16回 x3
- マシンフライ 36kg 16回 x3
- ラットプルダウン 50kg 16回 x3
- レッグレイズ 35回 + 20回
- トーソローテーション 50kg 16回 x3
- ランニング 30min
2018年の目標
コンピュータサイエンスの基礎を修了する
海外就職には必須と感じているコンピュータサイエンスの学士相当の資格を取得するために、海外でも通用しそうなオンライン講座でコンピュータサイエンスの基礎を修了する。 Udacityを考えてるけど、一応他とも比較検討してみてどのコースを受講するか決める。
ブログを12回以上書く
2017年は9記事しか書けなかったので、2018年は最低でも1ヶ月に1記事くらいは書く。
構想中のサービスをリリースする
転職活動に入る直前に構想ができてからまだ開発に入れてないので、来年は開発してリリースする。 このサービスが完成したら、けっこうアッと世を言わせるものになると思ってワクワクしてる。
体脂肪率9.9%
週3日の朝ジムは継続しつつ、有酸素運動足りてないと思うので、自宅からお台場とかまでのランニングをメニューを加える。
総括
2017年は総じて自分のキャリアについて考えさせられる年になった。今の会社で6年間一生懸命働いてきたつもりだったけど、いざ転職を考えた時に自分の特徴や売りみたいなものがパッとしないということを痛感させられた。そういう働き方をしていたんだということが悲しくなった。一番大事な20台半ばのこの時間はもう戻ってこないんだという虚無感のような感情さえ湧いた。もう28歳になり決して若くない年になってしまったので、とにかくなるべく早く手遅れになる前に今のコンフォートゾーンを抜け出してアクションを起こす。2018年は人生で一番激動の一年にしたい。
Rails 5でAPIをさくっと作る方法
Rails 5のAPI専用モードでAPIのベースをさくっと作ってみたので備忘録として。
Rails開発環境の構築
Railsの最新バージョン(5.1.4)
$ gem install rails
...
12 gems installed
APIアプリケーション作成
$ rails new scribbles_api --api ... RubyDep: WARNING: Your Ruby is outdated/buggy. RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
rubyのバージョンアップ
$ rbenv install 2.3.1 Downloading ruby-2.3.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2 Installing ruby-2.3.1... BUILD FAILED (OS X 10.12.6 using ruby-build 20160602) Inspect or clean up the working tree at /var/folders/tz/_ldn35g52dl43l019mrzqfq00000gn/T/ruby-build.20171014151748.9497 Results logged to /var/folders/tz/_ldn35g52dl43l019mrzqfq00000gn/T/ruby-build.20171014151748.9497.log Last 10 log lines: Referenced from: /private/var/folders/tz/_ldn35g52dl43l019mrzqfq00000gn/T/ruby-build.20171014151748.9497/ruby-2.3.1/./miniruby Expected in: /usr/lib/libSystem.B.dylib dyld: Symbol not found: _utimensat Referenced from: /private/var/folders/tz/_ldn35g52dl43l019mrzqfq00000gn/T/ruby-build.20171014151748.9497/ruby-2.3.1/./minir uby Expected in: /usr/lib/libSystem.B.dylib make: *** [.rbconfig.time] Abort trap: 6 make: *** Waiting for unfinished jobs.... encdb.h updated
https://github.com/rvm/rvm/issues/3744
再度インストール
$ xcode-select --install $ rbenv install 2.3.1 ... Installed ruby-2.3.1 $ rbenv local 2.3.1 $ rbenv rehash $ gem install bundler ... 1 gem installed $ bundle install ... Bundle complete! 8 Gemfile dependencies, 49 gems now installed.
API作成
scaffoldでモデル・コントローラ作成
$ rails g scaffold User field1:type field2:type
ダミーデータ作成
以下の記事を参考にさせていただきました
Gemfile
# seeds gem 'enumerize' gem 'activerecord-import' group :development, :test do gem 'faker' gem 'gimei' end
lib/tasks/seed.rake
Pathname.glob(Rails.root.join('db/seeds/*.rb')) do |path| desc "Load the seed data from db/seeds/#{path.basename}." task "db:seed:#{path.basename(".*")}" => :environment do load(path) end end
db/seeds/user.rb
# coding: utf-8 # Create dummy users # Male users = [] 50.times do |no| gimei = Gimei.male users << User.new( user_hash: SecureRandom.uuid, nickname: gimei.katakana, email: Faker::Internet.email, password: Faker::Lorem.characters(45), gender: User.gender.male.value, ) end # Female 50.times do |no| gimei = Gimei.female users << User.new( user_hash: SecureRandom.uuid, nickname: gimei.katakana, email: Faker::Internet.email, password: Faker::Lorem.characters(45), gender: User.gender.female.value, ) end # Bulk insert User.import users
ここまでやるとrakeのseedタスクがこんな感じ
rake -T db:seed rake db:seed # Loads the seed data from db/seeds.rb rake db:seed:user # Load the seed data from db/seeds/user.rb
あとは実際に実行してUserのダミーデータを作成
$ rake db:migrate $ rake db:seed:user
rails routes確認
$ rails routes Prefix Verb URI Pattern Controller#Action users GET /users(.:format) users#index POST /users(.:format) users#create user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy
ローカルサーバ起動
$ rails server => Booting Puma => Rails 5.1.4 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.10.0 (ruby 2.3.1-p112), codename: Russell's Teapot * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000
curlで動作確認OK
$ curl "http://localhost:3000/users/1" {"id":1,"user_hash":"3c929a28-3583-45a8-a71d-82295a2a6a3a","nickname":"タムラ コウタロウ","email":"vada@borerherman.com","password":"0pm8iatqkbk3n7x7vnxofwskk0aws5oyfvvj62r5y7nop","gender":"male","created_at":null,"updated_at":null}
iOS 11からNSLocaleの仕様が変更されたらしい
使用言語の設定が日本語のデバイスでしか利用できないサービスで、iOS 11にアップデートしたら動作しなくなったという問い合わせが届いたので調べてみたら、どうやらiOS 11からNSLocaleの仕様が変更されたらしいことが分かった。
NSLocale.current.identifier
iOS 10以前はjp_JP
で取得されていたものが、iOS 11ではen_JP
で返ってくるケースがある。
ググってもあんまり盛り上がってないのがちょっと不思議なんだが、唯一見つけた内容がこちら。
抜粋すると
- iOS 10以前は
[NSLocale currentLocale]
はアプリのローカライズは関係なく端末の言語設定を直接参照していた - iOS 11において
[NSLocale currentLocale]
はアプリのローカライズしてる言語しか返さなくなった - もしアプリが英語しかローカライズしてない場合(デフォルト)は、端末でどんな言語を設定しても
currentLocale
は英語しか返さない
実際に手元で検証した結果もまとめてみた。
iPhoneの使用言語設定 | アプリのローカライズ | NSLocaleLanguageCode |
---|---|---|
1. 日本語, 2. 英語 | English | en |
1. 日本語, 2. 英語 | English, Japanese | ja |
1. 日本語, 2. 中国語 | English | en |
1. 日本語, 2. 中国語 | English, Japanese | ja |
1. 日本語 | English | ja |
stackoverflowで指摘されてる通りの結果になったことが分かる。
公式のリンクはまだ見つかってないようだが、検証結果から見てもどうやら本当ぽい。
実際の検証結果から見ると、iPhoneの使用言語が1つしか選択されてない場合はローカライズされてなくてもその言語が返ってくるぽい。紛らわしい。
つまり端末の設定言語をロジックで利用するようなアプリは、ロジックの対象にしてる言語がアプリでローカライズされているかをiOS 11からは注意する必要ある。
今更ぽいけどJenkinsのPipelineの環境構築してみた
仕事でiOS SDKのテスト・ビルドをJenkinsでGithub Pull Request BuilderとかBitbucket Pull Request Builderとかのプラグイン使いながらなんとか構築した途端にJenkins Pipelineの存在を知ってしまったので軽く落胆しながらもローカルのMac PCで動かすまでの環境構築をしてみました
Jenkinsインストール
Homebrewでインストールしてみる
$ brew search jenkins homebrew/versions/jenkins-lts jenkins jenkins-job-builder Caskroom/cask/jenkins-menu $ brew install jenkins ==> Using the sandbox ==> Downloading http://mirrors.jenkins-ci.org/war/2.54/jenkins.war ==> Downloading from http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war/2.54/jenkins.war ######################################################################## 100.0% ==> jar xvf jenkins.war ==> Caveats Note: When using launchctl the port will be 8080. To have launchd start jenkins now and restart at login: brew services start jenkins Or, if you don't want/need a background service you can just run: jenkins ==> Summary 🍺 /usr/local/Cellar/jenkins/2.54: 7 files, 69.9MB, built in 16 seconds
Jenkins起動
とりあえず動作確認したいだけなのでjenkinsコマンドで起動してみる
$ jenkins [~] Running from: /usr/local/Cellar/jenkins/2.54/libexec/jenkins.war webroot: $user.home/.jenkins ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: ******************************** This may also be found at: /Users/toru.furuya/.jenkins/secrets/initialAdminPassword ************************************************************* ************************************************************* *************************************************************
ブラウザでlocalhost:8080にアクセスして推奨プラグインをインストールする
Jenkins Job作成
新規ジョブ作成からGithub Organizationsを選択してジョブ作成する
Scan credentialsは追加ボタンからGithubのusername/passwordを入力して新規作成する。 Credentialが不正だとInvalid的なメッセージが出てくるので分かりやすい
Jenkinsfile作成
2通りの文法があるらしい。今回はとりあえず最近追加された方のDeclarative方式にしといた。詳細はリンクを参照
https://jenkins.io/doc/book/pipeline/jenkinsfile/
pipeline { agent any stages { stage('Build') { steps { echo 'Building..' } } stage('Test') { steps { echo 'Testing..' } } stage('Deploy') { steps { echo 'Deploying....' } } } }
githubにサンプル用のレポジトリ作成してJenkinsfileをcommit
https://github.com/torufuruya/pipeline-sample
Scan実行
Scanログ見てるとこんな感じのがずらーっと流れてくる。どうやらサンプル用のレポジトリを見つけてくれたぽい
Proposing pipeline-sample Looking up torufuruya/pipeline-sample Getting remote pull requests... 0 pull requests were processed Getting remote branches... Checking branch master ‘Jenkinsfile’ found Met criteria 0 branches were processed (query completed) Done examining torufuruya/pipeline-sample
Scanが終わるとこんな感じでJenkinsファイルを配置したレポジトリが管理できるようになった。超簡単
Github Enterpriseでの利用
Jenkinsの管理 > システムの設定 > GitHub Enterprise Servers を追加する。Nameは任意のものでOkay
Job作成は最初と全く同じ手順で行うけど、Jenkinsのシステム設定を変更したことによりここでProjectsにAPI endpoint
の項目が追加される。でさっき作成したGithub Enterprise用のものを選択して再度Credentialsを作成して完了
Github EnterpriseのレポジトリにJenkinsfile配置してScan実行
Proposing pipeline-sample Looking up toru-furuya/pipeline-sample Getting remote pull requests... 0 pull requests were processed Getting remote branches... Checking branch master ‘Jenkinsfile’ found Met criteria 0 branches were processed (query completed) Done examining toru-furuya/pipeline-sample
後記
めちゃくちゃ簡単。恐ろしく簡単。今までJenkinsのWEB UIでぽちぽちしながらメンテしてたジョブたちがコードで管理されると思うと嬉しさしかない。はやくテストとか実行したい。わくわく
以下のサイトを参考にさせていただきました
AWSome Day Tokyo に参加してきた
先週の水曜日、仕事に行かずに早起きして大崎へ。目的はこのイベント。
AWSの導入を検討してたりAWS使い始めてみようかなという人のためのイベント。僕もプライベートでEC2, Route53, AMIだけ使ってWordPressのブログ作ったことあるくらいなので例に漏れず。
Awsome Day Tokyo 2017 行ってきた · GitHub
有給使わず一応仕事として参加したので会社のエンジニアにシェアするようにメモったもの。当日行ってみたら机が用意されておらず割と1人1人のスペースが狭めで予想を裏切られたんだけど、PCを足の上に置きながらなんとか全セッション気になったところだけメモりました。(右隣の人が午前中だけで帰られて端の席空いたのでちょっと余裕できて助かった)MacBookPro17インチでかいからMacBook13インチ切実にほしい。
内容としてはもう既に100を超えてると噂のAWSのサービス群の簡単な紹介と、EC2, S3, RDSの基礎的な話と、IAMのセキュリティ関連な話と、AutoScalingとかその他管理ツール系の話がありました。サービス群で紹介された人工知能系のサービス(Lex, Polly, Rekognition)には「もうこれジャービス*1じゃん!ジャービスはよ!」と胸が高鳴りました。
胸が高鳴ったといえば、IAMの認証情報がもし盗み取られたらビットコインの採掘に使われてるという話もw。
ハッカーじゃなくてクラッカーだろ、っていうツッコミはさておき、
これは極端な例だと思うかもしれないが、オーストラリアのセキュリティ専門家が先月に実施したGitHubの検索では、約1万件のAWS 認証情報が発見されている。
ソースコードの中に認証情報入れちゃ、ダメ。ゼッタイ。 IAMロール周りの話は今まで全く理解してなかったのでこの講演を聞いて理解できて良かった。今回の一番の収穫かもしれないくらいに。講師の大村さんのしゃべりが上手だったのが大きい。プライベートで使ってるAWSはルートアカウントで操作してたからすぐにIAMユーザ作ろうと誓いました。
あとはAmazon Trusted Advisorがこれ便利だなーという印象でした。ビジネスサポートプランかエンタープライズサポートプランじゃないと全ての機能は使えないぽいんだけど、AWS使ってる人は一度使ってみると面白いと思います。僕も早速会社で使ってるAWSで試してみましたが色々とアドバイスをくれました。もう実運用されてるサービスだけど「即時対応が推奨されるチェック項目」がいくつか出て来てしまってwktkが止まりませんでした。
AWS Summitの申し込みも始まりましたね。