読者です 読者をやめる 読者になる 読者になる

Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

Akatsuki Hackers Labは株式会社アカツキが運営しています。

Rails4.2のコネクションプールの実装を理解する

tl;dr Railsではコネクションプール数を設定していても、1スレッド辺り1コネクションしか持ちません。 発端 アカツキではRails + Unicorn + Nginx + MySQLの構成をAWSで運用しており、c3.4xlargeのインスタンス上で1台辺り64のUnicornワーカープロセスが実行…

急いで覚えるElixir: Enumerable編

ElixirのEnumerable 前回の記事から続いて、今回はElixirで利用する基本的な制御構文について学んでいきます。 Keyword list 多くの関数型プログラム言語では、2要素のtupleによって関連付けられたデータ構造を表現します。 Elixirでは、最初の要素がAtomで…

急いで覚えるElixir: 制御構文編

Elixirの基本制御構文 前回の記事から続いて、今回はElixirで利用する基本的な制御構文について学んでいきます。 if, unless/else 他のプログラミング言語で親しまれているif~elseは、Elixirでは以下のように記述します。

Electronで社内ツール作ってみた

はじめに アカツキにて内定者インターンをしているsachaosです。 この記事ではプロジェクトに配属され、少しの間アシスタントディレクター業を行っていた僕が、 エンジニアの端くれなりに社内ツールを作って業務プロセスの無駄な部分を自動化した話をします。

resize2fsコマンドの先でカーネルは何をしているのか

背景 前回の記事で、resize2fsコマンドがどのように1秒未満での容量拡張を実現しているかを知るために、resize2fsコマンドのソースを調査しました。その結果、メタデータの一つであるGlobal Descriptor Tables(GDT)をカーネル内で更新しているからではないか…

急いで学ぶElixir#3: 演算子編

Basic Operators 前回、Elixirは四則演算があることと、整数の商や余剰を得るためにdivやremがあることを学びました。今回はElixirの基本的な演算子を、Rubyと少し比較しながら学んでいきましょう。 Elixirでは、++や--を配列に対しても使うことが出来ます。

新規事業で Elixir, Phoenix, React を使う

エンジニアリング・アドバイザーの noto です。先月末から新規事業チームのエンジニアリングについてもお手伝いすることになりました。 アカツキでは今年 (2015 年) の夏より、従来のゲーム事業の枠を超えて、教育、ヘルスケア、「働く」などの領域を対象と…

急いで学ぶElixir#02

Elixirの基本型 以下の基本型があります。 - integer : 1, 0x1F - float : 1.0 - boolean : true, false - atom (symbol) : :atom - string : "Elixir" - list : [1, 2, 3] - tuple : {1, 2, 3}

急いで学ぶElixir#01

Motivation クラスメソッドさんがDevelopers.IOにとても良い記事を投稿されていたので、Elixir版も書きたくなりました。

UnityとOculusを始めて3週間で街を走り回るゲームを作った話

はじめに アカツキは5周年を迎え、先日パーティーが開かれました。その時に展示物として披露したUnityとOculus Rift DK2を使ったゲームを作った話をしようと思います。 今回作ったものは隕石を避けながらコインを取って行ってゴールを目指す、レースゲームで…

LITALICO社と合同エンジニア勉強会を開催した話

合同勉強会を開催 6月25日(木)に、株式会社LITALICOさんと合同エンジニア勉強会を、アカツキのオフィスで開催しました!アカツキのエンジニアと合わせて約20名がこの勉強会に参加し、LT対抗戦+ビアバッシュを楽しみました。想定以上に話したがり屋さんが多か…

CloudWatch Logs + fluentdでモダンなアプリ監視をさくっと作ってみた話

背景 アカツキが提供しているサービスはリリース前に必ずテストを行っています。テストでバグが見つかったときにこれを切り分けるため、発生時のログを探すことがあります。「クライアントアプリで明らかに表示がおかしい」とか、そういったバグなら問題ない…

FactoryGirlのログからテストコストを計測してみた

背景 アカツキではサーバーサイドフレームワークとしてRuby on Railsを採用しており、またそのテスト環境としてRspec/FactoryGirlを使用しています。RoR環境下のテスト体制としてはデファクトスタンダードになっているこの組み合わせですが、主にFactoryGirl…

差分を管理してデータ更新を高速化する、seed_fu:expressのご紹介

背景 ゲームサーバーで扱うデータはとにかく多いです。 特にイベントなどをほぼ毎日運用する場合はサービス開始から1年でレコード数が無視できない量になり、それに伴って更新に要する時間が激増してしまいます。 以前執筆した9分43秒のデプロイを19秒にした…

MySQLのINSERTを高速化するChange bufferingをソースコードから理解する

背景 アカツキで提供しているサービスでは、ほぼ全てにおいてAWSのRDS(MySQL5.6, InnoDB)を使用しております。 ソーシャルゲームでは多くのWriteがかかりますが、そのコストが気になったので調べてみました。

resize2fsコマンドはどのようにして1秒未満での容量拡張を実現しているのか

この記事はLinux Advent Calendar 2014 の23日目の記事です。 背景 アカツキではAWS EC2をテストサーバ、ステージングサーバ、本番サーバとして利用しています。先日1周年を迎えた千メモは、リリース時よりも大分デプロイ時に容量を使うようになってきまし…

Are you still reviewing that pull request?

Background

人がコードレビューする時代は終わった

背景 最近GitHubワークフローやコードレビューの文化が普及してきていますが、 コード規約まわりの細かい指摘ってするべきなのか、迷いますよね。 例えばカンマの後にスペースがいるとか、引数が多いときに改行した方が良いとか・・・。 いちいち指摘してた…

RubyKaigi2014 速報(5) – おはよう Rails

Ohayo Rails 高井さん進行 あれあれ?大きなお友だちの声が聞こえないよ? 大きな声でおはようございます なんでマリ見てパロってるの?

AWS ElasticCacheのRedisをDefault設定で使ったときのConnection Leakの解決方法

現在、弊社にて提供しているサービスのほぼ全てにおいてAWS(Amazon Web Service)を利用しており、その中でも頻繁にアクセスが必要なデータについてはElasticCacheのRedis/Memcachedを利用しています。今回は、そのElasticCacheでRedisを利用する場合において…

そのガチャの確率、本当に合ってます?〜RSpecで統計的に確認する話〜

背景 ソーシャルゲームでよく見かける「ガチャ」ですが、この記事ではその重み付き確率の保証方法を紹介します。

Cocos2d-xによる2.5次元表現

Cocos2d-xによる2.5次元表現 背景 「次元」というと理系出身の人は大体ベクトル空間の次元を思い浮かべると思います。 最近はネットで「2.5次元の女の子しか興味ない」というと3DCGの美少女のことを指したりしますよね。 実は形式的に整数でない「次元」を定…

Expressing "2.5D" spaces with Cocos2d-x

Expressing "2.5D" spaces with Cocos2d-x Background These days, the terms of "dimension" is not limited to vector spaces -- in Japanese internet slang, "2.5D girls" refer to girls rendered using 3DCG. As a matter of fact, you can actually f…

第21回 AWS User Group - Japan 東京勉強会 で LT しました

「Startup CTO AWS Battle」というテーマで、CTO ではない自分が戦う要素の無い発表をしてきました。 ※ アカツキには現在CTOはいません。 アカツキはどのようにAWSを活用しているか #jawsug from aktsk innodb_flush_log_at_trx_commit の辺りで反応している…

Redis、計算量の恐怖

はじめまして。アカツキのサーバエンジニアのこうのです。サウザンドメモリーズで主にサーバ側のプログラム・インフラを担当しています。 今回はサウザンドメモリーズで発生した、Redisにまつわるトラブルを紹介したいと思います。 TL;DR RedisのSorted Set…

9分43秒のデプロイを19秒にした話

背景 アカツキではRailsでゲームサーバを開発しています。インフラはAWSにあり、CloudFormation, Chef, Capistrano を用いて、Infrastructure as Code を実現しています。 エンジニアは普段ローカルマシンで開発していますが、ディレクター、レベルデザイナ…