WFHポエム

緊急事態宣言から1ヶ月以上経ち、リモートワークベースの会社も増えてきたことと思います。
それに伴い各社様々な施策を打ち出してきていますね。

最近リモートワーク推奨意見をちらほら目にしていて思うところがあったので記事にしてみます。

※前提

以下すべて コロナが収束した後の話 として書いております。



現状 > コロナ収束後

現状は状況的にWFHせざるを得ない状況下にあると言えます。
ただし、仮に 完全にコロナが収束したとしても 今までとは大きく変化した世界となっていることでしょう。
それはもちろん働く環境も例外ではありません。
週5で出社する会社なんて珍しくなっているかも知れませんね。


リモートワークどうなの?

ところでリモートワークですが、おそらく 意外と普通に仕事できてるじゃん という感想の方が多い印象です。
それはやはりリモートワークにおけるツールやサービスが充実していることに尽きるでしょう。
仕事上のコミュニケーションに関しては大きな不便はないと考えています。

とはいえ、やはりWFHにおけるメリット/デメリットはあると思っています。
よく言われるところとしては以下のような感じでしょうか。

  • メリット
    • 通勤する必要がない
    • 誰もいないので集中できる
    • 服を気にしなくて良い/お化粧しなくても良い
    • 荷物を受け取ったり病院に行きやすかったり用事を済ませやすい
  • デメリット
    • なんだかんだコミュニケーションロスがある
    • ビデオ会議でブツブツ切れる
    • 微妙なラグで発言しづらい
    • 他の人の話が聞こえないので何やっているかわからない
    • おしゃれなオフィスが好きだったのに…
    • ランチの選択肢が少ない
    • 一人で寂しい気持ちになる
    • 仕事する部屋がなくて集中できない
    • 子供/奥さんがちょいちょい話しかけてきて集中できない
    • そもそも幼児がいるので世話で仕事にならない
    • みんなで飲みに行けない
    • みんなで飲みに行けない
    • みんなで飲みに行けない

やはり一番のメリットは通勤する必要がないことですね。
ただし次のトピックにもなるのですが、必ずしもメリットが全員に関してメリットとは言えない場合もあります。

リモートワークにおける不平等

リモートワークするということは社員が 各々の環境で仕事する ということです。
その時点で不平等が発生しています。

例えば、ある社員は「一人なので仕事に集中しやすい」という意見でしたが、家族持ちの社員は「子供に邪魔されて仕事に集中しづらい 1 」、また一人であっても「普段リラックスする場所なので逆に家だと集中できない」といった意見もあるかも知れません。

また金銭的にも不平等が発生します。 よくある話としては通信費もそうですし、普段家に誰もいないのでWFHだと電気代がかなり高くなる人 2 など出てきそうです。 もちろん手当支給などでまかなう方法もありますがメンバーごとに異なる環境にどの様に対応するか?は今後の課題になるでしょう。 3

特に大きな会社であればあるほどこの不平等感に不満を持つメンバーが多く出てきそうな気がしています。

そういう意味でオフィスというのはある程度平等に各メンバーに働ける環境を提供できていたのではないでしょうか? 4


で、どうしたらいいの?

これは超個人的な意見ですが

  • 基本的に出社/リモート作業の選択は社員の自由
  • ただし週1(or 月1)は全員出社する日を決めておく

くらいが理想かなと思います。
どうしたってWFHが合っているかどうかは社員毎に異なりますし、基本的には社員毎に選択させる方式で。
顔を突き合わせて話したいことはやっぱりあるので最低限月1くらい(自分は週1でも)は機会がほしいですね。


余談:シェアオフィスの需要

コロナ収束後も社会全体的に出社機会が減る方向に進むと考えられるので、実はシェアオフィス需要がとても上がるのでは?と想像しています。
固定のオフィス契約ではなく席を縮小したシェアオフィスで契約し、メンバーが集まる日は会議室で会議したり、共有スペースで席を補填したりする形態ですね。
割とあるのではないでしょうか?


余談:弊社YourCastの場合

まず、緊急事態宣言が出る前のかなり早い段階から リモートワーク備品購入補助5万円支給(何にでも利用可能) がありました。

また今月から通勤手当も廃止し、毎月リモート補助金1万円支給 することになっています。
このように、弊社は経営がメンバーのことを考えてめちゃめちゃ迅速に対応してくれるのでとても助かっています! 手当に関してもおそらく状況に応じて改善してくれることでしょう。

エンジニア絶賛募集中ですので、もしご興味のある方は Wantedly or Twitterでご連絡ください〜


まとめ

コロナ収束後、出社するにしてもフルリモートするにしてもまず
「社員自身がパフォーマンスを出せる環境かどうか」
「会社のプロダクト/チームとしてパフォーマンスを出せる環境かどうか」
に尽きると思っています。
会社の事業/グローバル制/文化にもよると思うので、会社によって最適解は異なるでしょう。
その時、どちらにしても 会社がフレキシブルに対応してくれるかどうか に尽きます。
仕事する環境というのは本当に重要です。
一社員として妥協せず会社と議論していきましょう。

では最後に、自分の意見を引用して終わります。


  1. 学校が始まったとしてもお昼過ぎには帰ってきますしね…

  2. 特にこれから夏場を迎えるにあたってかなり金額に違いが出てきそう

  3. ※これは特殊例ですが、某同僚は喫煙しながら仕事ができるようになったので煙草代だけで手当が無くなってしまう、と嘆いていました 😇

  4. 定期代は社員毎に異なりますが、普通に通勤手当として請求になるのでかかるコストとしては平等です

Redis 6.x の Threaded I/O 対応雑感

2020/5/6 追記

  • ベンチマーク結果に mset / sadd / zadd / hset / lpush / lrange 300 を追加しました


Redis 6系がリリースされましたね!
mag.osdn.jp

やはり気になったのは「マルチスレッド対応」という文字。
Redisといえばシングルスレッドでしたが、今回の対応がどういうものか?パフォーマンスにどの程度影響するのか?が気になったので軽く調べてみました。


redis.confの説明文

redis.confTHREADED I/O の頁が追加されています。
要約するとあくまで I/Oアクセスをマルチスレッド化 する対応のようです。 1


スレッド化なし/あり時の実際のプロセスの様子

io-threads=1の時
f:id:toritori0318:20200506025518p:plain

io-threads>1の時
スレッド表示OFF f:id:toritori0318:20200506025523p:plain スレッド表示ON f:id:toritori0318:20200506025601p:plain

きちんとスレッド化されている様子がわかりますね!


ベンチマーク

簡易的なベンチマークを取ってみました。

環境

ロール OS インスタンスタイプ Redisバージョン
Redisサーバ AmazonLinux2 c5.2xlarge(8core) Redis 6.0.1
ベンチマーククライアント AmazonLinux2 c5.2xlarge(8core) Redis 6.0.1

OSチューニングしたところは ulimit / net.core.somaxconn くらいです。

ベンチマークコマンド

スレッド数8、パイプライン16並列でループ実行しました。

# get/set
redis-benchmark -t get,set -n 1000000 --threads 8 -P 16 --dbnum 1 -q -l

# mset
redis-benchmark -t mset -n 1000000 --threads 8 -P 16 --dbnum 1 -q -l

# sadd
redis-benchmark -t sadd -n 1000000 --threads 8 -P 16 --dbnum 1 -q -l

# zadd
redis-benchmark --threads 8 --dbnum 1 -q -l -n 1000000 --threads 8 -P 16 -r 1000000 zadd myzset __rand_int__ member:__rand_int__

# hset
redis-benchmark --threads 8 --dbnum 1 -q -l -n 1000000 --threads 8 -P 16 -r 1000000 hset myhash field:__rand_int__ value:__rand_int__

# lpush
redis-benchmark --threads 8 --dbnum 1 -q -l -n 1000000 --threads 8 -P 16 -r 1000000 lpush mylist __rand_int__

# lrange_300
redis-benchmark -t lrange_300 -n 1000000 --threads 8 -P 16 --dbnum 1 -q -l

サーバ起動コマンド

io-threadsの数値を変えて比較してみました。 2

redis-server --protected-mode no --io-threads <num>

結果

ループで10回程度回したrps平均値です。

Redisサーバスレッド数 get set mset sadd zadd hset lpush lrange_300
1 1,155,995 1,344,768 347,639 1,283,881 259,651 799,513 1,036,402 53,091
2 1,196,952 1,415,721 351,426 1,337,262 261,772 837,762 1,100,286 53,603
4 1,232,383 1,500,202 355,968 1,397,251 267,699 853,392 1,130,196 53,930
6 985,922 1,227,587 193,678 1,277,302 239,738 618,960 1,085,098 27,358

4スレッドくらいまでは順調にパフォーマンス上がっていますが、6スレッドでは逆に性能劣化していますね。。
スレッドの増やし過ぎもよく無さそうです。

redis.confの説明では

By default threading is disabled, we suggest enabling it only in machines that have at least 4 or more cores, leaving at least one spare core.  
Using more than 8 threads is unlikely to help much. 
We also recommend using threaded I/O only if you actually have performance problems, 
with Redis instances being able to use a quite big percentage of CPU time, otherwise there is no point in using this feature.

とありますので、よく考えて設定する必要がありそうです。


まとめ

スレッド化することによりパフォーマンスの向上がみられました。
ただし単純に増やせば良いものでも無さそうなので、実際にスレッドI/Oを利用するときにはきちんと性能評価を行った方が良いでしょう。



  1. つまり計算量過多による挙動は変わりません。試しにスレッドを有効にして大量の keys * 実行後に他オペレーションがブロックされるかどうか確認してみましたが、やはり今まで通りブロックされました。

  2. ちなみに redis.confの io-threads の値を変えて試してみたんですが実際に反映しないような気が…?

通信販売しているラーメン屋を雑に調べてみた

追記


コロナウィルスにより外出自粛せざるを得ない日々が続いておりますね。
そんな中、ラーメン好きの方々はなかなかラーメン屋に行けず日々悶々と過ごしているかと思います。自分もそのうちの一人です。

自宅にいながらも美味しいラーメンを食べたい気持ちが抑えられなかったぼくは よだれを垂らしながらGoogleで通販可能なラーメン屋を検索してみました。
すると意外と多くのお店で通販を行っていることが発覚しました。

そこでこちらの記事ではGoogle検索してHITした中で有名所 or 気になったお店をピックアップしてみました。

注意

こちらの記事はレビュー記事ではありません 1
気になった店舗を紹介しているだけの記事ですのでご了承の上御覧ください。


ラーメン通販ポータル系サイト

全国津々浦々のラーメン屋さんの通販を行っているサイトがありますのでまずはこちらをご確認いただくのが良いかも知れません。
ただし、昨今の事情によりかなり品薄状態のようです。 2

宅麺 www.takumen.com ラーメン通販ポータル系では一番有名なサイトですね。かなり多くのラーメン屋さんが網羅されています。


ラーメン通.com www.mentwo.com こちら存じ上げなかったのですが、こちらも多数のラーメンを取り揃えているようです。
現状は宅麺より在庫もありそうな印象ですね。


RAMEN STOCK

ramenstock.thebase.in ラーメン凪を運営する(株)凪スピリッツさんがプロデュースした新しい形の通販サイト。
コロナ危機から同士であるラーメン屋を助けたい!との思いで立ち上げたとのこと。応援したい! 


RAMEN EX

www.nissin.com 日清食品さん監修のデリバリーサービス。 「一風堂」「すみれ」「ますたに」「無鉄砲」さんのラーメンをいただけるそうです。 現在はまだ配信エリアは限定的ですが拡大していくとのこと 


個別店舗

天下一品 www.tenkaippin.co.jp 言わずと知れた超濃厚こってりラーメン。通販で自宅でも食べられるのは天一好きにはたまりませんね
(※追記 供給不足により現在停止中とのことです…残念。復活を待ちましょう)


一蘭 www.ichiranstore.com 仕切りカウンターで有名な一蘭釜だれとんこつ食べてみたい!


一風堂 ec-ippudo.com 博多とんこつラーメンの名店。 一風堂おみやげラーメン3種セットで様々なとんこつを楽しむのがオツですね


六厘舎 rokurinsha.theshop.jp 魚介つけ麺の王道店。間違いないやつですね!


とみ田 www.tomita-cocoro.jp 松戸つけ麺の有名店ですね。セブンイレブンでも同店のつけ麺は食べれますが、よりお店に近いラーメンを食べたいのであれば通販で購入しましょう


すごい煮干ラーメン凪 nagi-niboshi.shop-pro.jp 煮干し風味をふんだんに味わえることが出来るお店ですね。
ラーメンだけでなくメンマ角煮セットなども販売しています。


えびそば一幻 www.ebisoba.com えび出汁ラーメンで有名なお店。しお/みそ/しょうゆの3種類から選べます。


七志 www.nanashi-food.com フレンチ出身の料理長が作る新感覚とんこつらーめんとのこと。
こちら存じ上げなかったのですが美味しそう :q


麺屋つくし tsukushi.shop-pro.jp 富山県食べログラーメンランキング1位に選ばれたお店とのことでピックアップしてみました。
メインは味噌ラーメンかな?


無鉄砲 www.muteppou.com らーめん好きの同僚氏に教えていただいたお店(このお店で合ってるかな?)。
超濃厚とんこつ系ですかね


さっぽろ純連 www.junren.co.jp 一番有名(?)なさっぽろ味噌ラーメン。本場の味を堪能したい方は是非。


博多らーめん ShinShin hakatashin.shop15.makeshop.jp 博多ラーメン欲しくなったら是非!


ラーメン龍の家 ramen.tatsunoya.net もつつけ麺が気になりました!


黒亭ラーメン www.kokutei.jp 学生時代、くまもとラーメンにハマってたんですよね。白濁の豚骨スープがたまりません :)


飛騨高山ラーメン 老田屋 www.oidaya.com 老舗の高山ラーメン屋さん。初回限定 飛騨高山らーめんお試しセット1000円がお得ですね!


もっこす

www.moccos.jp 神戸では有名?な中華そば屋さんとのことです。ラーメン画像が食欲をそそりますね


AFURI

shop.afuri.com 柚子塩らーめんが有名なラーメン屋さん。
自宅にいながらお店に近いものが食べられるのは嬉しいですね


第一旭

www.honke-daiichiasahi.com 京都で人気のお店なんでしょうか。2ヶ月待ちとのこと…!


元祖台湾ラーメン味仙

www.misen.ne.jp 名古屋発祥の台湾ラーメンで有名な味仙さんのお取り寄せラーメンです。


みんなのラーメン阿飛流

ahiru.official.ec あっさり醤油系ラーメン。クオリティ高そうなイメージですね。


その他通販

個別店舗ではないですが、気になった通販ラーメンです。

新福菜館

www.takashimaya.co.jp 醤油ダレのコクが絶妙なラーメンと、香り豊かなチャーハンとのセットが最高の新福菜館
高島屋通販だとラーメン/炒飯/餃子セットで売られていてお得感ありますね!


麺屋宗

様々な賞を受賞してきた名店 麺屋宗。
塩ラーメンのみですが、通販も行っているようです。


龍上海

横浜の老舗らしいです。赤湯からみそラーメンというあんまり食べたことのないジャンルなので気になりました


せたが屋

魚介系しょうゆラーメンでしょうか。通販版も評判が良いようです


高砂食品 青森味噌カレーラーメン

味噌×カレー×ミルク×ラーメン!どんな味がするのか気になります!


天理スタミナラーメン

ニラと白菜が最高にマッチしそうですね。じゅるり。


富山ブラック

しょうゆ真っ黒ラーメンで有名ですね。


前沢牛ラーメン

自分の地元でもある奥州の前沢牛
高級肉である前沢牛を使ったラーメンとのことで期待大…!(食べたこと無い)


利尻昆布ラーメン

こちら今までと違いインスタント麺なのですが、マツコ・デラックスが認めたラーメンとのことで気になりましたw


丸山製麺

seimen.stores.jp 本来は業務用製麺屋さんですが、オンライン販売も開始されているようです。
家二郎/さぬきうどんをご賞味したい方は是非!


まとめ

これらを見てまわるだけでもよだれが出てきますね :q
いくつか購入しましたがまだ届いてない…届くの楽しみ!
もし他にもおすすめ店舗があればぜひ教えて下さい〜!


  1. なぜならまだどれも届いてないからですw

  2. 宅麺、さっきみたら全店舗在庫0でした…

3年間病気無しエンジニアがどのような生活を送ってきたか振り返ってみる

過去の日記を振り返ってみたところ、どうやら 丸々3年以上会社を病欠していない ことに気づきました。
自分は元々体は丈夫な方ではなかったはずなのですが、何故ここ最近病気にかからないのか自分でも原因がわかっていなかったので色々分析してみました。
※もちろん素人の書く記事なので、以後の記事は医学的な根拠はありません。ご参考まで


前提: 病気レベルについて

ちなみに普段かかる病気の大変さですが、ざっくり以下のようなレベルに分けられます。 1

病気レベル 説明
少しだけ症状気になるけど生活に支障がない 微妙に喉がイガイガする/食欲不振/下痢気味/軽い頭痛
がんばれば出席/出社できるけど辛い 咳が出る/体がだるい/微熱
出かけるの無理。立つのも辛い 熱が39度以上/耐えられない頭痛/動けないほどの腹痛/インフルエンザ

ここでの レベル軽 で症状を抑えるのが最重要かと思います。


日常的に行っていること

うがい・手洗い

※おそらく9割くらいはこれの効果と思っています 😇

子供が大きくなってきてからというもの、本当に1日も欠かさず帰宅後にすぐうがい・手洗いを行っています。
また会社で病気がちの人がいる場合、業務中にもこまめにうがい・手洗いするようにしています。

栄養

会社での昼食後、以下を毎日ローテーションで摂取するようにしています。効果の程は不明ですが、栄養バランスと食物繊維には気をつけるようにしています。


ラーメン(特に家系)

ラーメン大好きなのでほぼ毎週食べています。
特に家系は究極の風邪薬!! togetter.com

ただ、塩分が多いので食べすぎには注意しましょう!!!


とにかく 少しでも症状が出たらすぐに薬を飲む ことは意識しています。
大した事無さそうだなーと思っていても症状が重くなることはよくあることです。
症状が軽いうちに治すのが重要です。また、安い薬ではなく それなりに高級な薬を買う ようにしましょう!効きが全然違います!
※ちなみに病院でも良いのですが、症状が軽すぎるとあまり真剣に見てくれないので症状が軽いうちはヘルスケアで十分かと思います

風邪薬

以前に第一三共さんと仕事をしていた好みではないですが、ルルアタックEXを常備しています。
症状に特化しているものもあるので(咳が辛いとか熱があるとか)臨機応変に買い分けましょう。

こちらも第一三共さんですね。「喉にはペラック」というくらい有名です。

頭痛

EVEはカバンに常備しています。ちょっとでも頭痛があればすぐ服用しています。

胃腸不振

胃腸といえば太田胃散!


予防接種

インフルエンザの予防接種も毎年受けるようにしています。
会社から補助が出る場合もありますので所属会社にご確認してみると良いでしょう。


ストレスフリー

「病は気から」とも言いますが、若いときに比べストレスが溜まっていないことに気づきました。 それは環境的なものもありますし、考え方も徐々に良い方向に変えるようにしています。

仕事

お仕事自体も楽しいですし、会社の環境も仲間も最高なのでストレスフリーです!興味があればぜひ!
www.wantedly.com

ポジティブシンキング

元来、めちゃめちゃネガティブ思考だったのですが、ここ数年は意識的にポジティブ思考で考えるようにしています。
こちらの本を読んでだいぶ意識を変えるようになりました↓


家族が病気になったとき

自分には妻と子供2人がいます。病気は自分がかからないように心がけるのも当たり前ですが、小さな子供がいると家族からもらうことも多くなりますよね。
家族が病気になったときでもなるべく回避する工夫をしています。

家では常時マスク

基本ですね。家族が病気の場合は起きているときも寝ているときもマスクをするようにしています。

こまめにうがい手洗い

なにかに触れたとき、いちいちうがい手洗いをするように意識するようにしています。

食事で菌を体に入れないように気をつける

家族が病気していると家の中はありとあらゆるところに菌が蔓延しています。
どこに菌がついているかわからないため、触れるところ全て疑ったほうが良いかもしれません。
そこで、自分は手で物を食べないようにしています。お菓子などは特に気をつけます。

もっと徹底するのであれば、出前する/コンビニ弁当を買う、など、食事を自前で作らずに外に頼るのもありかもしれません。


まとめ

病気しないように普段から気をつけていることを紹介してみました。
要約すると

  • うがい手洗いを毎日行う
  • 病気は軽いうちに治す
  • ストレスを溜めない

です!
特にエンジニアの方は体が資本だと思っています。
なるべく病気せず、普段からパフォーマンスを出せるように心がけましょう。



  1. 大病は除く

2019年振り返りと2020年

2019年

総括

会社が真っ二つになり、所属が変わりました 😇

仕事

総評

兎にも角にも会社が分社化したのはとても大きな話です。
この業界、もはや政治のうねりに逆らえないのは覚悟していましたが…
元々必要な人材が集まっていた会社が分断化されたわけなので、リソースという面では確実に歪なものになりました。
こちらは時間が解決してくれるとは思いますが、まだまだ大変。
ただ双方の会社共にビジョンは明確ですし、自分はポジティブに捉えています。

今年の大きな仕事としては所属変更後のサービス名/ドメイン名変更対応ですね。無停止でほぼ問題なく移行できたのは本当良い仕事をしたと思っています。

ただ、どうしてもリソース不足というところで今年も仕事をこなすことで精一杯でした。
理解はしていましたが、余裕がないと

  • 新しいことが学べない
  • 既存の知見で設計/実装を進めてしまう
  • エンジニアとしての進化が出来ていない
  • 新しいことをしていないのでアウトプットすることが無い
  • アウトプットできないので採用も滞る
  • 人が増えない
  • etc...

といった悪循環になりがちで、2019年はまさしくそんな年だったと思います。
この辺りは2020年にはある程度改善しそうな光は見えています。それはまた後述。

家族

心配事が増えてきました。特に息子…
この時期は割とターニングポイントだと思っているので全力でフォローしていきたいです。
娘は自由奔放でいろんな可能性を感じさせるので伸ばしてあげたいですね。
あと家庭でちょっと大きめ話を投げ込んだりしました。良い方向に進むと良いなぁ

あと最近奥さんがまたかわいくなった気がするのでデートしたい。
※ただお腹のポッコリ具合は本当にやばいのでなんとかして欲しい…


2020年

総括でも書きましたが、2019年は会社として大きな変化がありました。
ただむしろ、今の立場になってやっと 本当の意味でのスタートラインに立てた と思っています。
実際、分社後は今までなかなか進まなかった話がトントン拍子で進んでおりますし、
2020年、またその後もしばらくは(階段を踏み外さなければ)躍進し続けられるでしょう。
業績も右肩上がりの可能性大、かつ会社としてどれだけ業界に貢献していけるか、またメンバーもどれだけモチベーションを上げてサービスに取り組んでいけるか、を考えられるフェーズに来ていると思います。
特にHAROiDから昇格したメンバーは真面目に給料3倍目指してやっていく所存です。

というわけで今年もよろしくお願いいたします!!

Lua(Luajit)のSplit実装ベンチマーク比較

Luaはsplit関数がバンドルされていません。 そのためいくつか実装が存在しています。

今回、実装違いにより色々問題が出たため再検討していたのですが、 その際にどの実装がパフォーマンス良いのか気になったので比較してみました。
(今回存在を知ったのですが特にOpenRestyのコア実装がどのくらい出るのか試してみたかった)


バージョンなど

Docker Image openresty/openresty:1.15.8.1-3-alpine-fat で実行

ベンチマークコード

コード/セットアップ/実行方法はこちら。
https://github.com/toritori0318/Dockerfiles/blob/master/openresty-split-bench/

結果

10000000回ループでMac上で検証しました。処理時間が短いほど速いです。

項目 処理時間(sec)
ngx_re_split 23.3
lua_split_a 32.8
lua_split_b 49.9
lua_split_c 14.5
lua_split_d 8.91
lua_split_e 29.5


考察

  • ngx_re_split はきちんとメンテされていそうなので品質的には一番安心?OpenRestyで相当なパフォーマンスを要求されない場合はこれで良さそう。また、パターン指定はPCREが利用できるので高機能。
  • Lua 実装は速いもののあるが、実装毎に使い方や仕様が違うので注意(パターン指定方法とか、empty stringの扱いとか)

ローカル環境でGitLab CI実行時、GitLab Container Registoryの認証が度々 `Denied Access Forbidden`になってしまうのを回避する

GitLab CIをテストしたい時、ローカル環境にgitlab-runnerをインストールしてそのままテストすることが出来ます。
蛇足ですが、以下のような感じでセットアップします。

# install
brew install gitlab-runner

# ローカル実行
gitlab-runner exec docker test_job --env hoge=fuga

便利!! 1


GitLab Container Registoryを利用する

GitLabはリポジトリ毎にContainerRegistoryを持つことができます。
.gitlab-ci.ymlに以下のような記述を追記すると利用可能です。

image: oreore-gitlab.com:4567/charisma

services:
  - oreore-gitlab.com:4567/my-redis

test_job:
  script:
    - echo '4000man'

ただし、ローカルPCから実行すると何故か oreore-gitlab.com の認証時に denied: access forbidden でたま~に怒られることがあります。 複数リポジトリを利用していると失敗確率が増えるため、Max Retryに到達してしまいそもそも起動せずに終わってしまうことがあります。

原因/回避方法

そもそもの原因としては、dockerの認証に osxkeychain を利用していると認証が不安定になってしまうようです。
こちらを回避するには、.docker/config.json内の対象のauthにuser:passを直接記述してあげる必要があります。

# base64を得る
echo -n 'username:password' | base64

$HOME/.docker/config.json

{
    "auths": {
        ...
        "oreore-gitlab.com:4567": {
            "auth": "<base64文字列>"
        },
        ...
    },
    "credsStore": "osxkeychain"
}

これで確実に認証を通すことが出来ます。


まとめ

GitLab CI+GitLab Container Registoryをローカルで実行できるのは超絶便利ですが、こんなハマりどころもあるのでご注意くださいませ。


  1. オンデマンドで毎回起動ではなくdocker-composeのように実行環境だけ利用するテクニックもあったりしますが、それはまた別の機会に…