タグ

ブックマーク / labs.gree.jp (52)

  • 受取期限の過ぎたデータをMySQL上から削除する話 | GREE Engineering

    こんにちわ。せじまです。今回は地味で泥臭い話をします。ただ、割と平易な内容かと思いますので、初学者の方にもオススメです。 はじめに ゲームでは、受取期限のついたログインボーナス的なものがよくあります。ユーザが期限までに受け取らないと、ユーザからそのデータは不可視になりますが、必ずしも、不可視になった瞬間にデータベースから直ちに削除される、というわけでもありません。バッチジョブか何かで、ガベージコレクションのように削除するケースが多いのではないでしょうか。 また、論理削除という概念もあります。論理削除についてはいろいろ意見や考え方があるかと思いますので、ここでそれについては論じませんが、「削除フラグが立ってユーザから不可視になった後、三ヶ月以上経過したデータを削除したい」みたいなことは、ゲームに限らず、しばしばあるんじゃないかなと思います。 こういった、ユーザから不可視になってしばらく経過し

    受取期限の過ぎたデータをMySQL上から削除する話 | GREE Engineering
  • 美容メディア ARINE の記事を Amazon CloudFront を通して配信するようにした話 | GREE Engineering

    アリネチームの平田です。毎日に憧れを、な美容メディアARINEでサーバーサイドの開発をしたりインフラ回りを見ています。 最近ARINE(https://arine.jp)はAmazon CloudFrontを通してページを配信するようにしました。主な目的はほぼ静的で、かつARINEへのアクセスの中心である記事ページをキャッシュすることでレスポンスを速くし、かつアクセスが増加した際のオリジンの負担を軽くすることです。 今回はCloudFrontを入れるまでにやったこと、入れてみての効果、そしてやってしまった失敗について書きます。 想定している読者について書いておきますと、この記事は初めてCDNの設定をした自分が振り返って書いてみている内容ですので 普段は主にサーバーサイドのアプリを書いているけど、たまにインフラも見ていて、 CDNの設定はやったことがないけどやろうとしている もしくはやったば

    美容メディア ARINE の記事を Amazon CloudFront を通して配信するようにした話 | GREE Engineering
  • Jenkinsfile、書いてますか? | GREE Engineering

    インフラの駒崎です。Jenkins の Pipeline スクリプトについてのお話です。 早速ですが Jenkins の Pipeline スクリプト、使われていますでしょうか。 もしかしたら以前ちょっと書いていたけどやめてしまったとか、従来の GUI 設定のほうが楽だ、となんとなく敬遠してしまっている方もいるのではないでしょうか。 私が実際そうだったのですが、最近になってやっと Jenkinsfile - Pipeline スクリプトが身近に感じられてきましたので、現状の簡単なまとめを書いてみたいと思います。少しでも似た状況の方へのヒントやきっかけになれば幸いです。 Pipeline スクリプトは難しい? 私は正直、2016年に Jenkins 2 の目玉機能として Pipeline が出た当初は、とっつきにくい…わからん…と思っておりました。Jenkins を上っ面でなんとなく使ってい

    Jenkinsfile、書いてますか? | GREE Engineering
  • ソーシャルゲーム サーバーアーキテクチャ選定 | GREE Engineering

    ※Read / Write のレスポンスタイムは大まかに計測した値のため適切な設定ができていない場合もあることをご了承ください MySQL 信頼と実績のあるRDBMS。新規タイトルの場合AWSではAuroraGCPではCloud SQLを利用することで運用の手間をある程度減らすことができる。分散システムではないため1クラスタでの書込性能には限界があり、ソーシャルゲームのように大規模なwrite処理がある用途では水平/垂直分割が必要になり、そのための設計とコーディングが煩雑になりがちである。またインスタンスのスケールアップ・ダウンで対応しきれない場合のクラスタの分割・統合のオペレーションは複雑なものになる。 スケールアップ・ダウンやnodeのメンテナンスなどでMaster nodeを切替える際には不通時間が発生してしまうため、安全のためゲーム自体をメンテナンス状態にする必要が発生する。 ※

    ソーシャルゲーム サーバーアーキテクチャ選定 | GREE Engineering
  • TLS1.3だとハンドシェイクがどれくらい早くなるか測定した | GREE Engineers' Blog

    こんにちはインフラの後藤です。 今回はTLS1.3を実環境で試してみました。 TLS1.3はTLSのメジャーバージョンアップとも言われるように、様々な改善が含まれています。 例えば、以前「TLS1.3のハンドシェイクがもう来てる」で書いたように、TLS1.3ではハンドシェイク時のパケットの往復回数が減っており、より早くコネクションを確立できます。 すでに、ブラウザや暗号ライブラリはTLS1.3に対応してきておりますので、実環境で具体的にどれくらいコネクションの確立が早くなるのか確認してみました。 TLS1.3 バージョンネゴシエーションとネゴシエーション 測定の前に今回利用したTLS1.3 draftバージョンについて補足します。 TLS1.3は draft-28 版が最新のバージョンです。こちらが文章上の修正を経て将来的にRFCとなります。 TLS1.3はファイアウォール等の中間装置の不

    TLS1.3だとハンドシェイクがどれくらい早くなるか測定した | GREE Engineers' Blog
  • はじめてのScriptPlayable | GREE Engineering

    public struct ScriptPlayable<T> : IPlayable, IEquatable<ScriptPlayable<T>> where T : class, IPlayableBehaviour, new() ということなので、ScriptPlayableはPlayableBehaviourのガワ、と思ってもらえればOKかと。 PlayableAPIがNativeで作成されている関係上こうなっているのだと思います。 ScriptPlayableを使うことでユーザー定義の振る舞いを定義できる機能でTimelineなどを扱う場合はきちんと把握しておくべき機能となります。 PlayableBehaviourはIPlayableBehaviour, ICloneableを実装するクラスで下記メソッドが期待されます。 ◆開始/終了 OnGraphStart グラフの再生時に

    はじめてのScriptPlayable | GREE Engineering
  • Electronでゲームの設定ツール作ってみた | GREE Engineering

    みなさんご無沙汰しております。ちょびえです。 最近はやりのElectronでゲームの設定ツールを作ってたので事例共有ということで記事を書いてみたいと思います。 事例共有なのであまり技術的な内容ではありませんが、少しでも皆様の参考になれば。 (免責としては、自分のチームの話なので全体としてこう、というわけではありませんのでご了承下さい) モチベーション 元々UnityEditorの機能を使って色んなツールを作っていたのですが、特定のGUI APIに依存した少し複雑なGUIツールとなるとメンテを他の人に託しづらくなってしまう問題があります。 会社として普段からWindowsMac向けのアプリケーションを作っている、とかであれば特に問題にならないと思うのですが。どうしても弊社のようにWebサービスが主力な会社だとHTML,JavaScriptを始めとした技術が得意な人が多く、Nativeアプリ

    Electronでゲームの設定ツール作ってみた | GREE Engineering
  • Docker と ECS と WebSocket で最強のリアルタイム・マルチプレイ環境を運用 | GREE Engineering

    概要 AWS ECS でマルチプレイゲーム用インスタンスの管理すると限りなく最強。 はじめに リアルタイム・マルチプレイゲームを作る時、まず考えられることは、あるプレイヤーの行動や状態が他のプレイヤーに伝わることではないかと思われます。しかし、スマートフォンアプリは不安定であったり、複数端末同士で(基地局やバックボーンを介さずに)物理的に直接接続することは出来ませんし、理論的にできたとしても、だいたい開発が進んでいくうちに排他制御の問題などで炎上、もしくはとん挫してしまいます。軽い気持ちでマルチスレッド処理をおこない事故る現象と全くおなじです。 もっとも簡単な解決方法としてはマルチスレッド処理のときようにクリティカルセクションを設けることです。ようはサーバを用意してそこで処理すれば、比較的容易に一意な結果が得られますし、接続に関する問題も起こりにくくなります。 長くなるので → http:

    Docker と ECS と WebSocket で最強のリアルタイム・マルチプレイ環境を運用 | GREE Engineering
  • OAuth for Native Apps | GREE Engineering

    GREE Advent Calendar 9日目は @nov が担当します。 僕は GREE ではセキュリティ部に所属しており、社外では OAuth や OpenID Connect などの Identity 関連技術についての翻訳や講演などを行ったりもしています。 今日は GREE Advent Calendar ということで、Native App コンテキストでの OAuth の話を少し書いてみようと思います。 はじめに Native App を開発していると、Backend Server とのやりとりや Facebook Login や Google Sign-in などで、必ずと言っていいほど OAuth 2.0 というのが出てきます。 OAuth 1.0 と異なりリクエストに署名が不要だったり、Client Secret (a.k.a Consumer Secret) 無しでも

    OAuth for Native Apps | GREE Engineering
  • EthernetやCPUなどの話 | GREE Engineering

    こんにちわ。せじまです。今年に入ってからアクティビティトラッカーを二回壊しまして、新しい分野の製品って設計いろいろ難しいんだなと、しみじみ思う今日このごろです。 先日、社内勉強会で EthernetCPU などの話をしました。前回のCPUに関する話に続き、今回のスライドも幅広い方に読んでいただけそうな内容かと思いましたので、公開させていただくことにしました。前回のスライドを読んでない方は、できればそちらを読んでいただいてからの方が、より理解が深まるのではないかと思います。 忙しい人のために三行でまとめると 2020年代には、サーバのネットワークインターフェースが 40Gbps 超えてそうな予感 もし Ethernet でそれだけ大量のパケットをさばくなら、(標準化されてないけれど) Jumbo Frame 使わないと厳しいかも 2020年代には、NICやブロックデバイス等、CPUを取

    EthernetやCPUなどの話 | GREE Engineering
  • CPUに関する話 | GREE Engineering

    こんにちわ。せじまです。スティック型PCの購入は、 Core M版が出るまで見送ろうと思っている今日このごろです。 弊社では「Mini Tech Talk」という社内勉強会を隔週で開催しているのですが、それとは別に、「Infra Tech Talk」という社内勉強会を、半年くらい前から毎月開催しています。わたしはそこでほぼ毎月、45-60分くらいのスライドを作って話をしています。今までどういう話をしてきたかといいますと、TCPに関する話を二回、SSDに関する話を二回しました。(InnoDBに関する話だと軽く5-6時間くらいできるんですが、いささかマニアックなので、もっと幅広い人を対象に話をしています) 今までの話はちょっと社内向けの内容だったんですが、前回開催された Infra Tech Talk では、社外の方にも幅広く読んでいただける話ができたと思いましたので、その資料を slides

    CPUに関する話 | GREE Engineering
  • 実サービスにおけるHTTP/2ネゴシエーション数を調べる | GREE Engineering

    こんにちは、インフラストラクチャ部の後藤です。 先日、HTTP/2がRFC7540としてRFC化されました。RFCの中でも触れられている通り、日の方も沢山関与されています。当に皆様お疲れ様でした。 仕様としては一段落したHTTP/2ですが、実際に使っていく段階へと移ってく上で気になるのがどれ位のクライアントがHTTP/2に対応しているかということです。Google ChromeやFirefoxの最新版では既にHTTP/2対応していますが、全てのユーザがそれを使っているわけではありません。 そこで、今回は実際に弊社のサービスでHTTP/2対応クライアントの接続がどれ程あるのか調べてみました。(HTTP/2をサービスとしてサポートしているわけではありません。) ユーザエージェントから調べる方法もあるのですが、今回はALPNを元に調べました。 ALPNについて HTTP/2で通信する際のネ

    実サービスにおけるHTTP/2ネゴシエーション数を調べる | GREE Engineering
  • 概要UnityYAMLMerge | GREE Engineering

    こんにちは。ちょびえです。最近ひまつぶしにUnityをはじめてみました。 ということで少し前に連載していたMySQLプロトコルはひとやすみしつつ、今日はUnityらへんのことでも書いてみようかなぁ、と思います。 最近遊んでいるのがUnity5で入ったSmartMerge、もといUnityYAMLMergeなのですが説明のなさっぷりが素晴らしく、面白半分で検証を行っています。 SmartMarge - UnityYAMLMerge http://docs.unity3d.com/Manual/SmartMerge.html Unity incorporates a tool called UnityYAMLMerge that can merge scene and prefab files in a semantically correct way. The tool can be acc

    概要UnityYAMLMerge | GREE Engineering
  • 64bit環境におけるObjective-Cのポインタ | GREE Engineering

    はじめに こんにちは、GREE Platform部の柳村(@yana_3)です。 iOSエンジニアのみなさまにおかれましてはXcode6以降の使用と64bit対応が必須になりますが、対応すすんでいますか? 64-bit and iOS 8 Requirements for New Apps 64-bit and iOS 8 Requirements for App Updates GREE Platformでは、64bit対応の検証をする中でポインタ周りでJSONKit1がクラッシュするという事態が発生し、そこから64bit時のポインタについて調べたのですが、 あまりこの内容に関して詳しく記載されているところがなかったようなので共有したいと思います。 ただ普通にiOSで開発するぶんには全く役に立たない内容になっておりますのであらかじめご了承くださいmm 調べるきっかけ 64bit環境でのみ

    64bit環境におけるObjective-Cのポインタ | GREE Engineering
  • ネイティブゲームクライアントの幸せな設計図 | GREE Engineering

    こんにちは。Wright Flyer Studios部のにしだ(@hosi_mo)です。 部内で、主にcocos2d-xやUnityゲームクライアントの開発をしています。 GREE Advent Calendar 2014の18日目は、 ネイティブゲームクライアントの幸せな設計図という題でお話しします。 Wright  Flyer Studiosで開発するにあたり、 早く、安全に、見通しの良い実装で企画者の実現したいことを具現化するために、気をつけていることをお話しできればと思います。 1 : 後悔しない技術選定 cocos2d-xはC++で…、UnityはC#! と対比させられがちですが、技術選定時点でのエンジニア自身の言語習得能力によって選択肢を狭めることほど悲しいことはないので、純粋に企画との相性とパフォーマンス(チューニングで苦労したくない)で決めます。 また、エンジニアリングを

    ネイティブゲームクライアントの幸せな設計図 | GREE Engineering
  • 【Unity4.6】新UIエディタ入門 | GREE Engineering

    こんにちは! ガレージスタジオ部の岩間です。 『GREE Advent Calendar 2014』8日目の記事を書かせていただくのですが、実は私はエンジニアではありません! 12/1の記事で紹介していますが、私の所属するガレージスタジオ部では3ヶ月でNativeタイトルをリリースをするというプログラムを社内で行っています。 『Lv.2』は、プランナーとエンジニアがチームを組んで2か月でオリジナルタイトルをリリースするというプログラムなのですが、私の場合はタイミングなどの都合上、企画から実装までプランナーの私1人でチャレンジすることになりました。 今回の記事は、その2か月間に躓いた部分を中心にUnity4.6で実装された新UIエディタのことを書かせていただきます。 ◇目次 Unity4.6で実装された新UIエディタとは? ガレージ部で作ったゲームの紹介(新UIエディタ使用例) 開発環境 新

    【Unity4.6】新UIエディタ入門 | GREE Engineering
  • Blender エンジニアでも出来るキャラクタ3Dモデリング | GREE Engineering

    はじめに こんにちは。情報システム部の山田幸司です。GREE Advent Calendar 2014 5日目の記事を担当させて頂きます。 今回のテーマは「Blender」です。 ゲームづくりに携わっているエンジニアの方々の中にも、素材を自前で用意して動かしたいと思っている方が多いと思います。僕も2年前から趣味Unityを触り始め、3Dモデルを自作して動かしたいと思い始めていました。ただ3Dのモデルデータをどうやって作ればいいのか悩む方がいると思います。モデリングのためにMayaやLightWaveなどのモデリングソフトの購入も検討できますが、高価で手を出しにくい。そんな時にBlenderをお勧めします。 Blenderとは Blenderはオープンソースのモデリングソフトです。最新バージョンは2.72b(2014/12/5現在)。フリーのモデリングソフトならばメタセコイアが有名だと思い

    Blender エンジニアでも出来るキャラクタ3Dモデリング | GREE Engineering
  • Linux TC (帯域制御、帯域保証) 設定ガイドライン | GREE Engineering

    Abstract このドキュメントはLinuxにおいて帯域制限のためにtcを用いる際のガイドラインです。 tcは様々な用途に活用できるものですが、プロダクションにおいて特定のserver daemonのトラフィックを制限するというシナリオで活用することを目的としています。 tcのより詳しい詳細については別にドキュメントを書きましたのでそちらを参照してください。 よくわかるLinux帯域制限 Root qdiscの選定 帯域制限を行いたい場合のqdiscは主に以下のようになるでしょう。 TBF PRIO + 内部qdiscとしてTBF HTB それぞれ用途に合わせて適切なものがあるのですが、機能としてはHTBが前者2つの上位互換となるので、迷った場合にはHTBを使えば問題ありません。ということで以後HTBの設定について解説します。 class構造,トラフィックのclassify, filte

    Linux TC (帯域制御、帯域保証) 設定ガイドライン | GREE Engineering
  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering
  • GREEのUserAgent比率を公開します(2014/07) | GREE Engineering

    このアイコン使い始めてそろそろ7年になります。ago(@kyo_ago)です。 今月もGREEを利用して頂いているクライアントのUA比率を公開します。 グラフは以下のデータを元に作成しています。 { "os": { "Android": 66.3, "iOS": 33.7 }, "version": { "Android": [ { "percent": 37.1, "name": "4.2" }, { "percent": 21.1, "name": "4.0" }, { "percent": 20.3, "name": "4.1" }, { "percent": 13.6, "name": "2.3" }, { "percent": 4.3, "name": "4.3" }, { "percent": 3.6, "name": "other" } ], "iOS": [ { "perc

    GREEのUserAgent比率を公開します(2014/07) | GREE Engineering