| @技術/プログラミング

前書いてた記事の続き。

Kaizen Platform 時代は Naoya Ito さんの以下の記事にあるような感じで deploy してた。 Slack 上で hubot に話しかけると deploy 用の Pull Request が作られていい感じに deploy フローが始まる。

これがめっちゃ良くて、現職場でも導入したいと思ってたので今週ちょっとやってみたところ deploy できるようになった。

実際のデプロイフロー

まず Slack で hubot ( 山の会社なので tengu という名前にしてる)に話しかける。すると hubot で GitHub の API を叩いて deploy 対象の Pull Request を取得し、それぞれの Pull Request ごとに commit をグルーピングして、 deploy 対象の Pull Request の Author にメンションするかたちで master ブランチから deployment/production ブランチへの Pull Request が作成される。

tengu deploy 1

最近 Slack の GitHub Integration がアップデートされて、 Webhook の通知がいい感じに飛んでくるようになったので Slack 上でどんな内容が deploy されるのかが一目瞭然となる。

実際に作成される Pull Request は以下のような感じ。この Pull Request を Merge することで CircleCI 上で deploy 用のビルドが走る。その辺は Naoya さんの記事で書いてあるのと同じ。

tengu deploy 2

いま作ってるやつは AWS ECS で運用しようとしてるので、 cap deploy ではなく手製のシェルスクリプトで以下のことをやっている。

  1. deploy 用のコンテナイメージをビルド
  2. AWS ECR にコンテナイメージをプッシュ
  3. プッシュしたイメージを利用する Task Definition を追加し、 ECS のサービスを更新 ecs-deploy というシェルスクリプトでやる

以前の記事にも書いたが「 CircleCI が落ちてたら deploy できないじゃん?」というツッコミが入ったため CircleCI が落ちていても deploy できるようにシェルスクリプト化してあるので、手元からおもむろに bin/deploy production とかやっても deploy できる。

ちなみにこのフローを実現する .circleci/config.yml は以下のような感じ。

jobs:
  deploy:
    docker:
      - image: docker:17.05.0-ce-git
    steps:
      - checkout
      - setup_remote_docker:
          docker_layer_caching: true
      - run:
          name: Install dependencies
          command: |
            apk add --no-cache py-pip=9.0.0-r1 jq curl curl-dev bash
            pip install docker-compose==1.18.0 awscli==1.14.38
            curl -s https://raw.githubusercontent.com/silinternational/ecs-deploy/ac2b53cb358814ff2cdf753365cc0ea383d7b77c/ecs-deploy | tee -a /usr/bin/ecs-deploy && chmod +x /usr/bin/ecs-deploy
      - run:
          name: Execute deployment (Docker image build, push to ECR, create new Task and replace container)
          command: |
            case ${CIRCLE_BRANCH} in
              "deployment/dev" | "master" )
                DEPLOY_ENV="dev" ;;
              "deployment/production" )
                DEPLOY_ENV="production" ;;
            esac
            bin/deploy ${DEPLOY_ENV}

workflows:
  version: 2
  production-deploy:
    jobs:
      - deploy:
          filters:
            branches:
              only:
                - deployment/production

Chat deploy のよさ

deploy フロー・ deploy 状況が可視化され、民主化されることがよい。昔ながらのローカルからの capistrano による deploy の問題点は deploy の特権化を招いてしまうことだと思う。 ○×さんしか deploy 用の踏み台サーバーに ssh できないので一々○×さんに deploy をお願いしないといけない、というような状況はよく分からない遠慮や序列を招きがち。 deploy フローが自動化されていることでチームに入ったばかりの人でもさくっと deploy が行えるというメリットもある。

deploy の履歴が Slack 上と CircleCI 上、また GitHub 上に Pull Request として残るのもよい。ひとくちに deploy といっても schema 変更が伴う場合は作業ログの共有やコミュニケーションをどこかで行う必要があり、その場所として GitHub の Pull Request が使えるのがとてもよい。 YAMAP で作った deploy スクリプトではそこまでやってないが、 Kaizen Platform の deploy スクリプトには deploy 用の Pull Request 本文に動作確認用のチェックボックスを作って、チェックボックスにチェックが入れられるまで cronbot が二時間おきに deploy 対象の commit author に Slack 上で動作確認を促す、というような仕組みまであった。

今後 YAMAP でもどんどん deploy フローを改善していって Merge ボタンを押したあと寿司を食ってれば良いような状態1にしていきたい。


ちなみに上記の chat deploy を実現するためには GitHub App を作っていろいろやる必要があって、その辺は Kaizen Platform で同僚だった t32k さんの以下の記事が参考になった。

書いてあるフローはほとんど Kaizen Platform のやつと同じでちょっとウケた。いやでもそのくらい完成されてる仕組みだと思う。この割とイケてる deploy フローを体験してみたい人は僕が勤めてる YAMAP の Wantedly をご覧下さい。資金調達しており割と積極的に採用中です。


  1. Terraform + GitHub + CircleCI + Atlasを利用してAWSの操作を自動化した - Glide Note http://blog.glidenote.com/blog/2015/02/18/terraform-github-circleci-atlas-aws/ 

| @雑談

IMG_1893

この記事は地方在住ITエンジニア(元・地方在住も可) Advent Calendar 2015 - Adventar 6 日目の記事です。地方在住ウェブエンジニアの著者が思ったことを書きます。


自己紹介

熊本出身で大学生の頃は東京に住んでいました。いまは福岡市に住んでいて、東京のインターネット企業に雇ってもらってます。リモートで仕事してます。

福岡のことを書かない理由

最初は福岡での暮らしについて書こうかと思ったのですけど、福岡在住の著名 IT エンジニアはきしだなおきさんや新井俊一さんなど以前からたくさんいらっしゃって情報発信しておられますし、最近では前職でご一緒させていただいた、昼に寿司を食べた舌が乾かないうちに夜焼肉を食べたりしている金満エンジニアで、天気の話からでも HashiCorp プロダクトの話に結びつけるづらさんや、女性ファン急増中のプラチナ貴公子スーパー Go lang プログラマーモノクロメガネさんなど雨後の竹の子のようにいて情報発信しておられますし、また福岡について書いたら最終的に「福岡便利ですよ、移住してみませんか」みたいな結論になりがちですし、加えてほかの皆さんの記事を読む限り福岡は地方には含まれなさそうなので、福岡にやってくる前に住んでいた熊本県阿蘇地方での生活を綴りたいと思います。

キャリアの始まり

僕が最初ウェブ開発を生業にしたのは熊本県の過疎地域、阿蘇地方でした。元々学生時代にコンピューターサイエンスを学んでいたわけではありませんでしたし、プログラミングというより HTML マークアップと雑用担当としてウェブ開発業界に潜り込みました。

地方のつらみ

ギャラが少ないことと勉強会に参加できないことがつらかったです。

ギャラが安い

実家暮らしだったので何とか生活できていましたが、年収200万に満たなかったです。地方にもインターネット関係の仕事がないわけではないのですけど、まともな賃金が支払われる仕事がないと感じます。地方でのシステム開発は、自治体が都会の SI 会社に発注する数千万円から数億円規模の仕事か、商店のホームページのアクセスカンター設置みたいなやつしかなくて、後者に対する報酬はとても少ない。一年と少ししか働いていませんでしたが、このまま歳をとるとやばいな、という危機感はありました。

勉強会に参加できない

田舎にいると勉強会的なものに一切参加できないのもつらかったです。勉強会がしばしば開催されている福岡に引っ越してきて何度か勉強会に参加してみたけれど、勉強会は参加するだけでは無意味で発表する側にならないと得られるものが少ない、ということがわかって勉強会渇望症みたいのはなくなりました。いまにして思えば隣の芝生は青い状態なだけだったという感じがあると思います。勉強会とかなくても学ぼうと思えば学べるはずです。ただし勉強会で発表しまくって目立ちたいとかそういう人は都会に住んでないとダメでしょうね。

相談できる相手がいない

職場に質問・相談できる相手がいないのが心細かったです。常に一人で考えて試行錯誤を重ねる必要がありました。それはそれで良い経験にはなっていたと思うけど、知っている人がいてヒントを出してもらいながらステップアップしていく方が断然効率的だったと思います。もし『情熱プログラマー』でいわれるところの師匠なような存在がいたら、今頃もっとよいエンジニアなれていたのではないかと自らの怠慢を棚に上げ思います。

街の灯火が遠い

ほかの人の記事を読むと通勤時間が長いと書いてる人が多いですけど、当時の職場は家から車で 10 分のところにあったので通勤時間に関しては不満はなかったです。この辺はたまたまが職場が家から近くてラッキーだっただけだと思います。ただ仕事のあとに映画を見たいとか本を買いたいと思っても、田舎過ぎて仕事帰りに何かするというのが無理だった(そもそも仕事が終わるのも遅かった)のはつらかったです。

田舎にいて良かったこと

自然

当時の職場が森の中にあって、職場から阿蘇山の景色を望むことができました。また昼休みに職場の周りを散策すると、小川があったり農家に引かれて道を歩いてる牛とすれ違ったりして毎日がちょっとしたハイキングみたいでした。疲れたときに窓から阿蘇の山々を眺めると癒やされましたし、毎日昼に散歩すると頭がすっきりする感覚があってよかったです。キャリアのスタート段階だった、独身で時間を自由に使うことができた等様々要因はありますが、当時はよく学ぶことができていたなという感じがして、これら自然環境が少なからずよい影響を与えていると思います。

無双

ギャラが少ない一方で上司が非技術者なのでやりたい放題できるというメリットがありました。課題に対して自分の好きなとおりに解決策を考えて解答を出すことができました。以前、社内 SE は無双できると書かれている記事を読みましたが、まさにそんな感じです。信頼さえ得てしまえば無双できると思います。

結論

  • 莫大な遺産があって働かないでも食っていける
  • スタートアップで働いていたが上場してストックオプションで億単位の金融資産を得た
  • 独身、あるいは妻子に逃げられて養うべき家族がいない(慰謝料とか養育費も払わなくてよい)

等々で収入が多くなくてもかまわないなら、田舎で仕事するのも良いのではないか、と思います。特にキャリアのスタート期を終えて一定程度のスキルを身につけている状態で、働き口さえあれば、地方に引っ込んでもそれなりに楽しくやっていけるのではないでしょうか。ただし地方に引っ込んでも最新技術へのキャッチアップを怠らないことなど、意識を高く持つことは大事だと思います。

勤務先を地方に求めず、リモートで東京の仕事を請け負う、というやり方もありますが、東京の会社に雇用されて福岡でリモートワークしている僕個人の考えでは、リモートワークというのはやはりなかなか難しくて(リモートワークアドベントカレンダーで書こうと思います)、特に業務委託などでフリーランスの人が仕事を受けながら働くのは、受け手が相当の熟達者か、発注者と受け手が元同僚であるとかでないとディスコミュニケーションが発生してお互いつらい気がします。正規従業員として雇用されている僕も月一回程度東京に行って、膝をつきあわせて仕事しています。

役所が都市部のハイエナ SIer に発注するような仕事以外にも、地方在住のエンジニアがローカルビジネスのオーナーから請け負って価値を提供できるような場所はあるのではないかと思っています。以前田舎で働いていたときに、もう少し自分にスキルがあってお客さんにも意欲があれば、もっとウェブ技術を使って便利にできるのになぁと思うことがしばしばありました。ウェブサービス作ってユーザーめっちゃ増やしてドカーンだけがエンジニアリングの使いどころではないと思いますし、地方出身者が都市部に吸い寄せられていくだけでは先祖代々の墓は誰が守れば良いのか分かりません。何年先になるか分かりませんが、隙あらば地元に帰って何かしてみたいです。

跋文

最後に福岡で働くことについて一言書いておきますが、福岡はブラック企業が多い街という印象を受けます。街がコンパクトで皆歩いて帰れる範囲に住んでいるせいか、終電の概念が崩壊しており、平気で午前 2 時、 3 時まで働いている会社があります。なので福岡最高、福岡便利、福岡手榴弾!!、!などといった甘言に惑わされず、移住を検討する際にはまともな勤め先を確保した上で断行してください。僕は福岡で最初に働いた会社が本当にひどかったです。以上です。


この記事は地方在住ITエンジニア(元・地方在住も可) Advent Calendar 2015 - Adventar の 6 日目の記事でした(一日遅れて書いてます)。今日の担当は飲み会後、歩いて帰れる距離でも必ずタクシー帰宅をキメる @h_demon さんです。お楽しみに。

| @旅行/散歩

フィラの景色

2015年6月15日

14 日夜 8 時に福岡を出発して羽田でカタール航空のアテネ行きに乗る。カタールで乗り換えてアテネに 15 日の昼に到着した。

アテネに着いてまずは現金を引き出そうと ATM に新生銀行の PLUS マーク付きカードを入れてみるが、引き出すことができない。 10 年前にヨーロッパを旅行したときは新生銀行のカードでドイツでもチェコでも、円預金を現地通貨で引き出すことができた。同じようにして現金を引き出そうと思い、 ATM にカードを入れるが、事前にインターネットバンキングかなにかで手続きを行っていないと、海外 ATM での引き出しができないようだった。そういえば一時期新生銀行のカードをスキミングして海外で不正に引き出すという犯罪が横行したので、何も設定してない場合は海外での引き出しができないようなルールに変わったのかも知れない。日本では羽田の三井住友銀行の両替所で €60 両替しただけだったのでユーロを現金でほとんど持っておらず、またギリシャの両替レートは日本で €1 = ¥141 だったものが €1 = ¥151 もして最悪のレートで、到着するや否や空港の到着ロビーで派手に夫婦げんかをした。

Continue reading...

| @映画/ドラマ/テレビ

劔岳 点の記

評価 : ★★★☆☆

お台場アクアシティ・シネマメディアージュで鑑賞。JCBカード提示で1500円だった。

明治時代、日本陸軍は日本地図を完成させようと、前人未踏と言われる立山の剱岳への登頂を目指していた。そこに三角点を設置して測量を行うのだ。しかし設立されたばかりの民間組織である日本山岳会も剱岳登頂を目指していた。豊富な資金力でヨーロッパ製の近代的な登山装備を誇る山岳会に対して、柴崎芳太郎(浅野忠信)の率いる陸軍測量隊は旧式の装備しか持たない。しかし地元の村で雇った宇治長治郎(香川照之)のガイドで何とか目的を達する。

ネットのレビューでは評判良かったけど、そんなに良い映画だとは思えなかった。確かに映像は素晴らしい。なんか日本を代表するカメラマンの人が監督したらしい。立山から見える富士山の映像とか、夕焼けを雲の上から見るシーンとか、NHKの山ドキュメンタリーにも勝てそうなくらいのハイクオリティ。でも浅野忠信と宮崎あおいのいちゃつきシーンとか必要ないと思うし、そもそも浅野忠信の嫁役は宮崎あおいよりも檀れいの方が良いと思うし、ストーリーの展開がどったんばったんな感じだった。

とにかく生意気な松田龍平がムカついた。浅野忠信は公務員系の役ってどうなのかなって思ってたけど、これからそっち方面の堅めの実直な人物も演じられるようになっていくかも知れない。そこそこマッチしてた。特に人夫の香川照之を立てようとするところとか好印象だった。浅野忠信には戦争映画とかやってもらって、真面目な日本兵役とか演じてもらいたいな。

| @雑談

New POLO GTI ひさびさにゴル男さんネタ。

 実はここ数日あまり体調が良くなかったのだけど、ゴル男さんに乗るととても気分が良くなった。やっぱりゴルフIIは素晴らしい。ゴル男さん以外の他のゴルフとの関わりといえば、免許を取る前に友人のIIIの助手席に載せてもらったことがあるくらいだから、比較ができるほどゴルフに精通しているわけではないのだけど、ゴルフII GTIが運転していて楽しい車であることは間違いないと思う。コンパクトな車なので小回りが利くのはもちろんのこと(右折車の横を華麗にすり抜けられる)、小ささの割にそこそこパワーがあるから、上り坂でストレスを感じるというような、コンパクトカーにありがちなパワー不足とは無縁である。そういうわけで、夕方の車通りが少ない時間帯、ついつい阿蘇山の登山道に流しに出かけてしまうのだ。ガソリン価格が再び上がり始めているというのに。

Continue reading...