Sake駆動開発

エンジニアリングやガジェットのことなど

ノイズキャンセリング ヘッドホン を 個人的な好みで 比較検討 して 購入した話

テレワークをしていて集中が途切れる

2月頃からずっと テレワーク をしているのですが、色々と環境を整えていました。(表記ゆれはご愛嬌ということで)→ リモートワークが続いたので仕事環境を整備した - Sake駆動開発

環境はだいぶ快適になったとはいえ、今度は気になるのが です。
二階で息子が騒ぐとドタドタとかなり響きます(家が木造なのもありますが)。これがシャレにならないくらい集中力が削がれます。
ヘッドホンを付けたりして凌いでいたんですが、Web会議のときのマイクの調子が悪く新しいのを探し始めました。
というわけで、どうせならより雑音を除去できるノイズキャンセルが付いたヘッドホンを買おうとなったわけです。

検討に上がったヘッドホンたち

まず、私自身のスペックですが - 大学時代にアコギサークルでギターやっていたが下手の横好き - 若い頃はよくロックフェスに行っていたくらいの音楽好き。 - ガジェットが大好きなのでお金があればイヤホンとか色々購入。 - 今回の予算は5万未満で検討。

さていってみましょう。

■ Marshall MONITOR II A.N.C.

元々こちらの MONITOR Bluetooth を使っていたのもあり、一番の候補でした。
Monitor II A.N.C. - Noise Cancelling Headphones | Marshall

ポイント

  • まず見た目が素敵ですよね。かっこいい。
  • そして MONITOR Bluetooth の時点で音が良かった(好みがありますが、辺にチューニングされていないシンプルな音が好きな方は良い)。
  • アクティブノイズキャンセル付き!

筆頭候補間違いなしだったのですが、ここで事件が。

今まで使っていた MONITOR Bluetooth が偽物だった。。

なさけないことにまったく気づきませんでした。Bluetoothのチップが Qualcomm なのですが、箱の表記はまさかの Ualcomm こんなの気づくわけがねぇ。年単位で気づかなくて凄く悔しかったので Marshall は候補から外しました・・・・。

Sennheiser MOMENTUM Wireless M3AEBTXL

色んなレビューサイトで音質が絶賛されていゼンハイザー。私も渋谷のeイヤホンで試した時に素敵なサウンドに酔いしれました(試したのはワイヤレスイヤホンの方でしたが。というか渋谷のeイヤホンなくなってしまったんですね。。悲しい)。
Sennheiser MOMENTUM Wireless

ポイント

  • 各レビューサイトで絶賛されている音質
  • ただ、見た目はあまり好きじゃない(がまんできないほどじゃない)
  • コストお高め(5万)

というわけであんまり見た目が好きじゃないのと予算オーバーで見送りました。音質は凄く魅力的だったのですが・・・。

SONY WH-1000XM3

言わずとしれたSONYのヘッドホン。ノイキャン最高峰でコスパ抜群 (とみんなが言ってる)WH-1000XM3 | ヘッドホン | ソニー

ポイント

  • 他の候補と比べて安い(3万くらい)
  • ノイズキャンセルが最高らしい
  • デザインがあんまりすきじゃない(がまんできないほどじゃない)

Bose Noise Cancelling Headphones 700

低音が良い Bose。完全ワイヤレスイヤホンもってます。音もステキ。だけど密閉性が低いから外で聞くとあんまり良くない。 だからノイズキャンセリングヘッドホンは上記の欠点を補う最高なヘッドホンなはず。見た目も良い。

Smart Noise Cancelling Headphones 700 with Charging Case | ボーズ

ポイント

  • 前述したSONYと比べホワイトノイズのないノイズキャンセル
  • BOSEサウンド(個人的に好き)
  • デザインが良い。
  • お値段高め。

お値段5万円オーバー(8月は4万後半だった気がするけど値上がった?)。ハイ。予算オーバーです。SONYと違ってBOSEはあんまり値が下がらないイメージです。とはいえセール対象になったりするのでタイミング良ければ3万円代後半から4万円台前半で買える。けどいつ来るかわからないものでは変えないので却下。

結局 SONY WH-1000XM4 にしました

だって、ヘッドホン探し始めた時に発表するんだもん。
新しい物好きならそりゃ買っちゃいますよ。発売日前に勢いでポチりました。

WH-1000XM4 | ヘッドホン | ソニー

ポイント

  • 最新(これ大事)。発売してなくてレビューがわからないリスクもある。
  • デザインは相変わらずあんまりすきじゃない(けど購入した)
  • インプレは軒並み好印象のものばかり
  • その他の機能がGooD
    • ヘッドホンを手で覆うと外音取り込みモードになってヘッドホン取り外さずに駅のアナウンスとか聞ける
    • ヘッドホン外すと音楽の再生ストップ。またつけると再生。
    • Bluetooth2台同時接続。PCとスマホにつなげて音がなっている方を認識して切り替えてくれるらしい。
    • ノイズキャンセル最適化(メガネつけてるとかを判別して調節してくれるらしい)
    • DSEE Extreme で音質アップグレード!

f:id:Nabesuke_00:20200904155131j:plain

※ こちら本日 9/4 発売日に届いたので後ほどレビューもUPしたいと思います。

ずっと自宅にいるので ギター の 壁掛けスタンド を DIY

昔やってたギターの置き場所に困る

ことの始まりは、普通のギタースタンドに置いていたギターに思いっきり足をぶつけたところでした。

大学時代にモテたくて始めたギター。

されどギターを理由にモテたことなんて一度もない。

それでもなんとなく20代の後半くらいまでは弾いてたギター。

なんだかんだと青春を共に過ごしたギター。

それを30半ばのオッサンになった今では邪魔と思ってしまった。コレではいかん。

ということで見栄えも良くて邪魔にならない置き場所はないものかと思って考えついたのが音楽やってる友人の家にあった壁掛けスタンド!!!

でも自宅でどうやんの?

壁掛けスタンドにするには穴を開けねばならない。しかし変なとこに空けたら強度不足だったりで取り返しがつかない。 悲しくもその友人とは今は連絡を取っていない。だから聞くに聞けず、、。

Google先生に聞きました。 「ギター 壁掛け」 同じようなことをやってる方々が出るわ出るわ。

今直接壁に穴を開けるのではなくツーバイフォーと言われる規格の大きさの木材を突っ張り棒みたいな感覚で固定して、そこに取り付けるのが流行っているそうで。

これなら持ち家じゃない方も壁に穴を開けずに自由なレイアウトが可能ですね(そういや朝の番組でこういうのを紹介してたかもしれない)

いざ、やってみた

やってみようとは思ったものの木材どこで買ったらいいやら、突っ張り棒みたいなのはどこで買ったらいいやら。

まずは木材は近くのホームセンターで買えます。 突っ張り棒みたいなやつは何種類かあって、どれを選ぶか迷いました。

結局色々選ぶのが面倒でDIYセットを売っているサイトを見つけて注文しました。

注文した品が届くも、LABRICOがない

天井まで届く2mもある木材が我が家にやってきたのですが、どこをどう見ても木材しか無い。

なにもできないやん。。。

というわけで購入したお店の方に連絡すると、改めてLABRICO単品で送ってくれるとのことで一件落着しました。 その時の対応が素晴らしかったのでまた機会があれば利用させてもらおうと思います!

肝心の設置はというと

まずはギタースタンドを固定する場所を決めて、ビスで固定。 次に木材の上と下にLABRICOをはめこんで、アジャスターで固定するだけ。 以上。思った以上に簡単でした。

出来上がったスタンドはこちら。

f:id:Nabesuke_00:20200812124632j:plain f:id:Nabesuke_00:20200812124651j:plain

途中の写真が全く無くて面白みも全く無いですが…。次なにか作るときはなるべく写真撮ろう。

余談

…今現在棚を作ってるんですがまた写真撮るの忘れた。

リモートワークが続いたので仕事環境を整備した

これまでのリモート環境は座椅子とローテーブルだった

以前から週に1回ほどリモートワークをしていたのですが、座椅子とローテーブルでPCとにらめっこしていました。

週に一回程度だったらそれでも特にやりにくさを感じなかったのですが、昨今の事情から弊社では早期からフルリモートに切り替わり、平日フルタイム座椅子Work ということになりました。これが辛い。姿勢が悪くなるのはもちろん、それによって腰が痛い。ケツが痛い。足が痛い。。果てにはPC打つのも辛くなってくる始末。

そんなだから仕事の効率も落ちてきてしまっていた中、会社からリモート対応費用(正確な名前は覚えていない)としていくらかもらえる というではないですか!さすが、理解のある会社!!というわけで自宅の仕事環境を整えるべく色々と購入に走ったわけです。

f:id:Nabesuke_00:20200424113927p:plain

リモートワーク 環境整備

購入のポイント

普段はワタシの趣味部屋を仕事部屋として使っているのですが、狭い。自転車とガンプラ、ギター、ゲームとモニターが置いてあって仕事専用のものを置くスペースがない。というわけで以下のポイントを押さえて選ぶことにしました。

  • 日常使いできる
  • 仕事をする上で最低限の環境が整備できる
  • 最悪邪魔にならない

まず腰が痛いのをなんとかした

上記ポイントを踏まえると、仕事専用の椅子はもってのほかです。ワーキングチェアを買うとそれに合ったデスクを揃えなくてはならず。そんなスペースはありません。

ましてや日常使いしづらいです(諸説あり)。 というわけで以下のポイントから小さめのソファーを購入することにしました。狭いのにソファーかよ!?となりますがポイントを押さえていれば有りです!

これを選んだポイント

  • 日常使いしやすい
    • ゲーム時に使える
    • 休憩時に横になれる
    • 肘掛けがリクライニングするので最悪寝れる
  • 座椅子よりも仕事しやすい(腰に優しい)
  • 使っているローテーブルと競合するものではない

https://www.amazon.co.jp/gp/product/B06XXW12Z5/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1www.amazon.co.jp

そして、ソファーに合うテーブルを(しかも仕事で使えそうなやつ)

上記のソファーを買っただけだと既存のローテーブルとの落差で仕事のしづらさが増すだけです。次はこれに合うテーブルの購入です。

ソファーでしっかり仕事としようって中々思わないはずなので、通常のサイドテーブルはすぐに見つかるんですが、仕事に耐えるものは見当たりませんでした。そんな中見つけたのがこのテーブルです。

これを選んだポイント

  • ソファーに座りながら使える
  • コンセントが付いているので電源が確保できる
  • 昇降式なので立って作業できる
    • ガス圧式なので昇降が楽
  • 仕事しない時はソファーのサイドテーブルにできる

https://www.amazon.co.jp/gp/product/B086YPWS6K/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&psc=1www.amazon.co.jp

電源の確保

上記のテーブルにはコンセントが付いているのですが、使用しているMacBook ProにはUSB Type-cが必要です。 Type-cの充電器は数あれど、Macを充電できる 電圧を備えて且つそれなりのお値段の充電器はあまりありません。それらを満たした充電器が以下。

https://www.amazon.co.jp/Anker-PowerPort-PowerIQ%E3%80%90Power-Plus%E3%80%81MacBook%E3%80%81Galaxy-XZ1%E3%80%81%E3%81%9D%E3%81%AE%E4%BB%96Android%E5%90%84%E7%A8%AE%E5%AF%BE%E5%BF%9C/dp/B072KBG9W4/ref=sr_1_8?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3D23KHSAMRAWB&dchild=1&keywords=anker+%E5%85%85%E9%9B%BB%E5%99%A8&qid=1587701311&sprefix=ANKER+%2Caps%2C254&sr=8-8www.amazon.co.jp

https://www.amazon.co.jp/Anker-PowerLine-%E3%80%90USB-IF%E8%AA%8D%E8%A8%BC%E5%8F%96%E5%BE%97-PD%E5%AF%BE%E5%BF%9C%E3%80%91Galaxy-%E3%80%81MacBook%E3%80%81MateBook%E5%AF%BE%E5%BF%9C/dp/B071WNXY1R/ref=pd_bxgy_img_2/357-5066337-3484701?_encoding=UTF8&pd_rd_i=B071WNXY1R&pd_rd_r=a1ae0f9c-de02-42b9-8c4c-7368dd4318f5&pd_rd_w=Pf128&pd_rd_wg=MgeDw&pf_rd_p=d8ccb48a-6d11-414b-8a9a-570d76fb01a2&pf_rd_r=WV7SZ7QVD9NHFQQ2K3K4&psc=1&refRID=WV7SZ7QVD9NHFQQ2K3K4www.amazon.co.jp

前からもっていたけど今回活躍しているもの

MOFT(ノートパソコンスタンド)

パソコンに傾斜をつけられて、タイピングが楽になります。 目線も上になり、傾斜がないときと比べて驚くほど快適です。

揃えた環境で仕事をしてみた

今日、注文していたものが全て届いたので実際に仕事をしてみたましたが、座椅子と比べて予想以上に仕事がしやすかったです。

机の高さは人によって丁度いい位置があるので一概にオススメはできませんが、私(173cm)は猫背にもなりにくいくらいの高さでちょうどよかったです。ただ、私より身長が低い人が使うとソファーに座りながら使うには高すぎるかなと思いました。昇降式とはいえ、最低の高さでもソコソコ高いです。

いざ使ってみると、そんなに気にしてなかった部分ですごく良いところがありました。

  • テーブルのキャスター

    • これがあることによって使ってないときの片付けがすごく楽。
  • テーブルの昇降機能

    • 想像していた以上に作業しやすい。ただ、注文した机だと高さはギリギリ。→ この値段を考えると十分。

次に狙うは

一通り環境が整ってきたところで、次に狙うのはサブモニターです。 モニターアームにモニターくっつけて作業できたらもうリモートワーク環境の完成じゃないかと。 サブモニターを設置したらまたのらりくらりと記事を書こうと思っています。

e-bike (BESV JR-1) に乗り始めて300キロ 走って感じたこと(飲酒運転はしてません)

飲酒運転じゃないですが、自転車乗ってて歩行者や周囲を確認せずに突っ込んでくるマナーの悪い自転車に恐怖を感じます。 11月後半に JR-1 を手に入れてからすでに400kmほど走りました。 通勤時の長距離(片道27km)に何度も心が折れそうになったところをいつも救ってくれたのは電動アシストでした。ありがとうアシスト。

f:id:Nabesuke_00:20200124182554p:plain
自転車

電動アシストで最高だと思うところ

信号の多い場所でアシストが光る

f:id:Nabesuke_00:20200124182628p:plain

埼玉〜東京23区へ通ってると死ぬほど多いのが信号です。トップスピードに乗ってきたタイミングで赤信号。そもそも走り出してすぐ次の信号で停められるなんてざらにあります。停まっている状態から巡航速度に持ってくまでギア軽くしてこいで、だんだん重くしてこいで、って頑張るわけですが、その負荷がないんです。

そう。電動アシストを積んだ ロードバイク JR-1 ならね。

信号で停まってもギアを変えずにアシスト比率を上げて スタート、速度が上がったらアシスト比率を下げる。これが驚くほど快適です。時速 24km まではアシストで引っ張ってもらって、そこからは24 〜 28km くらいをウロウロしながら走っています。

坂道で本領発揮

通勤に27kmもあるとそりゃアップダウンがたくさんあるわけです。傾斜はゆるくとも地味に続く上り坂なんてもう地獄です。もちろん急勾配なんて見たくもない。私は負荷かけて楽しむタイプじゃないので快適に乗れれば乗れるほどいいわけです。

そう、これも負荷が軽くなるんです。電動アシスト ロードバイク JR-1 ならね。

いつぞや会社の同僚と自転車で急勾配の坂道を登っていたところ、自分だけ立ちこぎもせず座ったままごぼう抜きしたときにアシストの恩恵を強く感じました。だいぶ楽しているなと。

今のところの総評

上記に書いたとおり最高です。 あえて不満というか避けて通れないのがバッテリーとモーターを積んだことによる代償の「重さ」です。

f:id:Nabesuke_00:20200124182652p:plain

あと、値段。電動アシストにこだわらなければ同価格帯で相当いいやつが買えます。 重さと値段に目をつぶれば、相当いい買い物だったと思います。少しでも辛さを感じてしまうと続けなくなってしまうかもしれないので、「楽しく乗れる」というのが重要です。

おまけ:パンク した事件

意外とかんたんにパンクしました。脱輪したタイミングでパンッと破裂音がしました。会社の先輩曰く運だそうです。パンクすると完全に空気が抜けて自走不可能になります。致命的です。

これ、こわいのが調子に乗って遠出すると周りに自転車屋さんがないんです。ロードサービスに加入してるので呼べば自転車運んでくれるんですが年間2回とかなのでこんなにすぐに使っていいのか迷いました。で、先輩の協力もありその場で応急処置をすることにしました。

実際に パンク の 応急修理 で役立ったもの

備えあれば憂い無し。こちらで買い揃えていたアイテムのクイックショットが役に立ちました。

しかし、これも注意が必要です。破裂した穴が大きかったのか、塞がる前に乗ったためか空気が抜けてしまいました。クイックショット単体で事足りると思っていたので冷や汗モノです。 そこでボンベを持っていた先輩のおかげで、空気を入れて自走できる状態まで回復しました。一人だったら途方に暮れていました。

クイックショットとボンベ、両方揃えておきましょう。大事です。

チューブレスタイヤじゃなかった。

応急修理してなんとか自転車屋に持ち込んで発覚したんですが、以前の記事でチューブレスタイヤと書いたんですが、実は普通にチューブ入ってました。結構な勘違い。ちゃんと確認しなきゃ駄目ですね。

近所の自転車屋に持ち込んでわかった電動アシストロードバイクのメンテについて

パンクはいいけど他の部分は 「直してくれない」 いや、直せないらしいです。取り扱いのないメーカーで且つ電動アシストは修理しようとして触って万が一壊れてしまったら 責任取れない そうです。だから自転車屋さんもやりたくないそうです。 買った場所か、私の場合は BESV 取り扱い店舗まで行かないと駄目だそうです。これは盲点でした。

近所の自転車や以外で買う場合は近所に取扱店があるかチェックしたほうがいいかもしれません。

今年の自転車目標。

去年は11下旬〜12月で300km走ったので、今年はまず2000kmを目標に走りたいと思います。 最近は同僚と都内の温泉行ったりと、車や電車で行きにくい場所に行って楽しんでいます。ハッピー自転車ライフ。

f:id:Nabesuke_00:20200124182816p:plain

Amazon サイバーマンデーで買った 栄養ドリンク ZONE

sake駆動開発なのに最近は酒以外にお金が溶けています。栄養ドリンク飲んで仕事頑張ります。

自転車やらなんやらを買って金欠なのに、懲りずにサイバーマンデーを眺めていたら謎の エナジードリンク が目に入りました。

ギズモード さんでも取り上げられてたエナジードリンクです。見た目がいかつい。 この外見で6缶入ってます。

しかもこれ、勢いで買っちゃったんですが、発売前のβ版らしいです。バージョンも0.8.5。

いろいろググってみたんですが商品のサイトは見当たらず。ちょっとドキドキしました。

開封

外箱と中箱が分かれてるので、スポッと中身を抜く

f:id:Nabesuke_00:20191217214452j:plain

なんか未来的なデザインで格好いいかもしれない。

一本抜いてみた

f:id:Nabesuke_00:20191217214529j:plain

デカイ。箱もそうだけど1缶あたりの大きさがすごい。普段モンスターエナジーでもちょっと大きいなと思ってるのに、それ以上の大きさ。

飲んだ。勢いで。

一本抜いたやつをそのまま会社に持って行き、エナジードリンク好きの社員たちに見せびらかしてから飲みました。

味は

「普通に美味しい」

エナジードリンクといえばこんな味だよなって感じで、そういう味が好きな人は好きです。きっと。

成分とか色々は、まだ Amazon でも売られているのでこちらで調べてください。

私は 栄養ドリンクなんて大体一緒 くらいに思っているのですが、尖った見た目にやられてしまいました。

こういう見た目が好きな方、是非。

AWS Batch + Aurora をスケールアップしてたら DB への接続で communication link failure が発生するようになった。

こんな記事書いてますが私はインフラエンジニアではなくバックエンド経験1年ちょっとの元スマホアプリエンジニア(swift/kotlin)です。 AWSは現職にて初めて触っております。環境が変われば何でも自分でやるですね。

経緯

弊社では特別な調査向けに AWS Batch + Aurora + Lambda で、調査の規模毎にスケーラブルな環境を構築して使っています。

嬉しいことに、調査数の増加と既存調査タスクのリプレース(この辺は別途記事にしたいが一年くらい書けてない)も進み、段々とシステムが大きくなってきました。 アプリケーション側こそスケーラブルですが、スケールアップして増殖した調査タスクたちがこぞってつなぎに行くのがスケールしないDBです。 案の定、たまたま同時に動いた複数の調査タスクたちがこぞってつなぎに行った結果 Connection が枯渇してしまいました。

DBのスケールアップを行ったら長い戦いのもととなるエラーと邂逅した。

調査タスクが全て同時に動いた時を想定して、倍以上のメモリを持つインスタンスにスケールアップすることにしました。 スケールアップ後は順調に動くかと思いきや、バタバタと調査タスクが死ぬではないですか。

急いでログを確認すると、そこにいたのが DBとの接続ができないという「 Communications link failure 」でした。そして私達はこの原因不明のエラーと長い戦いを演じることになります。

試した対策

Communications link failure と出されてまず思い浮かぶのはそのまま RDS との接続切れです。接続が切れる原因として思いつくのは先ほどもありましたが Connection の枯渇や、アプリケーション側の接続設定などがあります。

RDS 側の負荷が原因ではない

まっさきに疑ったのが、RDSの負荷が高くて接続が切られたことです。 しかし、スケールアップしたばかりのRDSはまったくもって余裕をもっていました。強いて言うならCPUが60〜70%程度まで上がっていたくらいです。 いままで使用率90%に張り付いても正常に動いていたので、これが原因とはにわかには考えられませんでした。 MaxConnectionも90→1000に増えていて、ピーク時の接続は200程度だったので、ここが問題とは思えません。

アプリケーション側 ( Spring Boot ) の設定を疑った

アプリケーション側にもConnectionの設定があります。 Springでは HikariCP を使用していたので、application.yml に設定していた以下の値を確認しました。

spring:
  datasource:
    username: hoge
    password: pass
    hikari:
      connection-test-query: SELECT 1
      minimum-idle: 5 # 最小connection数
      maximum-pool-size: 10 # 最大connection数
  • connection-test-query

Connectionの接続チェックを行い、timeoutしないようにします。

  • maximum-pool-size

コネクションプールの最大値。いくつConnectinonを保持できるか。ここの値が低いと沢山のconnectionをはろうとしたときに落ちてしまいます。

確認の結果、十分な値が設定されていた。

そもそも、この値が十分でないと Too Many Connection Exception みたいのが出るはず。

AWS Batch Job Definition で Ulimits を設定する

この辺から全くわからず、先輩エンジニアの助けを借りました。 Ulimits でファイル操作のためのディスクリプタ上限を管理しているそうです。なぜファイルディスクリプタなのかというと、 Unix システムはディスクファイルだけではなくて TCP のソケットもファイルとして取り扱う そうで、DBへの接続数が増えるとこの上限に引っかかるそうです。

AWS::Batch::JobDefinition Ulimit - AWS CloudFormation

この辺を見ながら設定して上限を上げました。

しかし、変化なし。敗れる。

根本的な原因

問題その1 TCP ソケットが枯渇していた

はい、ここも全くわからず、弊社先輩エンジニアにより発見に至りました。 アプリケーション側で使用しているEC2インスタンス内では DB への接続のためにエフェメラルポートが割り当てられますが、それが使用後 TIME-WAIT となりしばらく残っているそうです。

そしてこれが残っているとどうなるか?残っているポートは再利用されずにどんどん新規にポートが開かれます。このエフェメラルポートの数にも上限があり、結果ポートが枯渇するのです。

これはDBへの高負荷をさばくチューニングとしては結構一般的なことだそうで、、知識不足で不甲斐ない。

問題その2 高速化を進めた結果の高負荷

こちらは、異なる調査タスク間である処理を同時に実行すると必ず落ちることから気づきました。 ファイル読み込みや、データの紐付け処理を非同期で実行しているのですが、それがあまりにも高速なため短時間で大量のデータアクセスを行うことになっていました。もちろんデータアクセスが増えるのを見越してまとめて更新するようになっていたのですが、それを上回ってしまいました。

この短時間での大量アクセスにより、問題1でも書いた エフェメラルポート の枯渇が置きていた。ということです。

負荷テストでは起きなかったのはなぜか?

もちろん我々も負荷テストは行いました。これの不思議なところは、負荷テストでは発生しなかったことです。疑問に思ったのですが、AWS Batch のコンピューティング環境が関係しています。

AWS Batch はJOBが動くために必要なコンピューティングリソース(EC2インスタンス)を都度確保して、そのインスタンス上でDocker Container として動きます。(設定で必要な分を常駐させることもできます) なので確保したEC2 インスタンスの性能が十分であれば、同一インスタンス上でJOB が2つ動くこともあり得るということです。

f:id:Nabesuke_00:20191215224738p:plain

つまり、負荷の高いJOBがたまたま同一インスタンス上で実行されたときに発生するものだった。

たまたま負荷テストでは上記の条件が発生しなかったため発生しなかっただけでした。奥が深い。

Bugfix

アプリケーション側はDBへの接続を最小限にするようにチューニングを行いました。 TCP エフェメラルポート の枯渇に対してですが、カーネルパラメータの変更が必要なため以下の方法を取りました。

起動テンプレートを使って AWS Batch でカーネルパラメータを変更する

普通のEC2インスタンスと違って AWS Batch は調査タスクの負荷によってスケールアップするので、通常の手順では設定できません。 AWS Batch ではコンピューティングリソースの設定で 起動テンプレートを指定できます。 AWS Batch のJOB を実行するために確保したEC2インスタンスを起動するときに、設定した起動テンプレートを参照してくれるというものです。

起動テンプレートのサポート - AWS Batch

そして、同様に AWS Batch でパラメーターをチューニングしている方がいました。

Dockerホストのパフォーマンスを引き出すTCPカーネルパラメータチューニング · tehepero note(・ω<) 2.0

実を言うと弊社ではまだ設定に成功していません(常駐させているコンピューティングリソースに潜って直接設定してしまいました)が、引き続き設定を調整しているところです。 今後設定に成功したら更新します。

解決に1週間近くかかった

原因のようなものを調べては トライ&エラーを繰り返しつづけて気づけば一週間近くが費やされていました。その間エラーの原因についてあれこれと考えたのですが、自分はアプリケーション側には強いんですがインフラは全くダメダメでした。せいぜいスケールアップしたりConnectionを疑って見る程度。 Ulimitsやエフェメラルポートの枯渇については全く思いつきませんでした。 自身の知識不足を補うために勉強するのはもちろんですが、エンジニア同士で知識を共有し合うのがとても大事だなと思いました。古いつながりやチームの先輩エンジニアに助けられました。

一人でできないことも、皆でやれば解決できる。チーム開発の醍醐味を味わえたのは幸いでした。もちろん不具合を出さないようにする、不具合をすぐ直せるようにするというのは大前提です。

この記事は後ほど対応内容だけをまとめて qiita にも載せます。

エンジニアの勤務体制を社員主導で変えた時の変化

はじめに

これは転職一ヶ月にして私がエンジニアの勤務体制を変えようとして、実際に試験運用まで持っていった時に何を考えて実行したかという話です。もう1年前になります。 弊社はトップダウンで物事を決めるのではなく、我々エンジニア同士で話し合って決めて物事を決めていける環境があります。

今回は勤務体制を変えるために考え、実際にエンジニア同士で話し合った過程をまとめました。

目指すところ

時間に縛られない働き方 をすることにより、プライベートと仕事の双方の質を上げたい。

というと聞こえがいいですが、不毛な時間調整を無くしたかったというのもあります。 時間ベースで働いてると「今日は仕事早く終わったけど勤務時間まだ残ってるからぼーっとしてよう」とか、「電車遅延して激しい混雑だが遅刻するから我慢していく」などが往々にして発生します。 時間に縛られてなければ仕事が終わったら帰る、電車が混雑してればカフェで仕事してから出社するということが出来ます。

時間のために何かをしたり我慢するのは、本来の仕事の本質とはかけ離れた労力じゃないでしょうか?

私たちはエンジニアです。 素晴らしい実装をすることや、世の中の役に立つためのものをいかに作るかという方に労力の大半を費やしたい です。

勤務時間という責任

f:id:Nabesuke_00:20190514231438p:plain

とはいえ、なんでも「自由」にしてしまうと働かないこともできてしまうわけです(弊社にはそんな人いませんが)。会社としては今まで「決められた時間」で働いてもらっていたからこそ仕事に対して寛容である部分もあったわけです。 つまり社員は時間に対して責任を取り、会社は労働時間の対価を払っていたからこそ進捗の遅れなどにはある程度寛容であったのではないかということです(個人の見解です)

他にも盲目的に実施すると、他部署からはエンジニアは遅く出社した上に早く帰っちゃうけどちゃんと仕事してるの?という声もあがりかねないわけです。自分が勤務時間通りに働いてるのに、隣でそんなことされてたら腹が立つのは当然だと思います。

では私たちはどうすればいいのでしょう。

時間ではない責任と成果

もちろん私たちはプロ意識があります。時間に縛られずともちゃんとやることはやるし、よりよくすることにも労力を惜しみません。 だから「ちゃんとやってる僕らを信じてほしい」という気持ちもあると思います。 しかし、具体的に示すものが無い人を誰が信じるでしょうか?

成果についての考え方

例えば「プロダクトを良くする」という目標があって、ちゃんとやっていたとしましょう。実際に良くなっていたとします。 でもそれは曖昧で、周りから見たら具体的に何が良くなっているかわかりません。なんとなくに過ぎず、何がどう良くなったの?という言葉にはっきり答えられません。

何も示さず時間を自由にしてくれというのは、上記の事と同義ではないでしょうか。

私たちは声高々と「これだけのことをやりました」と言える成果が必要です。

成果は測定可能である方が良い

f:id:Nabesuke_00:20190514231526p:plain

どれだけ良くなったか、何をやったかを明確に示すために、測定可能な指標を作ろうと考えました。

例えば上記の「プロダクトを良くする」であれば

  • 目標

メンテや新機能開発が困難になってきたサービスのリプレースを段階的に実施する。 1Qに計画立案と項目の30パーセントを消化する。

とすれば

  • 成果

計画立案と30%を品質の良い状態で達成した。

これなら「なに」を「どれだけやった」が明確に示されています。測定可能であり、明確に達成できたかわかる目標です。 私たちはここに気をつけて目標と、測定可能な指標を作ることにしました。

目標と成果

これで目標と成果のための指標が決まりました。私たちは「時間」の代わりにこの「成果」に責任を持って働きます。

ただし、この目標が低すぎたり高すぎたりするとスキルアップしなかったり過剰に働くことになってしまうので良くありません。この辺は長くなってしまうのでまた機会があったら書きたいと思います。

まとめ

時間が自由になったということは自身で働き方や働く時間を決め、自身の裁量によって成果を出していくということです。つまり時間で働いていたときよりも裁量が大きくなったことを意味します。裁量労働というものです。 現在弊社で実施しているものは完全な裁量労働ではなくゆるいルールが存在するのですが、ここにシフトしたお話もまた機会があったら書きたいと思います。 ともあれ、どれだけ働きどれだけの成果(目標はあります)を出すかは私達の裁量次第になったわけです。

時間に縛られないことで、サボることやサービスの質の低下の懸念はもちろんあるでしょう。しかし、今回の勤務体制の変化は日々「良いものを作りたい」と思っている私達にとってはいい方向に作用すると信じています。裁量が大きくなるということは、会社から信頼されていることの証だと思っています。信用に対して手を抜いて返すということはしないし、するメンバーもいないと言い切れるからこそ勤務体制の変更を実現できました。

大きくなった裁量と責任をしっかりと認識して、楽しく働ける環境をこれからも模索していきたいと思います。これで終わりではなく、日々良い方向に向かうように考え続け、永遠のベータ版として運用していきます。