サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブラックフライデー
techblog.kayac.com
SRE チームの市川恭佑です。 今回はコンテナに関連するDevOpsツールを作った話です。ecresolve と書いて「イーシーリゾルブ」と読みます*1。 github.com ecresolve は、ざっくり言うとコンテナイメージのタグが上書きされる前提で、複数タグを指定すると一番先頭で見つかったものを出力するツールです。 基本的な使い方としては、たとえば dog と cat のタグのみが存在する ECR リポジトリ animal があるとき、以下のコマンドを実行すると標準出力に dog が出力されます*2。 ecresolve monkey bird dog human cat --repository-name=animal --format=tag-only # dog なお、本記事の大前提として、もちろん本番環境において、特にお客様のデータを取り扱うようなコンポーネントについては
お久しぶりです。SRE の市川恭佑です。 今回は Go で CLI ツールを作成する際の小ネタを紹介します。 そもそも CLI パーサの選定 Go でコマンドを解析する手法は多岐に渡ります。そもそも標準 flag パッケージだけで実装することも可能ですし、spf13/cobra や urfave/cli をフラグパーサに採用することも多いかと思います。 好きなものを使っていただくのが一番ですが、今回の話題で取り上げる alecthomas/kong は、サブコマンドのサポートのみならず簡単な制約チェックも提供されているのが魅力的です。個人的には、不正なフラグが与えられたときに適切なエラーメッセージを返すことの面倒臭さを考えると、ここら辺もパーサ側にお願いしたいなって気持ちになることが多いです。 ちなみに kong は、alecthomas/kingpin と同じ作者によるツールで、みなさん
SREチームの長田です。 皆さんは操作するAWSアカウントを取り違えたことはありますか? 私はあります。 カヤックのSREは複数のプロダクトを担当することも多く、 ひとつのプロダクトでも環境(本番、ステージング、開発、etc.)ごとにAWSアカウントを分ける場合があり、 扱わなければならないAWSアカウントが多くなる傾向にあります *1。 今回はうっかり別のアカウントのリソースを削除してしまったーといったオペレーションミスを減らすために個人的に行っている、 「気をつける」以外の対策を紹介します。 間違いに気づくための対策 対象のアカウントが操作の対象として正しいかどうかは、結局は操作している本人にしか分かりません *2。 そのため、「アカウント取り違え自体をなくす」のではなく、 「アカウントを取り違えていることに気づきやすくする」ための対策をしています。 AWSコンソール用の対策 AWSコ
こんにちは! 技術部の谷脇です。 去る10/5にYAPC::Hakodate 2024が開催されました。いかがでしたか? yapcjapan.org 以前に告知したように今回のYAPCもコードゴルフコンテストPerlbatrossを開催しました。 techblog.kayac.com このエントリでは結果発表と、事前解答チームの川添(@acidlemon)より社内最短解の紹介と解説をお届けします。 Perlbatrossは現在コードの投稿や検証はできるものの、ランキングに載らないモードになっております。あと1週間程度はこのようにしておきますので、やりそびれた方や、ちょっと試してみたいなという方は是非コードゴルフに挑戦してみてください。 ここで宣伝 JavaScript版コードゴルフコンテスト JS体操はまだまだやっております! hubspot.kayac.com こちらも是非ご参加ください
技術部の長田です。 YAPC::Hakodate まで1週間を切りましたね。 今回は当日登壇するカヤックメンバーの紹介と、当日実施予定のイベントについてご案内です。 前夜祭: 「AWS Lambda FunctionURLで実現するスケーラブルで低コストなWebサービス構築」 by fujiwara 前夜祭ではSREチームの藤原が登壇します! トーク概要より: AWS Lambda FunctionURLを活用し、従来の開発モデルで作られたWebアプリケーションを最小限の変更でサーバーレス化する手法を紹介します。 カヤックが運用するeスポーツ大会支援サービスTonamelでは、Goで実装されたマイクロサービスをECSからLambdaへ移行し、急激な負荷増加への対応とコスト削減を実現しました。 今回のYAPC::Hakodateスポンサー連動企画Perlbatrossでは、Perlで実装した
SREチームの長田です。 SREsとしての業務がメインではあるのですが、実はSREチームの人事リソース管理を担当していたりします。 今回はそんな立場から「SRE活動用のリソース」について紹介してみようと思います。 SREなのに「SRE活動用」リソース? カヤックのSREは、担当プロダクトチームのメンバーとして動く、いわゆるEmbedded SREです。 社内の予算計画の話になってしまうのですが、プロダクトを持つ事業部がSREメンバーのリソース配分を期ごとに確保する形式となっています。 例えばあるメンバーのリソース(100%)のうち、50%分をTonamel(ゲームコミュニティ事業部)に、 30%分をまちのコイン(ちいき資本主義事業部)に割り振った場合、 各割合分のリソースを各プロダクトが属する事業部が負担する形です *1。 Embedded SREの活動とは別に、プロダクトとは直接関係のな
SREチームの長田です。 今回は、カヤックのメンバーが業務で使うために開発・公開しているOSSなプロダクトをまとめて紹介しようという企画です。 KAYAC organization以下にあるものだけでなく、在籍中のメンバーが作ったものもひっくるめて、実際に業務で使用しているものを中心に 紹介しています。 以下の3つのカテゴリに分けて記載しています。 各カテゴリ内はアルファベット順です。 ツール編 人間が手動で実行するもの アプリケーション編 どこかに常駐して、イベントを受け取ると動作するもの ライブラリ編 ツールやアプリケーションから参照されるもの 集めてみたらそこそこの量になったので、本記事では詳細な説明は省いています。 GitHubリポジトリのURLや関連記事のリンクを併記していますので、より詳しく知りたい場合はそちらを参照ください。 (...) 内はそのプロダクトで使用している主なプ
こんにちは!面白プロデュース事業部のおばらです。 『JS体操』第3問 「Zalgo Text の生成」、今回もたくさんの方が挑戦してくださいました。ありがとうございます!本記事はその解説記事の第1弾。挑戦してくださったみなさまの回答、JS体操 QA チームが事前に検証・想定していた回答を一挙にご紹介します。 もし第3問まだ挑戦できていなかった!というひとは以下よりぜひ。 hubspot.kayac.com 今回の第3問では事前にヒント記事を4件書いてみました。ぜひ併せてご覧ください。 techblog.kayac.com techblog.kayac.com techblog.kayac.com techblog.kayac.com 目次 本戦上位3名の回答 🥇 114文字 by halwhite さん 🥈 117文字 by ほーく さん 🥉 119文字 by すぎゃーん さん 社内
SREチームの藤原です。 今回は CEL(Common Expression Language) を使って、AWSのIAMポリシーを検索するツールを作ったので紹介します。 github.com 3行でまとめ CEL (Common Expression Language)の式を指定してAWS IAMポリシーを検索するツールをOSSとして作りました。GetAccountAuthorizationDetails APIで取得したIAMポリシーをCELで評価して、マッチするものを出力します 例えば「lambda:GetFunctionがあるがlambda:ListTagsがないポリシーを探す」などができます AWSからたびたびやってくる、IAMポリシーに関するお知らせに対応するのに便利です 突然の「Action Required」 ある日、AWSからこんなメールが届きました。 Lambda Ge
技術部の小池です。 2024年7月19日に 北欧、暮らしの道具店 を運営している株式会社クラシコムさんと合同勉強会を開催しました。 クラシコムさんとは SRE と データ基盤 領域の協業によるご縁があり、2019年にも勉強会を開催しています。 クラシコムさんの新オフィス 今回の勉強会は2024年3月に移転したクラシコムさんの新オフィスで開催しました。 白を基調とした開放的で広々とした空間でとても居心地がよかったです。 勉強会の様子 はじめに乾杯をして軽くピザを食べ、穏やかな雰囲気で発表が始まりました。 OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた クラシコム冨田さんの発表です。 speakerdeck.com EPUB のデータ構造や OpenAI API
こんにちは!面白プロデュース事業部のおばらです。 本記事はJS体操第3問「Zalgo Text の生成」の問題のヒントにもなるかもしれないシリーズ第2弾。 第1弾は 「Zalgo Text のできるまで」でした。 今回は「コードポイント」、そして「コードポイント」と似ているけれどちょっと違う概念の「コードユニット」についてざっくりおさらいしてみます。 techblog.kayac.com hubspot.kayac.com 目次 「Unicode」とは 「コードポイント」とは 「文字」を「コードポイント」に変換する 「コードポイント」を「文字」に変換する 「コードユニット」とは 「UTF-8」「UTF-16」「UTF-32」 「コードユニット」とは 「文字」を「コードユニット」に変換する 「コードユニット」を「文字」に変換する 「コードポイント」と「コードユニット」の違い 文字数とは? ま
こんにちは。技術部平山です。 たぶん15年ぶりくらいに研修の類の講師をやったので、そのことについて書きます。 概要 2D用(github)、 3D用(github) の2つのUnityプロジェクトをテンプレートとして用意して、 そこに「コードだけで」ゲームを作る研修をしました。 どちらも、Hierarchyに何かを足すことは禁止、 足して良いアセットはC#ファイルのみで、 そのC#ファイル内ではUnityEngineの機能を使用禁止、 というレギュレーションです。 いずれも、IMachineなるインターフェイスが存在し、 これを通してゲームを作ります。 例えば2D用のIMachineの主要部分はこんな感じです。 public interface IMachine { public int Width { get; } // スクリーン横解像度 public int Height { get
こんにちは!面白プロデュース事業部のおばらです。 今回は、先日スタートしたJS体操第3問のテーマでもある「Zalgo Text(ザルゴ・テキスト)」の作り方を JavaScript のサンプルコードと併せて簡単にご紹介します。 hubspot.kayac.com 目次 Zalgo とは Zalgo Text とは Zalgo Text を作ってみる 「結合文字」 「ダイアクリティカルマーク」 「Unicode エスケープシーケンス」と「コードポイント」 「A」という文字に「ダイアクリティカルマーク」を加えてみる 「ダイアクリティカルマーク」の数を増やしてみる 「基底文字」も増やしてみる まとめ Zalgo とは まず、Zalgo ってなんでしょう? Zalgo(ザルゴ)とは、Flash アニメータ Dave Kally によって生み出された架空の生物。インターネット上の人々を狂気に陥れ破滅
こんにちは! カヤック面白プロデュース事業部のおばらです。 普段は受託案件のデザイン・フロントエンド開発などを担当しています。 さて、『JS体操』第2問 いかがでしたか? 今回初めての方々 第1問に引き続きの方々 複数のアプローチで何通りも回答してくださった方々 普段業務で JavaScript をバリバリ書いているであろう方々 JavaScript を学んでいる学生の方々 などたくさんの方々が挑戦してくださいました。 とても嬉しいです。ありがとうございます! 『JS体操』とは? 『JS体操』とはカヤックが主催する JavaScript のコードゴルフ大会です。 もともとは社内の勉強会として始めた施策です。 その詳細は以下のブログ記事を御覧ください! techblog.kayac.com 第2問の詳細はこちら https://hubspot.kayac.com/js-taiso-002 も
SREチームの長田です。 今回はssmwrapという拙作CLIツールのはなしです。 ssmwrapとは ssmwrapは、AWS Systems Manager Parameter Store(以下SSM Params)から値を取得し、 環境変数またはファイルに出力した上でコマンドを実行するツールです。 secret類をSSM Paramsに保存している場合、アプリケーション実行時にSSM Paramsから必要な値を取得することになります。 AWSのサービスにアクセスするという操作は、それなりに手間がかかるものですが、 ssmwrapを使えば環境変数とファイルというより簡便な入出力インターフェイスを通してSSM Paramsの値を参照できます。 実装が簡潔になるだけでなく、アプリケーションからのAWS APIへの依存を排除することにもなります。 # SSM Paramsにこんな値が保存され
SREチームの池田(@mashiike)です。SRE連載の5月号になります。 AWSのコストについては、多くの方がすごく気にしていると思います。 カヤックでもAWSのコストの変動に関しては敏感に気にしています。 そんな方々の心のお供になる機能が、 AWSコスト異常検知(AWS Cost Anomaly Detection) です。 今回は、このコスト異常検知にまつわるトイル削減の取り組みを紹介します。 背景 AWSコスト異常検知は、AWS マネジメントコンソールの中では『Billing and Cost Management』配下にある機能になります。 この機能を使うことでAWSで発生したコストに関して、通常とは異なるコストの発生を検知することができます。 コスト異常検知自体については、CureApp テックブログ様のZennの記事がわかりやすくまとまっているので、そちらを参照いただければ
こんにちは。技術部平山です。 今回は、ハイパーカジュアルというジャンルにおけるエンジニア、 というテーマで書きます。 勉強会でしゃべった動画がありますので、そちらを見て頂いても良いかと思います。 外に出すということで、普段よりも多少丁寧にしゃべっております。 前置き 平山が作った製品群 これらは2022年あたりから現在にかけて、平山が自分で企画、実装した製品です。 これらのうち、利益を出せた製品は2つあります。 黒字製品 Draw Saber(Android iOS) Mannequin Downhill(Android iOS) の2つで、順に2800万、2100万ダウンロードです。加えて、いい線まで行ったものの、利益を出すに至らなかった製品が一つあります。 赤字だったTitanShoot Titan Shoot(Android iOS) こちらは210万ダウンロードと、うまく行ったもの
こんにちは!カヤック面白プロデュース事業部のおばらです。 普段は受託案件、特にインタラクティブな WebGL や Canvas2D を駆使する案件のデザイン&実装を担当しています。 先日出題したJS体操 第1問目、挑戦してくださったみなさまありがとうございました! 早速ですが最短文字数の回答は 44文字 でした! export default x=>x-(x%=.2)+.2-(.04-x*x)**.5 みごと44文字を達成した方は、 halwhite さん koyama41 さん sugyan さん tkihira さん たつけん さん の5名!(※ Unicode コードポイント順) おめでとうございます!! 最短文字数を狙った正統派の回答以外にも、裏技的な面白アプローチがたくさんありました笑 このアプローチは面白い、ぜひ紹介したい!という回答がいくつかあったので、解説記事は2回に分けて
こんにちは! マラソン完走で書類選考免除!42.195km採用 の企画に携わっている高田です。 カヤックのエンジニアにはランニングを楽しむ人が多く、SREの藤原や、サブスリーの記録を持つ荒賀、最近記録を伸ばしている千葉などが代表的なランナーです。 社内にはランナーたちが集まるSlackチャンネル「#club-running」があり、日々のランニング活動を共有しあっています。 (#club-runningの活動はこちらの記事をご覧ください) そんなエンジニアたちを中心にチームを組んで「国立競技場 Enjoyリレーマラソン」に出場してきたので、その様子をご紹介します。 完走後の記念撮影。国立競技場は広いですね! 国立競技場Enjoyリレーマラソンの様子 今回はカヤックから3チーム、グループ会社の株式会社カヤックボンドから1チームの合計4チームがエントリーしました。 私たちが参加したのは「フルリ
SREチームの橋本です。SRE連載の3月号となります。 Amazon ECSのコスト最適化においてはFargate Spotが有効な手段となりますが、いつ中断されるか分からない性質上、その監視も併せて実施していく必要があります。今回はそのFargate Spotを本番環境で運用しているプロジェクトにおける取り組みを紹介します。 背景 Fargate (Amazon ECS on AWS Fargate) を用いると負荷に合わせた容易なスケーリングが可能になる一方、このときCPU使用率の安全マージンや予測のブレなどにより、リソースがやや過剰になってしまうこともあります。 Fargate Spotの代表的なユースケースと言えばユーザーに露出しない開発環境ではないかと思いますが、このような場合にコストを考えると、タスクの中断をある程度許容しての本番環境でのFargate Spot運用も可能な選択
SREチームの長田です。 今回はRubyのJITコンパイラであるYJITのはなしです。 カヤックが開発・運用している地域通貨サービス「まちのコイン」は、Ruby on Railsを使用しています。 このまちのコインにてYJITを有効化し、その結果どのような影響があったのかを紹介します。 coin.machino.co YJITとは YJITは RubyのJITコンパイラです。 Ruby 3.1までは実験的な機能という位置づけでしたが、 Ruby 3.2から実用段階となりました。 Basic Block Versioning (BBV)を採用した遅延コンパイルにより、コード実行の高速化を図っているようです。 YJITそのものの話題については、今回は割愛させていただきます。 まちのコインの状況 まちのコインでは昨年6月末頃に Ruby 3.1.x から Ruby 3.2.x にアップデートを行
SREチームの藤原です。 今回は Amazon CloudFront Functions をテストするためのOSSとして、cfft というものを書いたので紹介します。 github.com 3行でまとめ CloudFront Functionsのテストは手元ではできなくて面倒です CloudFront Functionsをテストする cfft というOSSを書きました KeyValueStoreの操作を含め、便利な使い方がいろいろありますのでどうぞご利用下さい CloudFront Functionsをテストするのが面倒という問題 CloudFront Functions (以下CFF) は、AWSが提供するCDNであるAmazon CloudFrontのエッジノード上でリクエストやレスポンスの操作が行える、JavaScriptの実行環境です。典型的なユースケースとしては、キャッシュキーの
こんにちは、技術部の谷脇です。 去る2月10日に行われたYAPC::Hiroshima2024ですが、みなさまはいかがだったでしょうか。私は参加して大満足であり、運営の方々に大感謝させていただきます。 さて、カヤックではゴールドスポンサーと椅子スポンサーをしていたというのは開催直前に出した記事で述べさせていただきました。 techblog.kayac.com この記事では伏せられていた、椅子スポンサーのPerlbatrossですが、この記事ではPerlbatrossの内容紹介と問題解説をしようと思います。 Perlbatrossとは YAPC::Hiroshima2024の開催期間中にコードゴルフの問題を出していました。以下は椅子スポンサーで貼らせていただいた問題です。 Q1. Split of Graphemeの問題 さて、これだけではなく、QRコードにアクセスすると実際に問題を解けるサ
カヤック技術部の谷脇です。 さて、2024年2月10日に広島でYAPC::Hiroshima2024が開催されます。カヤックはゴールドスポンサーと椅子スポンサーを行っています。 yapcjapan.org さてそんなカヤックですが、スポンサーノベルティとして今回のために作ったものがあるのでここで紹介させていただきます。 ステッカー御朱印帳 参加者の皆様にお配りするのはこちらです。 ステッカー御朱印帳です。ノートですが、広島にちなんだ柄にしております。また、御朱印帳なので右綴じです。 中身はこんな感じです。 この例のように、他のノベルティで配られるであろうステッカーなどを貼ってスクラップブック風にしてみたり、トークのメモにしてみてください。ちなみにこのステッカーは私が個人的に今回に合わせて作ったものです。こんな感じで会場では自分のシールを配っている人がいることがあります。またシールを持ってな
SREチームの長田です。 SRE関連の記事としては今年最初の記事になります。 今年も定期的にSREチームメンバーによる記事を投稿していく予定です。 よろしくお願いします。 さて、今回はGitHub Actionsのはなしです。 TL;DR デプロイを実行するGitHub Actionsの実行状況を デプロイ対象環境ごとに別々のSlackチャンネルに通知する場合の実装例として、 「slackapi/slack-github-actionで通知をつくりこむ」 「Actions Workflowを分ける」 「Actions Workflow実行の入り口を分ける」 の3つを紹介します。 背景 カヤックでは「まちのコイン」という地域通貨サービスを開発・運用しています。 coin.machino.co まちのコインの開発・運用チームの、特にサーバーサイドに関しては、 アプリケーションやインフラ構成の変
こんにちは。技術部平山です。 今回は、2024年1月15日から2日間、北海道の下川町にて行った「ゲーム開発体験」というイベントのことと、 それに関連して「プログラミングの教育」のことについて書きます。 イベントのこと ゲーム開発体験ポスター 小学1年生から中学2年生までの20人以上の人に参加してもらえました。 本当は高校生にも参加してもらえたら良かったのですが、 高校生はすでに冬休みが終わってしまっていたそうです。もっと早く開催できると良かったかもしれません。 参加してくださった方の満足度は、それぞれ聞いてみないとわかりませんが、 2日目も参加してくださった方が半分くらいはいましたし、 Scratchのアカウントを作って自分の作品を持ち帰ってくれた人もいました。 たぶん、結構楽しんでもらえたのではないかと思います。 なお、この文章を書いているのは平山ですが、実際にやったのは かなりの部分が
はじめに アドベントカレンダー 20日目の記事ですが、思った以上に時間かかってしまったのでクリスマス日を過ぎた27日の投稿になってしまいます。 こんにちは!うんこリーダーのikkakukukuです。この記事を開いていただいたということは取締役のうんこポーズに興味をもってくださったんですね。幸いです。そういえば、うんこリーダーis何?意味分からないですね……後ほど説明させてください!(お時間を少し貸していただけましたら幸いです 🙏🏽 ) 過去1〜2年間のVR業界のニュースを振り返れば、色々ありました。超高級MetaQuestProのリリース、MetaQuest3の噂(現時点でリリスされました)、TikTokの親会社ByteDanceがPicoをリリースして参戦、未だにミステリアスなApple Vision Proなどなど。その話とこれからのVRに期待感益々で「VRの何かをFTDで作りまし
この記事はTech KAYAC Advent Calendar 2023の15日目の記事です。 こんにちは、カヤックボンドのサーバーエンジニアの松本です。 今年はカヤックグループ合同のアドベントカレンダーということで、各グループから色んな方が参戦しています。 今回は開発サーバーでの開発体験を高めるためのアラートについて紹介したいと思っています。 なお、今回の記事はGoogle CloudのCloud Loggingにエラーログを送信しているプロジェクトを対象にしています。(50GB/月、保持期間30日まで無料なのでガンガン活用すると良いと思います) はじめに Google CloudではError Reportingという自動的にモニタリング/アラートを行えるサービスがあります。 Error Reportingではエラー箇所ごとに発生回数を集計してくれたり、影響ユーザー数も集計してくれたり
このエントリは【カヤック】面白法人グループ Advent Calendar 2023 の25日目の記事です。 本記事は昨日公開の 「JS体操」のすゝめ 〜その①〜 の解説記事です! まだご覧になっていない方は先にこちらをご覧くださいね!! techblog.kayac.com 1. はじめに 2. 問題(再掲) 3. 考え方 4. ロジックを解く 4.1. 改行が必要なときに改行だけをしてみる 4.2. 固定長の半角スペースを入れてみる 4.3. 半角スペースの数を可変にしてみる 4.4. map() ではなく replace() にしてみる 4.5. 値の文字列中に {、}、[、]、,、: がある場合を考慮する 4.5.1. 文字列内の記号は無視する 4.5.2. 文字列を表す正規表現 4.6. エスケープされたダブルクオーテーションの対応 4.7. エスケープされたバックスラッシュの対
次のページ
このページを最初にブックマークしてみませんか?
『KAYAC Engineers' Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く