タグ

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

  • ゲームプログラミング研修 - KAYAC Engineers' Blog

    こんにちは。技術部平山です。 たぶん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

    ゲームプログラミング研修 - KAYAC Engineers' Blog
  • エンジニア in ハイパーカジュアル - KAYAC engineers' blog

    こんにちは。技術部平山です。 今回は、ハイパーカジュアルというジャンルにおけるエンジニア、 というテーマで書きます。 勉強会でしゃべった動画がありますので、そちらを見て頂いても良いかと思います。 外に出すということで、普段よりも多少丁寧にしゃべっております。 前置き 平山が作った製品群 これらは2022年あたりから現在にかけて、平山が自分で企画、実装した製品です。 これらのうち、利益を出せた製品は2つあります。 黒字製品 Draw Saber(Android iOS) Mannequin Downhill(Android iOS) の2つで、順に2800万、2100万ダウンロードです。加えて、いい線まで行ったものの、利益を出すに至らなかった製品が一つあります。 赤字だったTitanShoot Titan Shoot(Android iOS) こちらは210万ダウンロードと、うまく行ったもの

    エンジニア in ハイパーカジュアル - KAYAC engineers' blog
  • Ruby 3.3でのアップデートも要チェック!まちのコインでYJITを有効化したはなし - KAYAC engineers' blog

    SREチームの長田です。 今回はRubyのJITコンパイラであるYJITのはなしです。 カヤックが開発・運用している地域通貨サービス「まちのコイン」は、Ruby on Railsを使用しています。 このまちのコインにてYJITを有効化し、その結果どのような影響があったのかを紹介します。 coin.machino.co YJITとは YJITRubyのJITコンパイラです。 Ruby 3.1までは実験的な機能という位置づけでしたが、 Ruby 3.2から実用段階となりました。 Basic Block Versioning (BBV)を採用した遅延コンパイルにより、コード実行の高速化を図っているようです。 YJITそのものの話題については、今回は割愛させていただきます。 まちのコインの状況 まちのコインでは昨年6月末頃に Ruby 3.1.x から Ruby 3.2.x にアップデートを行

    Ruby 3.3でのアップデートも要チェック!まちのコインでYJITを有効化したはなし - KAYAC engineers' blog
  • モバイルクライアントアプリにおける「どんなログを出してるのか?」「どの様に役立てているのか?」事例 - KAYAC engineers' blog

    このエントリは【カヤック】面白法人グループ Advent Calendar 2023の19日目の記事です。 こんにちは。カヤックアキバスタジオの須藤崇浩(@p_chin)と申します。 記事では私のログに対する考えと、実際にどの様なログを出して、どの様に役立ててるかを紹介します。 また、記事内ではUnity製のモバイルゲームでの事例に限定して話をします。(モバイル以外のクライアントアプリにも応用可能だと思いますが) おそらく周りでも同じ様な事をやっていそうですが、開発の参考になれば幸いです。 私のログを出す際の考え方 具体的にどんな場合にログを出して役立てているのか?の例 実際に出しているログファイルについて紹介 エラーリスト ログ出力時の機種 / アプリ特有の状態リスト 全てのログを含めたもの 以前に起動した時のエラーリスト ログ出力時にメモリに載っているリソースリスト ログ出力時の画面

    モバイルクライアントアプリにおける「どんなログを出してるのか?」「どの様に役立てているのか?」事例 - KAYAC engineers' blog
  • 負荷試験とOSSツール選定の話 - KAYAC engineers' blog

    この記事は 面白法人グループ Advent Calendar 2022 の15日目の記事です。 こんにちは、カヤックボンドの松です。 今回は弊社の技術顧問をご担当いただいている、ドレッドノート株式会社の佐々木様よりご寄稿いただいた記事となります! みなさん、はじめまして! 主にパフォーマンスチューニングや検証用のボット開発等を行っているドレッドノート株式会社の佐々木と申します。 この度、カヤックグループの皆様より Advent Calendar 2022 に寄稿する機会を頂戴しましたので、2022年12月時点の方法を元に負荷試験とモダンなOSSツールについて書いてみたいと思います。 負荷試験の重要性 突然ですが、みなさんが関わっている案件で負荷試験を行っていますか? サービス開始前・提供中、どちらであっても負荷のかけ方によって様々な情報を得ることができます。 現状の性能・台数・実装で、ど

    負荷試験とOSSツール選定の話 - KAYAC engineers' blog
  • フロントエンド開発に Babel も Webpack も必要ない ※ - KAYAC engineers' blog

    できらぁ! 面白法人カヤックのエンジニアのごんです。 昨今のフロントエンドといえば、 Todo アプリを作るにも Webpack やら Babel やら必要だと脅され、 始める前にうんざりしてしまうと話題ですが、 実は、最新のブラウザに限って言えば、そんなことはなく、 ECMAScript の新しい構文や JavaScript Modules など、 多くの機能がネイティブの状態でも使えます。 もちろん、古いブラウザのサポートや、通信パフォーマンスのことを考えると、 ビルドツールを使ったほうが良いのは間違いないのですが、 JavaScript の新しい機能に触れてみたり、自分用のツールを作るぶんには十分でしょう。 ソースコードはこちら! そんなわけで、今回はビルドツールなしでウェブアプリを作ってみました。 ECMAScript に関するクイズゲームです。 最新版の Google Chrom

    フロントエンド開発に Babel も Webpack も必要ない ※ - KAYAC engineers' blog
  • Goでのmigrationについて ~ ddl-maker × schemalex ~ - KAYAC engineers' blog

    この記事はカヤックアドベントカレンダー19日目の記事です。 はじめに こんにちは @Konboi です。 皆さん忘年してますか? 私は今のところ順調に忘年できており、今年何をしてたのか大分忘れました。 ちなみに先日行われたカヤック技術部の忘年会の様子です。 肉がきたぞー! pic.twitter.com/w4VIdmMNmO— Masatoshi Kawazoe (@acidlemon) 2016年12月16日 忘年してます pic.twitter.com/T7EW0Z5ZVm— jigya♧kkuma (@jigyakkuma_) 2016年12月16日 ということで表題の通り、今日の記事ではカヤックでのこれからのGoプロジェクトでのmigrationについて紹介しようと思います。 記事であつかう migrationはDB更新を差し 新規テーブルの作成 テーブル/カラム名の変更 テーブ

    Goでのmigrationについて ~ ddl-maker × schemalex ~ - 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
  • AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - KAYAC engineers' blog

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

    AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - KAYAC engineers' blog
  • Redis::Fast の reconnect について - KAYAC engineers' blog

    この記事は tech kayac advent calendar 9日目の記事です。 インフラチームの @tkuchikiです。 最近検証した Redis::Fast の reconnect について紹介します。 Redis::Fast とは Redis::Fast は、弊社 @shogo82148 作の高速な perl の Redis クライアントです。 社内の perl で書かれたアプリケーションは、Redis を使う場合、ほぼこのモジュールを使っています。 なぜ reconnect を考慮しないといけないのか Redis Sentinel や ElastiCache for Redis を使い、フェイルオーバーできる冗長構成を組んだ場合のことを考えます。 Master がダウンした際、自動で Slave を Master に昇格してくれるためダウンタイムが短くて済みます。 この場合、

    Redis::Fast の reconnect について - 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
  • #22 普段からRailsプロジェクトで使っている10個の便利Gem - KAYAC engineers' blog

    この記事は tech.kayac.com Advent Calendar 2014 22日目です。 こんにちは。Rubyを書いている @yumiyon です。 今回は、Railsプロジェクトで「○○がしたい!」と思った際に、自分がよく利用するGemを機能ごとに分けて10個ほどご紹介します。日頃からRailsで開発を行なっている方は既知のものばかりかもしれませんが、Railsを始めたばかりの方や、自分のための備忘録として。 目次 Gemとは 1、画像をアップロードしたい(CarrierWave) 2、管理画面を作成したい(ActiveAdmin) 3、環境毎に定数を管理したい(rails_config) 4、crontabを管理したい(Whenever) 5、スプレッドシートにアクセス(google_drive) 6、ページャーを実装したい(kaminari) 7、非同期処理を使いたい:ジョ

    #22 普段からRailsプロジェクトで使っている10個の便利Gem - 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
  • Golang 製の Android 向けテストアプリ配信ツール「alphawing」を公開しました - KAYAC engineers' blog

    昨年の Advent Calender ぶりの登場です。@m0t0k1ch1 です。 表題の件につきまして、実は 7/31 に公開された こちらの記事 の実績一覧の一番上に載せていただいてもいたのですが、改めてこちらで報告させていただきたいと思います。 alphawing とは https://github.com/kayac/alphawing TestFlight が 2014/3/21 をもって Android のサポートを終了 してしまったので、それを代替するためのツールとして開発したのが、この alphawing です。簡単に表現すると、「Android 用の TestFlight」です。表題の通り、サーバーサイドは Golang で記述されています。 アプリケーションの詳しい起動方法などについては README をご参照ください。 アプリケーションの概要 アプリケーションにひも

    Golang 製の Android 向けテストアプリ配信ツール「alphawing」を公開しました - KAYAC engineers' blog
  • Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog

    いやー今年もISUCONの予選参加募集がはじまりましたね! 昨年は出題側だったので胃が痛かったですが、今年は参加側ですので大変楽しみにしております。@acidlemonです。 Docker使ってますか? さてみなさん、Docker使ってますか? 使ってる? 使ってない? ぼくは使ってませんでした。えー今どきBlue-Green Deploymentやってないの? Immutable Infrastuctureじゃないの? と言われそうですが、世の中にはいろんなしがらみとかもあってなかなか簡単にエイヤーでコンテナに移行できるわけでもないのは皆さんなんとなく感じているのではないでしょうか。 とはいえ、最近これだけ話題になっているDockerですので、そろそろ使ってみたいなぁ…ということで、まずは開発環境をDockerで上げられるようにしました。 Dockerでコンテナを作るときには2つのアプロ

    Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog
  • SEO対策 | エンジニアでも知っておくべき7つのチェックリスト | tech.kayac.com - KAYAC engineers' blog

    この記事は tech.kayac.com Advent Calendar 2013 23日目の記事です。 こんにちは!最近rubyを書かせていただいております@yumiyonです。 技術の話が続きましたので、今日は変わってSEO(Search Engine Optimization)の話をしたいと思います。 創ったサービスは、なるべくそのサービスに関連するクラスタの方々に知って使ってほしい . . . ! と思うのは世の常です。 というわけで、わたしが普段Webサービスを創るときにチェックしている「最低限」気にするべきSEOのチェックリストをご紹介いたします。(2013年12月現在時点での内部施策) 目次 検索エンジン向けのXMLサイトマップを作成する パンくずリストを作成する 狙いたいキーワードに沿った適切なページタイトルを設定する 1ページ1テーマを徹底する サイトの表示速度は最大限に

    SEO対策 | エンジニアでも知っておくべき7つのチェックリスト | tech.kayac.com - KAYAC engineers' blog
  • vagrant-configspecを使ってプロビジョニングする - KAYAC engineers' blog

    @nobu_ohtaです。 teck.kayac.com Advent Calender 2013 19日目のエントリです。 今回、advent calendarを口実にvagrant-configspecをリリースしました。 インストールは vagrant plugin install vagrant-configspec です。 コード自体は https://github.com/ankoromochi/vagrant-configspec で公開しています。 動機 configspecを触ってみたかった。 mizzyさんのブログで紹介されているように、immutable infrastructureという文脈で出てきた、冪等性や依存関係をあまり気にしない感じのconfiguration management tool。 同じくmizzyさんが作者のサーバの状態のテストを行うserve

    vagrant-configspecを使ってプロビジョニングする - KAYAC engineers' blog
  • #11 MySQL Master HA を AWS で動作させる場合のフェイルオーバー支援ツール MHA::AWS のご紹介 - KAYAC engineers' blog

    こんにちは、@fujiwara です。 2013年を振り返ると、春の新卒研修での社内ISUCON、秋のISUCON予選と選でずっとISUCONをやっていたような気がしていまして、さてそれ以外になにか……そういえばインフラ回りの仕事もしていましたね。 カヤックのサーバインフラ全体としては、Amazon Web Service(AWS) への移行が進んだ1年でした。いままで自社サーバでやっていたソーシャルゲームや、比較的アクセスが多いとある自社サービス(これは後ほど事例公開されるかも知れません) を、AWS上で構築したり移行したり、という仕事が多かったです。 AWSでサービスを構築する場合、MySQL については RDS を利用する EC2 インスタンス上に MySQL サーバを稼働させる というどちらかの手段を取ることになります。 RDSはフェイルオーバーやバックアップを自動でやってくれま

    #11 MySQL Master HA を AWS で動作させる場合のフェイルオーバー支援ツール MHA::AWS のご紹介 - KAYAC engineers' blog
  • #5 「今年お世話になったgem その2」 tech.kayac.com Advent Calendar 2013 - KAYAC engineers' blog

    こんにちは、@hilotter です。 このエントリーはtech.kayac.com Advent Calendar 2013の5日目のエントリーです。 昨日の「#4 今年お世話になったgemその1」にもありましたが、弊社クライアントワーク事業部ではバックエンドにRailsを用いる案件が多くあります。 日のエントリーでは昨日に続きまして、今年1年間クライアントワークプロジェクトでお世話になったgem残り5選の紹介とそれらの簡単なtipsをご紹介したいと思います! 今回ご紹介するgem settingslogic : 定数を一元管理できます omniauth : 外部サービス認証を手軽に組み込めます resque : ジョブキュー処理を手軽に実現できます tire : 全文検索エンジンelasticsearchにrubyからアクセスできるようになります active_admin : サクッ

    #5 「今年お世話になったgem その2」 tech.kayac.com Advent Calendar 2013 - KAYAC engineers' blog
  • #4 今年お世話になったgemその1 KAYAC Advent Calendar 2013 - KAYAC engineers' blog

    こんにちは、@Konboi です! このエントリーはtech.kayac.com Advent Calendar 2013の4日目のエントリーです。 今日のエントリーでは今年1年間、クライアントワークのプロジェクトでお世話になったgem10選の紹介とそれらの簡単なtipsを、 自分と明日担当の@hilotterの2人で2回に分けて紹介したいと思います! ( カヤックはPerlの会社として知られていますが、クライアントワーク事業部ではRailsを使用したプロジェクトも数多くあります!) それでは、早速いってみましょう! carrierwave まず1つ目に紹介するのは、ファイルアップローダの決定版 carrierwaveです。 carrierwaveは下記のように設定をしておけば画像のアップロード時に s,m,l のサイズをまとめて生成してくれます! 呼び出す側では、 .url.(:s),

    #4 今年お世話になったgemその1 KAYAC Advent Calendar 2013 - KAYAC engineers' blog