takachan's blog

地方のエンジニアが、まずやってみる(Bias For Action)!!をモットーに気持ちを綴るブログです。

大切なお知らせ

アーティストのブログみたいなタイトルにしてみました。一度使いたかったのです。ごめんなさい。

この度、2014年5月に入社し勤めてきたモンスター・ラボを2019年1月末にて退職し2月よりChatwork株式会社へ転職しました。 これまでの振り返りも兼ねて書いていきます。

モンスター・ラボでは何をしていた?

4年8ヶ月過ごしたモンスター・ラボでは、主にRFPを元にAWS上でどう実現するかインフラアーキテクチャを提案・設計・構築・運用をしていました。 インフラアーキテクチャではInfrastructure as Codeを実現するために各種ツールを駆使してインフラ構築・運用していました。

業務は、このような内容を行っていました。

  • お客様からRFPを頂きそのRFPからAWS上でのシステム実現方法と非機能要件を満たすためのアーキテクチャを提案 をプレゼン
  • そのアーキテクチャを設計から構築・運用まで担当
  • 10名程度を束ねるチーム長を担当し、プロジェクトではインフラコードをGitHubを使ってPullRequestベースで設計し実装・レビュー
  • 海外のグループ拠点をまたいでプロジェクトを遂行
  • 現在の組織の課題解決に積極的に取り組む(効率化・標準化のためのツール作成やセキュリティ対策など)
  • 最新技術のキャッチアップのため定期勉強会を社内で開催

業種は様々でWebアプリケーションやモバイルアプリなど携わってきました。 少ないながら各種メディアにも露出したり、セミナーなどで登壇するなどいろいろ経験させてもらいました。

モンスター・ラボへの面接時以下の3点を伝えました。

  • 鹿児島から関東・関西に引越しするつもりはない
    • 岩手(出身)=>宮城(学生)=>東京(新卒から数年)=>鹿児島(イマココ)
  • リモートワークって働き方があるらしいからそれで働きたい
    • これまでは会社勤めしていた
    • 仕事の状況によって出社はするよ
  • インフラ業務経験は浅いけどインフラエンジニアやりたい
    • 前職では主に業務系サーバサイドエンジニアで少しだけオンプレミスのサーバ管理者の経験あり

転職時にこのような条件受け入れてくれる企業はこの会社以外はありませんでした。 この会社に出会えて一緒に働けて幸せでした。

最近、APNスタンダードコンサルティングパートナーに認定されて非常に嬉しく思います。

どうして転職したの?

昨年の夏、ふとこれまでの自分のキャリアを振り返ることがありました。

すると、これまで新卒で中小SIerに入社し各プロジェクトの現場へ出向し従事するということを数年行い、鹿児島に移住してからもその働き方は同じでした。 モンスター・ラボでは受託開発をメインで行う部署に配属されました。

それでもこれまでは良かったと思います。 自分がやりたいことと仕事内容が一致していたので不満はありませんでした。

私には2人の子供がいますが、いずれ物心ついてきて「お父さんは何のお仕事してるの?」というような質問をしてきた時、簡単に説明できる言葉が思いつかないなと思いました。ちゃんと伝えようとすると説明が長くなりそうな気がしました。

そうなんです、私のキャリアはすべてクライアントのものを作っていて自分の会社のものではなかったのです。

これを考えたときに私の中で転職意識が芽生え始め、Webサービス・アプリを運営している企業を中心に選定を始めていきました。

ここで誤解してほしくないのは、SIerに所属して出向して頑張っている方々や受託開発を否定もしていません。 私自身が進みたい道を選んだというだけです。

次は何するのか

国内の企業に色々話を聞いたり、エージェントからの紹介、直接お声掛けなどありましたが私のワークスタイルを入社時点から認めてくれる企業はまだまだ少ないのが現状でした。

募集要項にリモートワーク 可 もしくは 制度ありと言っても、

  • 数年東京で勤務した後
  • (東京に住んでいる前提で)週に何日か
  • 台風を始めとする気候条件や天災などが理由

というもので、生活拠点を変えるつもりもなく子供がまだ小さく手のかかる状況でたとえ大手だったとしても数年行くのは許容できないなと思いました。

その中でも私のワークスタイルを認めてくれて、現在のスキルセットを生かして、サービスのさらなる成長に貢献したく、Chatwork株式会社へジョインしました。

Chatworkは個人的にもユーザでしたし、モンスター・ラボでも利用していました。技術的にもAWS関連のイベントでも登壇を拝見したりスライドを見ていたりAWSをフルに活用している企業であることは知っていまいた。

それに、Chatworkのようなツールはまさに私のようなワークスタイルの方が使うツールであり、そのツールが安定でより便利に使えるようにすることにコミットしたいと思えました。

これからは、SREとしてサービスの基盤を支えながらサービスがより成長するための役割を担っていきたいと思います。

今後カンファレンスなどでも登壇機会があればぜひやりたいですし、無理のない範囲でOSS活動や執筆とかもチャレンジしてみたいです。

ウィッシュリスト

一応ウィッシュリスト作成したので、もし良かったら・・・気持ちより形派です http://amzn.asia/asqUpHs


【HD】ONE OK ROCK - キミシダイ列車 "Mighty Long Fall at Yokohama Stadium" LIVE

最近聞いている音楽の話

Facebookでつながっている人たちが最近書いているので、便乗して最近聞いてるアーティストを書いてみた。

f:id:twinuma:20161216125514j:plain

私の音楽情報源は主に、SpotifyFM802なんですが今年聞いたなかで良かったアーティストを YouTubeから割りと聞きやすい曲のリンク貼ってます。

他のみなさんのおすすめも聞いてみたいです。

Nulbarich

はじめ聞いたとき衝撃だった。日本人でもここまで洋楽っぽいアレンジや歌い方出来るんだ・・・と思った。


Nulbarich - NEW ERA (Official Music Video) [YouTube Ver.]

フレンズ

Awesome City Club系の音楽好きなら、グッと来るはず。


フレンズ「NIGHT TOWN」

SHE'S

声がとても綺麗で聞きやすい。メロディーが好き。


SHE'S - White

Official髭男dism

バンド名だけ見ると、どんなゴリゴリな人かと思ったら全然違った。高音がとても綺麗。


Official髭男dism - LADY[Official Video]

爆弾ジョニー

ギターロックが好きな私はドはまりです。最近出たアルバムはおすすめ。


爆弾ジョニー 『アクセル』

BRADIO

Earth,Wind & Fireかと間違っちゃうサウンド。


BRADIO-LA PA PARADISE(OFFICIAL VIDEO)

Creepy Nuts

がらっと変わって、HIPHOPアーティストのCreepy Nuts。MVの作り込み好きだわ。もちろん楽曲も好き。 あとはこの二人のトークは面白いので深夜ラジオやってほしい。


Creepy Nuts(R-指定&DJ松永) / メジャーデビュー指南【MV】


Creepy Nuts(R-指定&DJ松永) / だがそれでいい【MV】

R-指定 from Creepy Nuts

これ何回リピートして聞いてるか分かんない。サンプリングでここまで自分のものにしちゃうかぁって感じ。3連覇の凄さを感じる。


R-指定 UMB 2014 ウイニングラップ

どうも、アルカラおじさんです。

この記事は,ロックバンド Advent Calendar 2016 - Adventarの20日めの記事です。私は大好きな アルカラ について書きます。 f:id:twinuma:20161221005917j:plain

アルカラって誰?

ここにバンドのディスコグラフィーとメンバープロフィールが書いてます。 arukara.net

メンバーは、

  • Volcal&Guitar 稲村太佑
  • Guitar 田原和憲
  • Bass 下上貴弘
  • Drums 疋田武史 計4名

アルカラとの出会い

もともと鹿児島で開催された グッドモーニングアメリカ のライブが目的でした。 3マンになってそのときの対バンが 04 Limited Sazabys とアルカラだったのです。 spaceshowermusic.com その時のライブパフォーマンスに衝撃を受けてしまって、それからファンです。 その時感じたそれぞれのメンバーへの印象・・・

  • 稲村さん=> 歌上手いし喋りも上手いなぁ。タンバリンはいつ使うのかな・・・
  • 田原さん=> 髪の毛長すぎて見えてるのかな・・・どこかの教祖様みたい
  • 下上さん=> 結構暴れながら演奏するタイプのベースなんだね。コーラスのときの顔怖い
  • 疋田さん => 一切喋らないんだね。汗だくで一生懸命演奏してるな

2回目のライブで感じたアルカラ

spaceshowermusic.com 2度目のライブは、アルカラ&GRAPEVINE&SISTAR JETの3マンでした。 鹿児島CAPARVO HALLの8Fがこの公演で、7FがKEYTALKというやばい日。 稲村さんが「若い子KEYTALKに行ってしまって年寄りしかいないんちゃうかー?」ってイジってた笑

たしかにフロアの半分も埋まっていなかったかも・・・でかい箱を満員にするベテランバンドなのに・・・ そんな状況でも、これまで見てきた通り全力のパフォーマンスは変わらず。そのプロの姿勢に圧倒されました。

演奏直後に自分たちの機材の撤去と運び出しをしている姿を見て、声掛けたくても作業中なので遠慮していました。 帰り間際にたまたま稲村さんとすれ違ったので、

私「稲村さん、今日のライブもめっちゃ良かったです!また鹿児島来てください!!」

稲村さん「ありがとー!また一緒に楽しもうなぁ!帰り気を付けてねー!」

めっちゃいい人だった。このツィートを読んで改めてアルカラメンバーの姿勢にはとても素晴らしいし、応援していきたい。

そんなアルカラのライブに来年も参戦していきます!!

おすすめ動画


アルカラ - Live DVD 『20141207 -ガイコツアー2014-』(Trailer)


アルカラ - Live DVD『20131124~むにむになるままにJAPAN TOUR~』(Trailer)


アルカラ - 『ネコフェス2014 -KUDAKENEKO ROCK FESTIVAL 2014-』 (Trailer)

稲村さんはこういうキャラです。歌が上手い。 これGT2016なんだけど、今年のGT2017もアルカラ出演するし大トリなので今回もこういうの見れるといいなぁ。


アルカラがYOSHIKI@GT2016

実はアルカラってこういう曲もやってるんですよ。ネコフェス2015のラストナンバーがこれだったはず。

まとめ

アルカラの魅力は間違いなくライブです! 来年のフェスでも出演すると思うので、興味持ってくれた方はぜひ見て見て下さい。

MySQLTunerを使ってAmazon RDS for MySQLのチューニング診断してみました。

はじめに

インフラ監視について今一度再学習している過程で、MySQLに関しての内容において面白そうな一文がありました。

“接続数は、MySQLサーバに接続している接続数を監視します。接続数は、ご自身がmy.cnfに定義した値を上限としてください。また、あらかじめチューニングを施し、接続数が増えることによるメモリ不足が起こらないように備えてください。チューニングにあたっては、MySQLに関する書籍を参照するか、mysqltuner.plを活用するとよいでしょう。”

mysqltuner.plってなんだ?

参考リンク

github.com

MySQLTunerでMySQLのチューニングを診断する方法│株式会社イー・エージェンシー

構成

ケチケチして最小の構成で実施します。すべて東京リージョンで構築します。

  • EC2 t2.nano
  • RDS for MySQL db.t2.micro

RDSのパラメータグループはdefault.mysql5.6を使用します。

EC2事前準備

sudo yum -y update
sudo yum -y mysql
wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv
chmod +x mysqltuner.pl

RDS接続確認

mysql -h xxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u rdstest -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.6.23-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MySQLTuner実行結果

perl mysqltuner.pl --host xxxxxx.ap-northeast-1.rds.amazonaws.com --user rdstest --password xxxx --forcemem 256

[--] Performing tests on xxxxxx.ap-northeast-1.rds.amazonaws.com:3306
Please enter your MySQL administrative login: rdstest
Please enter your MySQL administrative password:  >>  MySQLTuner 1.6.2 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[--] Assuming 256 MB of physical memory
[!!] Assuming 0 MB of swap space (use --forceswap to specify)
[OK] Currently running supported MySQL version 5.6.23-log

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[!!] InnoDB is enabled but isn't being used
[OK] Total fragmented tables: 0

-------- Security Recommendations  -------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] User 'rdstest@%' hasn't specific host restriction.
[!!] There is no basic password file list!

-------- CVE Security Recommendations  -------------------------------------------
[--] Skipped due to --cvefile option undefined

-------- Performance Metrics -------------------------------------------------
[--] Up for: 13m 59s (1K q [1.782 qps], 26 conn, TX: 93K, RX: 157K)
[--] Reads / Writes: 95% / 5%
[--] Binary logging is enabled (GTID MODE: OFF)
[--] Total buffers: 646.0M global + 1.5M per thread (66 max threads)
[!!] Maximum reached memory usage: 649.0M (253.52% of installed RAM)
[!!] Maximum possible memory usage: 745.0M (291.02% of installed RAM)
[OK] Slow queries: 0% (0/1K)
[OK] Highest usage of available connections: 3% (2/66)
[!!] Aborted connections: 3.85%  (1/26)
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 1 sorts)
[OK] Temporary tables created on disk: 3% (3 on disk / 100 total)
[OK] Thread cache hit rate: 92% (2 created / 26 connections)
[!!] Table cache hit rate: 14% (45 open / 303 opened)
[OK] Open file limit used: 0% (48/65K)
[OK] Table locks acquired immediately: 100% (424 immediate / 424 locks)
[OK] Binlog cache memory access: 100.00% ( 9 Memory / 9 Total)

-------- MyISAM Metrics -----------------------------------------------------
[!!] Key buffer used: 18.2% (3M used / 16M cache)
[OK] Key buffer size / total MyISAM indexes: 16.0M/2.4M
[OK] Read Key buffer hit rate: 95.4% (438 cached / 20 reads)
[!!] Write Key buffer hit rate: 88.3% (384 cached / 45 writes)

-------- InnoDB Metrics -----------------------------------------------------
[--] InnoDB is disabled.
[!!] InnoDB Storage engine is disabled. InnoDB is the default storage engine

-------- AriaDB Metrics -----------------------------------------------------
[--] AriaDB is disabled.

-------- Replication Metrics -------------------------------------------------
[--] No replication slave(s) for this server.
[--] This is a standalone server..

-------- Recommendations -----------------------------------------------------
General recommendations:
    Add skip-innodb to MySQL configuration to disable InnoDB
    Restrict Host for user@% to user@SpecificDNSorIp
    MySQL started within last 24 hours - recommendations may be inaccurate
    Reduce your overall MySQL memory footprint for system stability
    Reduce or eliminate unclosed connections and network issues
    Increase table_open_cache gradually to avoid file descriptor limits
    Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
    Beware that open_files_limit (65535) variable
    should be greater than table_open_cache ( 2000)
Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
    query_cache_type (=1)
    table_open_cache (> 2000)

[!!]と出ている行が警告で、チューニングの改善が必要な箇所が表示されます。 InnoDB関連はMyISAMを選択しない限り無視してOKです。

Recommendations以下に表示されている内容を確認し、 必要な部分は対応するとよいとのことです。

上記結果を参考に、以下のRDSのパラメータグループを変更しました。

  • table_open_cache
  • query_cache_limit
  • query_cache_type

まとめ

MySQLTunerを使って普段使用しているRDSのパラメータを診断してみました。 encodingやtimezoneは変更していましたが、診断結果によってチューニングできる箇所が分かると嬉しいですね。

RDSはよく出来ているサービスなので皆さん是非使用しない手は無いですよ!!

試した方は最後に起動したEC2とRDSの削除をお忘れなくm( )m

moCloud上のPHPからSendGridを使ってメール送信 - Mobingi Advent Calendar 2015

この記事は、Mobingi Advent Calendar 2015 - Adventar の 12月22日の記事になります。

f:id:twinuma:20151222162131p:plain

What's Mobingi?

mobingi.com

AWSのCloudFromationをより簡単な操作で作成できるサービスという印象です。 初めて触っただけでも必要な構成をすぐ用意することが出来ました。

What's moCloud?

mobingi.com

ロードバランス機能がついたアプリケーションを簡単なワークフローのみでデプロイすることができます。 用途としてはWebサーバやAPIサーバとして利用がオススメです。

もっとmoCloudを知りたい方におすすめのリンク

yoshidashingo.hatenablog.com

moCloud上にサーバ作成

構成情報

このような画面で実行したいアプリケーション設定を行います。非常に簡単でわかりやすいUIです。 f:id:twinuma:20151222071353j:plain

SendGridのメールをPHPを使って送信(SendGridのサンプルを使用)

sendgrid.kke.co.jp

上記リンクにある通りサンプルを使用し部分的に書き換えました。 構成は以下の通りです。

├── README.md
├── .env
├── composer.json
├── kanna.gif
├── mobingi-install.sh
└── sendgrid-php-example.php

mobingi-install.shは、実行アプリケーションにおいてソフトウェアのインストールが必要な場合、ルートディレクトリ内に配置するものです。 Documentation - moCloud.io

.envファイルの設定を行いphp -f sendgrid-php-example.phpを実行すると以下のようにメールが3通受信します。 f:id:twinuma:20151222144446p:plain

受信したメールを確認すると、 https://gyazo.com/831b5bc577317a8473dd772ef587802e ちゃんとメッセージと橋本環奈ちゃんgifが添付されていることが確認できました。

まとめ

moCloudを使用する場合は、mobingi-install-shをいかに利用できるかがポイントになるかと思うので ここのtipsをもっと共有できればいいですね。 MobingiとmoCloudどちらも既存のGitHubと連携できるのでpushした時に、自動でデプロイされるようになっていることはDevOpsを実現するためには非常に嬉しい機能であると思います。

リモートワークとモチベーション - リモートワーク Advent Calendar 2015

この記事は、リモートワーク Advent Calendar 2015 - Adventar の 12月10日の記事になります。

見よ、これが子育てエンジニアの姿だ!!

私は株式会社モンスター・ラボでインフラエンジニアをしている、新沼といいます。 主にWebアプリケーションやモバイルアプリのインフラ設計・構築を担当しています。 最近子供が生まれまして、ラップトップの横にミルトンという意外な組み合わせだったので写真撮りました。

リモートワークは現職になってからのワークスタイルとなりますので、1年7ヶ月程になります。 リモートワークに至る経緯や普段の仕事の進め方は、今年掲載されたインタビュー記事を見ていただけると幸いです。

インタビュー記事

その1

ascii.jp

その2

www.remotework-labo.jp

その3

www.remotework-labo.jp

記事に掲載されていないこと・・・

「モチベーション」の部分について書いて見ます。

このようなワークスタイルを選んだ以上、セルフマネジメントができないと成立しないと思っています。 安定した気持ちと健康な体を維持することが大事です。

安定した気持ち

私がいつも思っているのは、以下の3つです。

  • 自分が選択したワークスタイルへの責任とコミット
  • このワークスタイルを認めてくれている会社への感謝
  • 家族と一緒に過ごす時間を多く作る

1年7ヶ月経った今振り返って浮かんできたこの3つです。

健康な体を維持する

運動不足になるので1年くらいほぼ毎日のようにジョギングしています。 走りながら考えていたことの整理やモヤモヤした気分を打ち消したりできます。

調子に乗って来年鹿児島マラソン2016フルマラソン初挑戦します。 www.kagoshima-marathon.jp

私の場合が走るとこでリフレッシュできているだけなので、皆さんにおすすめする訳ではないです。 自分にあったストレス発散方法を見つけられるといいと思います。

最後に

小室さんが1日目に書いていた内容に同意です。 リモートワークは素晴らしいワークスタイルだと思っています。 一過性のものではなく、皆が自分で働き方を場所・時間に制限されることなく自由に選べる機会が多くなるといいなと思っています。

popowa: 何が大事? - リモートワーク Advent Calendar 2015

Mobing Advent Calendar 2015の12/22(火)担当なので、またブログ書きます。 次はテクニカルな内容なると思います。 qiita.com

Mac ユーザーのためのコマンドライン勉強会に参加してきました。

昨日は、Mac ユーザーのためのコマンドライン勉強会に講師として参加してきました。

参加者は、6名で少数でしたがお互いフォローし合えるちょうどいい人数だったと思います。 隣がAppleユーザコミュニティの集まりだったようで、間違ってこちらの部屋に入ってくるハプニングが多々ありました。

講師は政倉さんと私で、政倉さんからはコマンドラインの話をして頂きました。 私はHomebrewの話をしてきました。当日使用したスライドをアップしておきます。

時間が余ったので、最後にコマンドラインを使ったアイディアを出しあうことをやったのですが、面白いと思いました。 実際やった問題は「あるディレクトリ内に複数の画像形式の画像の中から、png形式の画像枚数を出力する」というものをコマンドラインで実現するにはどうするか?

皆がアイディアを出し合って解決へのアプローチを話し合うって面白いし、もしかするとその解決方法は仕事でも活かせる内容だったらより嬉しい! って感じながら話をしました。

少人数ならではの勉強会スタイルを今後も模索していきます。

MacAutomatorの存在を知らなかったんですが、めっちゃ便利だった。これはどんどん使っていこう。

最後に2つ宣伝させて下さいm( )m

宣伝1

7/4に「HTML5 Conference in 鹿児島」を開催します。 鹿児島大学をお借りして、200人規模で開催致します。

参加は無料ですので、お時間ある方はご参加下さい。 よろしくお願い致します。

宣伝2

7/4に鹿児島で開催される「HTML5 Conference in 鹿児島」のボランティアスタッフを募集しております。 スタッフがまだまだ足りていないので、みなさんのご協力をお願い致します。 当日は一緒に楽しみましょう!!

今回のブログはざざーっと書いてみました。