タグ

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

  • カレーライスを綺麗に食べる方法 - KAYAC engineers' blog

    はじめに この記事はTech KAYAC Advent Calendar 2019の19日目の記事です。 こんにちは。 技術部の中山といいます。 普段は、ぼくポケチームで、 開発・運用をする上で必要な作業の自動化をしたり、効率化できる部分を改善するという仕事をしています。 要するに仕事の無駄をなくすということをしているのですが、そういう仕事をする中で、 大学3年生のときに学で「カレーを綺麗にべる方法」というのを 研究していたことを思い出したので紹介しようと思います。 仕事の効率化もカレーを綺麗にべるのも「無駄をなくす」という点では同じです。 べ物で遊んでいるように感じる方もいらっしゃるかもしれませんが、 ここで述べる方法は「美味しく綺麗にべる」というのを大事にしています。 決して遊んでいるわけではありません。 実際の写真 まずこの画像をご覧ください。 これは、弊社が手がけるまちの

    カレーライスを綺麗に食べる方法 - KAYAC engineers' blog
  • ホストのプロビジョニングを Chef から mitamae へ移行した - KAYAC engineers' blog

    SRE チームの藤原です。Tech KAYAC Advent Calendar 2019 Upgrade/Migration track 6日目の記事です。 今日は長らく EC2 などのホストのプロビジョニングに利用していた Chef を、mitamae に移行したお話です。 Chef とその管理 Chef といえば、Infrastructure as a Code という概念を広めた先駆者ともいえるソフトウェアです。Ruby DSL でホスト上のファイルやパッケージなどの様々なリソースを宣言的にプロビジョニングできる、界隈では大変おなじみの奴ですね。 カヤックでも自分が入社した2011年から Chef によるプロビジョニングを行ってきて、もう8年になります。 多くのプロジェクトではアプリケーションとは切り離した、その名も "chef" という名前の GitHub リポジトリにコードや設定

    ホストのプロビジョニングを Chef から mitamae へ移行した - KAYAC engineers' blog
  • ISUCON7でチームMSAが優勝しました! - KAYAC engineers' blog

    先日行われたISUCON7。 カヤックエンジニアで構成されたチームとしては「MSA」と「fujiwara組」の2チームが戦出場を果たし、 「MSA」が見事優勝しました! ISUCON7 選ありがとうございました。優勝はチームMSAの皆さんでした!是非ブログ書いていただければと思いますので宜しくお願いします! #isucon pic.twitter.com/JYLGSwKyLz— ISUCON公式 (@isucon_official) 2017年11月25日 ISUCONについては以下を参照ください。 isucon.net tagomoris.hatenablog.com チーム「MSA」のメンバーにコメントをもらいました。 mizuno-keita 「新卒から半年でKAYACに転職してきて2年、少しではありますが、自分の成長を実感することができました。 優勝できたことはもちろんうれしい

    ISUCON7でチームMSAが優勝しました! - 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
  • 複数のデータベースをまとめてSELECTできるツール「mdq」を公開しました - KAYAC engineers' blog

    こんにちは。 2016新卒でLobiのサーバーサイドエンジニアをやっているmorikuniです。 今回は、mdqというGo製のツールを作ったので、その紹介をします。 mdqは複数のデータベースに並列にクエリを投げて、結果をJSONで出力してくれるというものです。 github.com mdqに近いコンセプトのツールとして、弊社の荒賀(@ken39arg)が作ったshard_promptがあります(#6「Shardingマジ怖い」tech.kayac.com Advent Calendar 2012)。 こちらはSQLを解析し、複数データベースにまたがる集約関数を一部サポートしていますが、MySQL専用かつ直列にクエリを投げるというものでした。 mdqでは複数データベースにまたがる集約関数はサポートしませんが、PostgreSQLなどMySQL以外のデータベースへのクエリや、並列処理による速

    複数のデータベースをまとめてSELECTできるツール「mdq」を公開しました - KAYAC engineers' blog
    tknzk
    tknzk 2017/02/13
  • スケーラブル tail -f | grep on AWS - KAYAC engineers' blog

    こんにちは。組長こと @fujiwara (id:sfujiwara) です。 早速ですが皆さん、ログは見ていますか? 当然見ていますよね。tail -f で追いかけるとか大好きですよね。という前提で話を進めましょう。 この記事は Tech KAYAC Advent Calendar 2016 の24日目の記事です。 TL;DR 多種多様なホストから発生するログの末尾を tail -f で追いかけたい fluentd + ローカルファイルで行うのはちょっと面倒 Amazon Kinesis + Lambda を使ってスケーラブルな仕組みを考えてみた kinesis-tailf というツールも作った 既存の仕組みと問題点 techblog.kayac.com 弊社の Lobi とソーシャルゲームでは、この記事で紹介されたような Fluentd を活用したログ集約の仕組みを整備しています。この

    スケーラブル tail -f | grep on AWS - KAYAC engineers' blog
  • ソーシャルゲームのカスタマーサポートを支える行動ログと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
  • 会社員が体を鍛えるための技術 - KAYAC engineers' blog

    こんにちは! Tech KAYAC Advent Calendar 2016 17日目を担当する荒賀(@ken39arg) です。 近況報告 お久しぶりです。 前回ブログを書いたのが、2014年のアドベントカレンダーでしたので、2年ぶりということになります。 前回のブログの出だしが、「2人目の子供が産まれた」でしたが、3人目は産まれておりません。 細かいことは沢山ありますが、家族構成や仕事内容などに大きな変化はありません。そのかわり、この2年の間に肉体がかなり変化いたしました。 具体的には、70kgだった体重が60kgになり、18%程度だった体脂肪率が9%になり、フルマラソンを3時間22分で走れるようになりました。 年明けにはサブスリー(フルマラソン3時間以内)を目指しております。 また、社内の一部でブームとなっている横浜三井ビル垂直ラン(ビルの1階から30階まで階段を駆け上がる)では、僕

    会社員が体を鍛えるための技術 - KAYAC engineers' blog
    tknzk
    tknzk 2016/12/19
    結果的に1日が26時間に増えます。
  • ウェブページをできる限りネイティブアプリっぽく魅せるテクニックまとめ 〜アップルにリジェクトされつづけるなら、ウェブアプリとストアをつくって自前で配信してしまおうという企み〜 - KAYAC engineers' blog

    https://kimizuka.github.io/web-app-store/example/ 北斗市公式キャラクター ずーしーほっきー ©2013 北海道北斗市 を使用させていただいております。 ウェブページをできる限りネイティブアプリっぽくみせて配信するために色々研究しました。 もくじ はじめに ウェブアプリとは 今回制作したもの ネイティブアプリとの比較 ストア以外での配信方法 ホームアイコンの設定方法 フルスクリーンでの表示方法 オフラインでのアクセス プッシュ通知(断念) カメラへのアクセス GPS / 加速度センサ / ジャイロセンサ へのアクセス ランドスケープでの固定(断念) 大技(Safariから開かれたかホーム画面からひらかれたかの判定) 小技(タップした際の黒ずみ除去 / 長押しでメニューを開かない / テキスト選択不可 / スクロール不可) その他、実装の上で頑

    ウェブページをできる限りネイティブアプリっぽく魅せるテクニックまとめ 〜アップルにリジェクトされつづけるなら、ウェブアプリとストアをつくって自前で配信してしまおうという企み〜 - KAYAC engineers' blog
    tknzk
    tknzk 2016/12/13
  • RedashとRundeckで安全・安心なサービス運用 - KAYAC engineers' blog

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

    RedashとRundeckで安全・安心なサービス運用 - KAYAC engineers' blog
    tknzk
    tknzk 2016/11/29
    デプロイの履歴をgcalに残すのいいな
  • 分散環境でユニークな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
  • チャットメッセージの即時反映を支える技術 - KAYAC engineers' blog

    Lobiチームの長田です。 今回はLobiの根幹であるチャットサービスの、Streaming APIについて紹介します。 多くのチャットサービスがそうであるように、 Lobiでも新しいチャットメッセージが画面リロードの必要なく表示されるようになっています。 チャットメッセージをデータストリームとしてクライアントに送信するためのAPIがStreaming APIです。 LobiのチャットサービスはiOS・Android・Webブラウザで利用することができ、 これら全てでStreaming APIを使ったチャット画面の自動更新を実現しています。 即時反映の実装方法としては Polling Long Polling Web Socket など複数の方法が挙げられますが、LobiではHTTPリクエストのLong Pollingをベースにした 独自のフォーマットを使用しています。 仕組み app -

    チャットメッセージの即時反映を支える技術 - KAYAC engineers' blog
  • Lobiのログ集約・解析のはなし - KAYAC engineers' blog

    Lobiチームの長田です。 あらゆるWebサービスがそうであるように、Lobiでも日々大量のログが出力されています。 今回はこのログをどのように集約・解析しているかを紹介します。 TL;DR アクセスログ・アプリログなど、毎秒10000行以上のログが生成されている Fluentdを使用しログを集約 consul serviceを利用した集約サーバーの冗長化 ログ中のイベント検知・集約にはNorikraを使用 アクセスログの各種解析にはAmazon Redshiftを利用 ログの集約 ログ収集エージェント Lobiではログの集約にFluentdを利用しています。 Fluentd | Open Source Data Collector | Unified Logging Layer ログファイルの集約にはfluent-agent-hydraを、Perlアプリケーション内からのログ送信にはFl

    Lobiのログ集約・解析のはなし - KAYAC engineers' blog
  • AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - KAYAC engineers' blog

    新人研修担当の長田です。 今年も新人研修の締めとして社内ISUCONを行いました。 昨年はプログラミング基礎の講師をやったのですが、 今年はその実績を買われて(?)社内ISUCONの出題を担当することになりました。 過去のISUCON準備の様子を傍から見ていた身としては、 準備を始める前から「とにかく大変そうだ・・・」というイメージを持っていました。 問題を作りこむ以上、どうしてもISUCON当日ぎりぎりまでかかってしまうのでしょう。 ぎりぎりになるのはまあ準備する人が頑張ればいいとして、 ぎりぎりになった結果競技自体の進行が危ぶまれるのは避けたい! ということで、いくつか効率化という名の妥協策をとることにしました。 効率化できるところは? 毎回新規に出題するのはしんどい! 社内ISUCONは過去2回実施していますが、 どちらも新規に高速化対象のWebアプリケーションを作成していました。

    AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - KAYAC engineers' blog
  • 社内IRCをSlackに移行した時にやったこと - KAYAC engineers' blog

    藤原です。 カヤック社内では長らく社内のチャットシステムとして、Skype と IRC を併用してきました。Skype には一応全員アカウントを持っているのですが、IRCと比較すると botでの自動化が難しい 過去ログを参照しづらい 自分以外にだれもオンラインになっていないと発言できない (深夜の障害対応などで致命的) という特性のため、エンジニアを中心に好んで IRC を使用していたチームも多く、分断されていた状態でした。 今年は Slack が一気に世間的に広まったこともあり、ここはひとつ全社のチャットシステムを Slack に移行しよう!という気運が盛り上がり、現在自社サービスのすべてと一部のクライアントワークチームが Slack に移行完了しています。 (以前から Skype を使用している部署はまだ移行し切れていないので、全社統一は来年の課題です) このエントリでは、IRC から

    社内IRCをSlackに移行した時にやったこと - KAYAC engineers' blog
  • 旅する勉強会 - tech.kayac meetup #0 を開催します - KAYAC engineers' blog

    (今年初の更新なので)あけましておめでとうございます! acidlemon です。今年も8分の1がおわりましたね! みなさん進捗どうですか? ぼくはダメです。 さて、日はカヤック主催の技術勉強会の開催告知をお届けします。 きたる2月25日(水)、渋谷ヒカリエにてカヤックのエンジニアが最近アツい技術やノウハウについてトークをするtech.kayac meetup #0 を開催します。詳細につきましてはconnpassをご参照ください。 旅する勉強会 tech.kayac meetup #0 告知は以上です。 告知が淡泊すぎてスペースが余ってしまいました。せっかくなので駄文を書きます。 開催の苦悩 開催告知エントリになんでいきなり苦悩を書き始めるのかみたいな感じですが、まぁちょっとダマされたと思ってお時間がありましたら読んでみてください。 カヤックでは昔から毎週金曜日に社内で技術部勉強会を行

    旅する勉強会 - tech.kayac meetup #0 を開催します - KAYAC engineers' blog
    tknzk
    tknzk 2015/02/23
  • #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
  • #21 github-botで捗っている話、もしくはgit-subtree使ってみた - KAYAC engineers' blog

    この記事はtech.kayac.com Advent Calendar 2014 の21日目です。 こんにちは、最近日にちの感覚がなくなっているいっちーです。 アドベントカレンダー駆動で何かつくろうと思ったんですが、そんな時間はなかったので、最近プロジェクトでやってみた取り組みをご紹介します。 背景・目的 僕は今現在Unityを使ったソーシャルゲームの開発に関わっており、 主にサーバサイドのプログラムを担当しています(もちろんPerl)。 Unity側ではサーバとのやりとりをBaalというAPIの定義書にもとづいて行っており、 サーバへのリクエストやレスポンスが形式にあっているかをチェックする機能があります。 例えば「Hogeというエンティティは整数型のFugaというフィールドを持っている」ということをBaalで定義すると以下のようになります。 // Baal定義の例 namespace

    #21 github-botで捗っている話、もしくはgit-subtree使ってみた - KAYAC engineers' blog
  • #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
  • #13 フロントエンド制作に華を! 面白いWebAPI 7選 - KAYAC engineers' blog

    こんにちは。 カヤックに新卒で入社し、フロントエンドエンジニアとして スロット制作を中心とした活動を続けている田島です。 どうぞお手柔らかによろしくお願いします。 さてさて、Webのフロントエンドエンジニアの場合、 何か作りたいアイデアを思いついてから世に公開するまでのスピードが コピーライターに次いで早いです。 また、リッチなコンテンツや大量のコンテンツを扱って何かしようというときには WebAPIをうまく活用すれば、自前でデータベースを作らずとも ササッと作って公開することもできます。 今回は、そうしたフロントエンド制作を豊かにするWebAPIの中から特に 面白いと思うものを7つ選び、実例を交えて紹介していきたいと思います。 1. MediaWiki API http://ja.wikipedia.org/w/api.php Wikipediaの情報を取得できるAPIです。 このAPI

    #13 フロントエンド制作に華を! 面白いWebAPI 7選 - KAYAC engineers' blog