hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

本棚を整理している

日頃選ぶ本のセンスが良いので、何冊か出してみたらスルスルと売れていっている。
本棚のスペースをあけることが目標だけど、1回読んだだけの本を捨てるのはしのびない、と思って出品してみている。
同僚に聞いたら、安い封筒を常備しておく、発送だけのために出かけずにスーパーに行くついでに発送する、など教えてもらえた。普段Amazonで買い物してると、買った翌日には届く暮らしをしているので、早く届いたほうがうれしいだろうと、すぐに発送してあげたくなってしまう。

はてなマンガチームの魅力、それはコマンド1つで手元環境を起動できるお膳立て

はてなマンガチームは人数が多いチームで、関わる人のロールも多い。
手元の開発環境はDockerを使って構築しているのだけど、それを起動するメンバーは(エンジニア or デザイナ) × (社員 or アルバイト) のかけあわせで、いろんな立場の人がいる。もうすぐインターンも始まる。
そこで大切にしているのは、手元環境をいつでも正しく安定して起動すること。

docker compose いつbuildするのか問題

Renovateなどを使ってライブラリをどんどん上げている状況で、うっかり古い開発用のイメージを動かしてしまうと、ライブラリが古くて手元で正しく動かず、エラーが出たりする。
エラーが起きたらとりあえずdocker compose buildしてみてください、といって案内することもできるけど、イメージの問題なのか、その上のアプリケーションの実装の不備なのか切り分けが面倒になったりする。
また、常に最新のイメージだけを使えば良いわけでもなくて、開発中のこちらのブランチで使いたいライブラリはちょっと古い、といったこともありえるので、手でイメージを管理する気にすることが多い。

手元環境のエラーを観察するソリューションとして、過去にはこういうグッズを作ったりしていたけど、そもそも起動に失敗していたらエラーの送信までたどり着けないこともある。
ちなみに、今はこういうミドルウェアは使ってなくて、Sentryでローカル環境のエラーも送ってしまっていて、なかなか便利。
blog.sushi.money

docker composeのwrapperから正しいイメージをpullする

実行環境をあらわすタグを自動で計算して、そのタグでコンテナリポジトリからpullする仕組みを作っている。
script/docker-composeという名前のスクリプトで、docker composeコマンドのかわりに実行すると以下のようなことを自動的にやってくれる。

  • イメージはAWSのECRに置いているので、まずAWSにログインする
  • 現在チェックアウトされているソースコードから、Perl、Node.jsなどのコンテナごとに、使うイメージのタグを決める
  • ECRからpull、もしくは存在しなければその場でbuildしてECRにpushする
  • イメージの準備が整ったらdocker composeを実行

タグには実行したい環境のファイルの一部をもとにダイジェストを付与していて、Node.jsなら以下のような決め方。Dockerfileのダイジェストの先頭何文字かを取ってくるとイメージのタグに使うダイジェストを決められる。

cat Dockerfile-node | openssl sha1 | awk '{print $NF}' | cut -c1-7

こうして決めたランダムっぽい文字列をタグの末尾に付与する。GigaViewerを開発していたら、GigaBiewer-node-(ここにダイジェスト)みたいな雰囲気。

PerlのイメージにはCPANモジュールも同梱しているので、Dockerfileの内容だけでなく、cpanfile.snapshotの中身もダイジェストに含める。

cat Dockerfile-perl cpanfile.snapshot | openssl sha1 | awk '{print $NF}' | cut -c1-7

こうすることで、実行したいブランチが要求するライブラリが新しければ、それ用のイメージを自動的にpullしてくれるし、新しいライブラリを追加したい人は、その要求を書いてGitHubにpushしておくと、CI上からイメージがビルドされてECRにpushされるようになっている。普通に暮らしていると手元で負荷の高いビルドを待つ必要がなくなり、逆にビルドが始まったら、いつもと違うのでおかしいぞ、と気づいたりできる。
デザイナさんの環境などでよくわからないことが起きていても、とりあえずdockerを立ち上げ直してもらえば、正しいイメージが起動されていることまでは疑わずに済むので、問題の切り分けが楽になる。

いつでも同じコマンドで動くこと

リポジトリをcloneしたら、あとは基本的にscript/docker-compose upを打つだけでいつでも起動し、その後の継続的な手元環境のメンテナンスやビルドし直しなども要らない状態を維持している。
手元環境のセットアップや起動が煩雑になってくると、新メンバーの受け入れ時のサポートコストが高まったり、チームメンバーの多いチームで正しく動かない確率が上がってくると、開発環境の維持に時間を取られるようになってしまう。
エンジニア社員ならがちゃがちゃコマンドを打つのはむしろ喜びの範疇になったりするけど、学生のデザイナーアルバイトさんだと、ターミナルにもあまり馴染みのない段階でチームにジョインされて、そこからgit commitって打ったり、ただでさえ謎の多い世界に飛び込んでもらっていると思うので、なるべく簡単に、気にすることの少なく済むようにしたいと思っている。
エンジニア的には怠惰は大切な価値観で、めんどくさいことがあったときに不満を言うことは良い動きだけど、そこから離れて普通の職場のことをイメージすると、不満を言わずにやるのが美徳みたいになっている可能性もあって、エンジニアはらくらく過ごしているけどデザイナの暮らしはめんどくさいことになっている、ということがありえる。そういうところに気にかけて、エンジニア的世界観でめんどうなことを打破していく、というのもエンジニアの仕事だと思う。

この構成の問題点

Docker Desktopのダッシュボードや、VSCodeのdocker composeのプラグインなどからみると、script/docker-composeが間にはさまっていることは想定されていないので、VSCodeの便利そうなプラグインから立ち上げると、古いイメージが動いてしまったりする。
現在は正しいイメージが自動的に選ばれる方がメリットが大きいと考えているけど、VSCodeやIDEなどの既存のエコシステムに乗っかれるほうがメリットが大きい、という判断もあり得ると思う。
たとえばライブラリをアップデートする日を決めて、それ以外のタイミングではなるべく変更しないようにするとか、そういう形にできれば、定期的なdocker-compose buildのお願いをする運用とセットで、script/docker-composeは廃止できるかもしれない。

カジュアル面談しませんか

きのうもカジュアル面談しませんかって記事を書いていますが、こうして今日も書いてみています。いつネタ切れになるのか…しかしもう何年もこのチームにいるので永久にこの話題を続けられるような気もします。
blog.sushi.money

現在マンガチームでは積極採用中でして、会社説明やチーム説明、使いやすい開発環境の作り方など、カジュアル面談でディスカッションしませんか。
下記Qiita Jobsから「気になる」ボタンを押してもらっても良いですし、採用ページから応募してもらってもよいですし、Twitterの@hitode909にDMいただいてもよいです。
とくに就職活動中ではないけど、なんとなく話を聞いてみたい、くらいでも歓迎です。

jobs.qiita.com
hatenacorp.jp

はてなマンガチームの魅力、それは新しいツールをとりあえず使ってみること

最近、SlackのHuddleっていう、チャンネルから離れずに通話できる機能を使っていて、ミーティングないときはとりあえずジョインするようにしている。
同じく予定のない間はジョインしているメンバーがいるので、いろいろと声をかけながら調査したり、その場で確認をとりながら作業を進めたりできている。

今日話したことは以下のような話題。以下のいずれの話題についても、今日話す予定になかったけど、その場でちょこちょこと直せたり、調査が進んだりした。

  • 週末いいことありましたか、みたいな雑談
    • 同僚が使ってるイヤホンの音量ボタンをリズムよく連打するとクラッシュする、という良い情報を教えてもらえた
  • 今日発生した不具合の原因が、以前からのキャッシュの出し分けロジックに関連していそうという話
  • キャッシュの出し分け方針をディレクターに確認しよう、といってissueを入れて方針決めを進めた
  • データベースのパーティションを切るだけで古いパーティションを捨てていない、というやりとりを見かけたことから、データベースの監視設定がうまくいってないことに気づいて、その場で設定した
  • 他チームのメンバーがやってきて、Scrapboxのプロジェクトの使い分けをどうするか話した

新しいツールを使ってみるカルチャー

SlackのHuddleを一生使い続けるつもりもあまりなくて、どんどん新しいものが出たら試してみる、というカルチャーになっている。
思い返すと、通話に使うツールはSlack Call、Discord、Google Meet、Zoom、などなどいろいろと使っていて、以前はポリコムも使っていたり、オフィスにいた頃はJamboardというハイテクホワイトボードを使ってみたりと、どんどん変わってきている。
コミュニケーションに使うツールだけでなく、インフラ構成管理などもいろいろと試していて、サービスのリリース当初はCloudFormationで管理していたのが、途中でAWS CDKも試してみたけどあまりしっくりこなかったのかチームに定着せず、その後Terraformも使ってみたら学習コスト低く書けることがわかったので、今ではみんなでTerraformを書いてみたりと、試せるならやってみよう、といろいろ試して自分たちに合うものを選んでいる。
以下は練習していたときの日記で、こういうよくわからないところから始めたけど、今はPull Requestを出してTerraform Cloudで確認して実行して、と普通に使えるようになっていて便利な時代になった。
blog.sushi.money


考えがある人に対しては間口を広げる

新しいことを試す、新しいツールを使う、といっても、誰もが勝手に好きなことを使い始めるわけでもなく、エンジニア間で決められるものは提案をエンジニア間でレビューして進めるようにしたり、お金のかかるものは来期使いたいツールありますかって募集して、取りまとめて予算を取ってもらったりしている。
そうして使い始めたツールとしては、Scrapboxは毎日使っている(以下に顔がテカテカのインタビュー記事があります)し、BrowserStackを導入して、手元でVMWareを立ち上げる時間を短縮したりもできた。
せっかく覚えたのだから今のを使い続けようよ、と考える人もいると思うけど、そこで硬直せず、良い効果があるかもしれないので、試せることがあるなら試してみよう、とひとまずお試しができるカルチャーになっているのは、チームの魅力だと思う。
medium.com

カジュアル面談に来ませんか

普段はなんでもない日記を書いているのに、突然こんなことを書き始めたのでびっくりされている方もいらっしゃると思います。これも新しいことを試すカルチャーの一環で、日記でカジュアル面談に来ませんかという記事を書いてみることにしました。
現在マンガチームでは積極採用中でして、会社説明やチーム説明、近況報告や雑談などさせてください。ウェブアプリケーションを作れる方、スマートフォンアプリを作れる方、デザインができる方など募集しています。
下記Qiita Jobsから「気になる」ボタンを押してもらっても良いですし、採用ページから応募してもらってもよいですし、Twitterの@hitode909にDMいただいてもよいです。
とくに就職活動中ではないけど、なんとなく話を聞いてみたい、くらいでも歓迎です。

jobs.qiita.com
hatenacorp.jp

7月31日は妻の誕生日で、上司の誕生日でもある。昨年は焼肉食べに行って、ワイングラスを割った苦い思い出がある。
今年は外食できる雰囲気でもないので、家でローストビーフでもやることにして、ケーキは買って帰った。
だんだんケーキが暮らしに侵入してきていて、一乗寺のケーキ屋にたびたび行っている。
誕生日のケーキと言うとホールをイメージしそうだけど、ホールで買うより、店にあるケーキを1個ずつ買って回るほうが大量に食べられることになって、8個買って帰って、夜4個、夜4個食べた。
糖尿病にならないか、それが最近一番心配なこと。

f:id:hitode909:20210801221947j:plain
昼のケーキ
f:id:hitode909:20210801222003j:plain
夜のローストビーフ
f:id:hitode909:20210801222020j:plain
夜のケーキ

エアコンの上にスマートスピーカーを置く

エアコン用のコンセントから分岐してNature Remoとかスマートスピーカーとかの電源を取り、さらには、エアコンの上にスマートスピーカーを置いている。
コンセント分岐グッズの時点で何ワット、という上限があるので、それを超えないような組み合わせにする必要があるのと、地震が来ると物が落ちてきて危険だと思う。
そういうリスクを承知すれば、スマートスピーカーを置く場所を確保する必要がなく、エアコンの上に収納されていて便利。
スマートスピーカーはベッドの枕元に置いてる人が多いと思うけど、枕元はスマホの充電とかごちゃごちゃしがちで、そこからスマートスピーカーを追い出せるのは魅力が大きい。
うちの寝室の6畳用のエアコンのコンセントは普通の100Vのものだったけど、リビング用のでかいエアコンは200V用コンセントで形が違ったので、この技を取れなかった。寝室が広い人にはおすすめできないと思う。

f:id:hitode909:20210801111756j:plain

セロトニン

朝にサウナに行って日光を浴びてると調子が良くなるんです、って話をしたら、セロトニンですねって指摘をされた。たしかに自然とやっていたけどセロトニンを求めて活動していそう。
昔、鴨川をジョギングしてると、上半身裸でごろんと横になってるおじさんがいて、トドみたいでばかみたいだなと思っていたけど、あのおじさんもセロトニンを分泌中だったにちがいない。