タグ

ブックマーク / techblog.kayac.com (24)

  • AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC Engineers' Blog

    SREチームの藤原です。Tech Kayac Advent Calendar Migration Track 19日目の記事です。いよいよ年も押し詰まってきましたね…! AWS Lambda、使ってますか?最近はサーバーレスという文脈で取り上げられることも多い Lambda ですが、カヤックではそこまでサーバーレスにこだわることはせず、主にイベントドリブンな処理に適切なユースケースに使用しています。 Lambda のリリース当初に用意されていたランタイムは Node.js のみでした。カヤックで最近使うことが多い言語である Go, Ruby のランタイムがサポートされたのが比較的最近だったということもあり、Node.js の Lambda function が比較的多く存在している状況でした。 Node.js EoL (End of Life) ところで、技術基盤チームのリポジトリで「La

    AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC Engineers' Blog
  • ゲーム内お知らせをHugo+Netlify CMS+CircleCIで作りました - KAYAC Engineers' Blog

    鎌倉は寒いです。みなさんはいかがですか。ソーシャルゲーム事業部のゲーム技研チームの谷脇です。 この記事はTech KAYAC Advent Calendar 2019 Migration Trackの10日目の記事です。9日目はデーモン管理をdaemontoolsからsystemdに移行させるでした。 ゲーム内お知らせとは みなさんは、スマートフォンのゲームをされますか。ええ、そこのあなたはよくされる。しかし、そちらの方はあんまりされない。なるほどなるほど。 では分かる人にはおさらいとして、あまりピンとこない方にはそんなことがあるのか〜となってもらうために説明させていただきます。 我々カヤックでゲームを運営している人々が「お知らせ」を指した場合、ゲーム内のある機能を示しています。他のゲームではニュースなどとも呼ばれています。 カヤックで作っているゲーム「ぼくらの甲子園!ポケット」(以下ぼく

    ゲーム内お知らせをHugo+Netlify CMS+CircleCIで作りました - KAYAC Engineers' Blog
    a2ikm
    a2ikm 2019/12/10
  • 【Unity】カヤックのゲームを支えるビルドシステムについて - KAYAC engineers' blog

    今回はUnityを使用したiOS/Androidビルド方法についての簡単な解説と、社内で動いているビルドシステムついて紹介したいと思います。 こんにちは、ソーシャルゲーム事業部所属エンジニアのぴーちんです!!宜しくお願いしますヾ(@⌒ー⌒@)ノ この記事はカヤックUnityアドベントカレンダー2016の24日目の記事になります。 カヤックのゲームを支えるビルドシステムについて カヤックのゲームを支えるビルドシステムについて platform毎の基的なビルド方法について iOS ビルドの準備 Xcodeでのビルド アプリ配布に使う配布用証明書 コード署名に使う開発用証明書 Android ビルドの準備 AndroidSDK アプリへ署名する為の証明書 社内で使われてるビルドシステムについて githubのpull−requestにコメントしてビルドする機能 githubのpull−requ

    【Unity】カヤックのゲームを支えるビルドシステムについて - KAYAC engineers' blog
  • 【Unity】Protocol Buffers と JSON のパフォーマンス速度を比較した話 - KAYAC engineers' blog

    はじめに はめまして、カヤックのゲーム技研の Unity エンジニアのアフィフです。 カヤックで運用しているゲームタイトルでは、主に JSON フォーマットでデータを管理していましたが、最近ではゲームのデータ量がどんどん増えていく傾向にあり、データの読み込みがボトルネックになりつつあります。 JSON のデシリアライズは結構遅いので、もっと良いデータフォーマットがないかと探したところ、Protocol Buffers というデータフォーマットを見つけました。 今回は、プロジェクトに導入する前にパーフォマンスを検証した結果について書きます。 Protocol Buffersとは Protocol Buffers は Google により開発されているバイナリベースのデータフォーマットです。JSON 形式はテキストベースのデータフォーマットなので、オーバヘッドがあります。 例えば、この JSO

    【Unity】Protocol Buffers と JSON のパフォーマンス速度を比較した話 - KAYAC engineers' blog
  • Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog

    Lobi事業部 サービス基盤チームの長田です。 最近プロジェクト内で使用する開発環境にDockerを利用するようになったので、その紹介をします。 Dockerにしたってどういうこと? 公開済みのWebサービスに変更を加えて動作確認をする場合、番環境でそれを行うわけにはいきません。 ほとんどの場合はローカルマシンでWebサービスの全体または一部のコピーを動かして動作確認を行うことでしょう。 その後ステージング環境などの他の開発メンバーも触ることができる環境で動作確認やQAを行い、 問題がなければ晴れて番環境に反映、という流れが一般的かと思います。 この「ローカルマシンでWebサービスのコピーを動かす」部分にDockerを利用している、ということです。 Dockerにしてどうなった? Before 開発環境構築に1〜2日かかっていた After 開発環境構築がランチに行っている間に終わるよ

    Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog
    a2ikm
    a2ikm 2017/10/28
    携わるサービスが変われば使用するミドルウェアのバージョンも変わるので、こういう足回りの整備は必要だなと思う
  • DynamoDB + Lambda + SSM でテストサーバーをポコポコつくる仕組み - KAYAC engineers' blog

    はじめまして。カヤック技術部の杉山です。 主にクライアントワークでサービスを開発しています。 今回は、クライアントワークで運用している、テストサイトの仕組みに関して書きます。 「テストサイト」の概要 クライアントワークでは、日々たくさんの案件を開発しています。 それぞれの案件では、多くの場合、Webサイトもしくは、WebAPIを公開するためのサーバーが必要になります。 実際の公開時には、案件ごとに専用のクラウドコンピューティングサービスを契約し、セットアップすることになりますが、 利用して良いサービスの確認が必要であったり、サービスの契約まで時間がかかったりするため、すぐには決まらない場合があります。そのため、開発時や検証時には、カヤック側でテストサイトを用意し、確認やプレビューを行っています。 さらに以下のような要望にも対応する必要があります。 出来るだけ時間をかけず開発環境を用意したい

    DynamoDB + Lambda + SSM でテストサーバーをポコポコつくる仕組み - KAYAC engineers' blog
    a2ikm
    a2ikm 2017/03/23
  • ソーシャルゲームのカスタマーサポートを支える行動ログとredash - KAYAC engineers' blog

    この記事はTech KAYAC Advent Calendar 2016の21日目の記事です。 こんにちは、ソーシャルゲーム事業部のぼくらの甲子園!ポケットのサーバサイド開発・運用を担当しておりますマコピーことid:mackee_wです。 ↑のヘッダ画像の人物はワタクシ、という噂があります。みなさま答えはあっていましたでしょうか。 ぼくらの甲子園!ポケットとは 2014年9月にリリースされた共闘スポーツRPGのスマートフォン向けゲーム 現在3年目でございます!!! 甲子園をモチーフにしてプレイヤーとプレイヤーが協力して別のチーム(CPUではない)と対戦して甲子園の頂点を目指す チーム(高校)の部員がプレイヤー9人揃わなければ試合が始まらない縛りとかも特徴です そんな感じで運営しておりますので興味を持たれましたらこちらからダウンロードのほどよろしくお願いしますm( )m。 ちなみにこの記事は

    ソーシャルゲームのカスタマーサポートを支える行動ログとredash - KAYAC engineers' blog
    a2ikm
    a2ikm 2016/12/21
  • RedashとRundeckで安全・安心なサービス運用 - KAYAC engineers' blog

    Lobiチームの長田です。 今回はLobiチームで使用しているRedashとRundeckというツールについて紹介します。 Redash http://redash.io/ Redashとは Redashはデータベースにクエリを発行するためのダッシュボードです。 複数種類のデータベースに対応しており、それらに対して クエリ発行 クエリ結果を保存 クエリ結果を可視化 することができます。 その場でクエリ発行する他に、間隔を指定して定期実行することもできます。 ブラウザからクエリを定義して、 グラフとして表示したり。 何に使ってるの? LobiではアクセスログをAmazon Redshiftに取り込み、解析を行っています。 定常的に観察するべき項目については専用の解析処理と結果を保存する仕組みを用意しているのですが、 単発で数字が必要になる場合がたびたび発生します。 このような場合に毎回Red

    RedashとRundeckで安全・安心なサービス運用 - KAYAC engineers' blog
  • 分散環境でユニークなidを発番するGo製プロダクト「katsubushi」のご紹介 - KAYAC engineers' blog

    Lobiチームの長田です。 今回はkatsubushiというアプリケーションを紹介します。 https://github.com/kayac/go-katsubushi katsubushiはid発番を行うアプリケーションです。 水平分割されたデータベースに対してユニークなidを発番するために作られました。 なお、記事中の「データベース」はMySQLを指します。 katsubushiの特徴 Snowflakeと同様のアルゴリズムでid発番 SnowflakeはTwitter社がかつて公開していたid発番アプリケーションです。 https://github.com/twitter/snowflake/tree/master 既にメンテナンスされておらず、masterブランチにはその旨が書かれたREADMEしか残されていません。 タグが切られているので、ソースコード等はそちらで確認できます。

    分散環境でユニークなidを発番するGo製プロダクト「katsubushi」のご紹介 - KAYAC engineers' blog
  • 世界の何処かで MySQL(InnoDB)の REPEATABLE READ に嵌る人を1人でも減らすために - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2015 8日目担当の @m0t0k1ch1 です。 今年は MySQL さんにいろいろ泣かされた1年でした。特に、あの夏、幾夜をともにした実行計画のゆらぎは一生忘れな(ry さて。。。今回は、そんな中でも誰もが一度は嵌るであろう(?)MySQL(InnoDB)の REPEATABLE READ の嵌りどころについて自分なりにまとめてみようと思います。 この記事が目指すこと MySQL の各トランザクション分離レベルの嵌りどころについては、現状でも種々のブログ記事などでまとめられており、そんなに真新しい話ではないと思います。が、過去の自分のように、嵌ったことがない人間からすると、 話としてはなんとなく理解できる が、抽象的でいまいち身につかない というのが現実でした。嵌りどころに実際に嵌った今読み返してみると、「あーーー、、、そ

    世界の何処かで MySQL(InnoDB)の REPEATABLE READ に嵌る人を1人でも減らすために - KAYAC engineers' blog
  • 今年4月からメンターになってやったこと - KAYAC engineers' blog

    はじめに ※ この記事は tech kayac advent calendar 1日目の記事になります 技術ネタを期待していたみなさん1日目からこんなネタですいません。 @Konboiです ここでのメンターは 同じプロジェクトに配属された新卒氏のスキル向上と会社/チームに馴染めるようにサポートする ぐらいのイメージです 告知 12/6 (日) にクックパッドさんをお借りして 師弟登壇2015 というイベントが開催されます。 新卒研修でどのような事をやったのか 新卒研修の内容にはどのような意図があったのか 新卒側からどうだったか などなど を話す予定です。 もう一般枠の抽選は終わっておりますが学生枠の方はまだ、枠があるようなので是非参加してみて下さい! 今日の記事では、当日話しきれないであろう 新卒研修以前 新卒研修以降 に会社としてというよりはメンターになった自分がどういう風に約8ヶ月指導

    今年4月からメンターになってやったこと - KAYAC engineers' blog
    a2ikm
    a2ikm 2015/12/02
  • #20 Amazon CloudSearchで検索サジェスト機能を作った話 - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 20日目を担当する@ken39argです。 近況報告 お久しぶりです。 前回ブログを書いたのが、2012年のアドベントカレンダーでしたので、2年ぶりということになります。 前回のブログの出だしが、 「最近子供が産まれた」 でしたが、 4日前の 12/16の朝に2人目の男の子が産まれ、 日嫁と子供が病院から帰ってました。とてもバタバタしております。 長年、特にFlashLiteの動的生成などを得意分野としてガラケーを始めとするケータイ向けブラウザゲームを作ってきましたが、 昨年末から心機一転 LobiチームにJoinして、主にLobi REC SDKのサーバーサイドの開発を担当しています。 今年も様々な人やサービスの助けを借りてオートスケールする動画変換サーバーやニコニコ動画へのアップロード、 プレイ動画を見るためのL

    #20 Amazon CloudSearchで検索サジェスト機能を作った話 - KAYAC engineers' blog
    a2ikm
    a2ikm 2014/12/21
    すごい。あれをネットワーク越しにいいレスポンスで返すの、作れるんだ…
  • #17 うわさのdatabase.ymlをどうしているか カヤックCW編 - KAYAC engineers' blog

    こんばんは。クライアントワーク(受託開発)チームのnobu_ohtaです。 この記事は tech.kayac.com Advent Calendar 2014 17日目です。 この記事では、弊社クライアントワーク(受託開発)チームで production 環境で Railsdatabase.yml と secrets.yml をどう運用しているかを紹介したいと思います。 この話題最近ちょくちょく見かけますが、@mirakuiさんがやっているPodcastの Admins Bar #3: Fluentd, Rails, ActiveRecord でも取り上げられています。 なぜ機密情報をハードコードしないほうがいいか Rails 4.1からsecrets.ymlやdatabase.ymlで機密情報は直書きせずに環境変数から読む設定ファイルが生成されるようになりました。 アプリのリポジト

    #17 うわさのdatabase.ymlをどうしているか カヤックCW編 - KAYAC engineers' blog
  • #10 Consulと連携するpull型デプロイツール stretcher - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 10日目担当の @fujiwara です。 最近書いている stretcher というデプロイツールの紹介をしたいと思います。 長いので3行で push型デプロイはホスト台数が増減しやすい環境に適さない 各種問題を解決するpull型デプロイツールを書いた Consul と連携するよ 中央ホスト配布(push)型デプロイの問題点 カヤックの自社サービスでは久しく Archer というツールを利用し、中央ホストから各デプロイ対象ホストrsync でファイルを配布する形のデプロイを行っていました。ここではこれを push 型と呼びます。 push型のデプロイは、ホスト台数が頻繁に増減する環境で以下のような問題があります。 新しくホストが起動してきた場合に、中央ホストからデプロイを行ったあとでないと (古い状態で起動してい

    #10 Consulと連携するpull型デプロイツール stretcher - KAYAC engineers' blog
  • 2013年の新卒研修と社内ISUCONやりました - (1) 研修編 - KAYAC engineers' blog

    4月になり、新人が入ってくる季節になりました。技術部新卒研修担当の fujiwara です。 これまで弊社技術部では特に技術部としての研修というものを行っていなかったのですが、今年は何かやりたいねということで人事部に7日間確保してもらい、主に acidlemon と2人で新卒8人に研修をすることになりました。 研修の資料などは GitHub でプライベートリポジトリを作って作業しており、それをまとめたものを GitHub上で kayac/newbie-training として公開しています。 どのような内容にするかは事前に昨年度の新卒を含めたエンジニア陣で(社内勉強会でビールを飲みながら)話し合い、 現場で実務に追われてしまうと身につきにくい基礎的な内容 コードを書ける人は多いけどLinuxサーバの操作は不慣れな人が多いので、そのあたりを底上げする内容 をメインに構成してみました。また、7

    2013年の新卒研修と社内ISUCONやりました - (1) 研修編 - KAYAC engineers' blog
    a2ikm
    a2ikm 2013/04/22
  • #3 「あまりApplication cache(cache manifest)のことを甘く見ない方がいい」 Advent Calendar 2012 - KAYAC Engineers' Blog

    最近色々あってAndroidと心を通わせられるようになってきたago(@kyo_ago)です。 このエントリは tech.kayac.com Advent Calendar 2012 3日目の記事です。 Application cache(cache manifest)とは WHATWGやW3で議論されているHTML5 Offline Web Applicationの仕様の一部です。 細かい仕様等に関しては最後に参考URLをつけたのでそちらをご覧ください。 ここでは色々誤解の多いApplication cacheの使い方をご紹介したいと思います。 使い方 .appcacheの拡張子に対してtext/cache-manifestのMIMEタイプを設定してください。 .appcacheファイルは以下の形式で作成してください。 CACHE MANIFEST: #更新用ID(日付+連番等) キャッ

    #3 「あまりApplication cache(cache manifest)のことを甘く見ない方がいい」 Advent Calendar 2012 - KAYAC Engineers' Blog
  • jQueryのCSSセレクタAPIを高速に扱う方法 - KAYAC Engineers' Blog

    最近Androidとの抗争が激化しているago(@kyo_ago)です。 jQueryはCSSセレクタを多用する特徴がありますが、jQuery内では実行ブラウザやCSSセレクタの記述によって呼び出されるブラウザAPIが変わり、それによって実行速度にも影響が出ます。 この記事では「セレクタAPIとはなにか」、「CSSセレクタの記述によって呼び出されるセレクタAPIの種類」、「高速なセレクタAPIを使用するための方法」、「高速なセレクタAPIが使われるかどうか確認する方法」などを紹介したいと思います。 (※この記事はJavaScript Advent Calendar 2011 (フレームワークコース) : ATNDの1日目の記事です) セレクタAPIとはなにか セレクタAPIとは「#hoge .huga」のようなCSSセレクタから、DOM上に存在する要素を取得するためのAPIです。 jQue

    jQueryのCSSセレクタAPIを高速に扱う方法 - KAYAC Engineers' Blog
  • カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC Engineers' Blog

    入社4年目にもなってtech.kayac初登場のせいです。 ブログ書けプレッシャーにとうとう屈する時がきました。 これで夢にkyo_agoが出てうなされなくてすみます。(彼はtech.kayacの尻たたき担当でした) 先々月「ぼくらの甲子園!熱闘編」というゲームをモバゲー内にてリリースしました。 これは去年リリースした「ぼくらの甲子園!」の続編です。 モバゲーユーザの方、是非遊んでみてください。 今回はこの「ぼくらの甲子園!熱闘編」がどういうインフラ構成になってるか紹介したいと思います。 注) 題名に「カヤック流」とはつけましたが、カヤックでは多様性を善としている風潮があり、 ゲームによってインフラの構成が違うどころか、利用しているプログラミング言語すら違います。 なので全てのゲームがこのような構成になってるわけではありません。 前提 今回のインフラ構成を決めるに至って考慮した点は「ラクに

    カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC Engineers' Blog
  • 安全なバッチ処理の作り方 - KAYAC Engineers' Blog

    このまえ登り坂の途中でロードバイクのタイヤが破裂しました。ながたです。 今回はバッチ処理について書いてみようと思います。 バッチ処理? Webサービスの処理開始条件は、大まかに次の2つに分けることができます。 ユーザーのアクションに起因するもの ユーザーのアクションに起因しないもの このうち後者の処理をバッチ処理が担当することになります。 バッチ処理の担当分はさらに、 特定の条件(時間やサービスの状態)で実行するもの 手動で実行するもの の2つに分けられます。 今回はこの「手動で実行するもの」について書きたいと思います。 バッチを手動実行するのはどんなとき? バッチ処理を手動で実行するのは、十中八九イレギュラーな状況が発生したときです。 ルーチンワークや実行の条件が決まっているものは何らかの方法で自動化できるはずです。 そしてイレギュラーな状況のほとんどは不具合が発生したとき。 つまり 重

    安全なバッチ処理の作り方 - KAYAC Engineers' Blog
    a2ikm
    a2ikm 2011/10/05
    デフォルトdry-runと確認ダイアログは超重要。screen上で実行するのも重要
  • モテるJS系女子力を磨くための4つの心得 - KAYAC Engineers' Blog

    1. あえてECMAScript3.0以前の実行環境を使う あえてECMAScript3.0の実行環境を使うようにしましょう。そしてATNDで好みの男がいたらLT参加を告知し、わざとらしく発表準備段階でコンソールを出していじってみましょう。そして「あ~ん! この実行環境当にマジでチョームカつくんですけどぉぉお~!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「ECMAScriptとか詳しくなくてぇ~! ずっとコレ使ってるんですけどぉ~! Object.keysが使えないんですぅ~! ぷんぷくり~ん(怒)」と言いましょう。だいたいの男は新しい実行環境を持ちたがる習性があるので、ECMAScript5の実行環境を使っているはずです。 そこで男が「新しい実行環境にしないの?」と言ってくるはず(Object.prototypeの拡張を勧める男はその時点でガン無視OK)。

    モテるJS系女子力を磨くための4つの心得 - KAYAC Engineers' Blog