タグ

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

  • Multiple Dispatch in Modern JVM Languages | GREE Engineering

    こんにちは、エンジニアの永井雅人 (@nagai_masato) です。G* advent calendar の 17日目を GREE engineers' blog からお届けします。 dispatch ? オブジェクト指向言語の文脈でのディスパッチとは、同じ名前のサブルーチンをパラメタの型で動的に判定する呼び分けを指します。ディスパッチには大きく分けて マルチプルとシングルがあります。マルチプルはメッセージの全てのパラメタを対象にしますが、シングルはそのうちレシーバのみを対象とします。この記事では Java や最近の JVM 言語での対応状況を交えてディスパッチについて話したいと思います。 Java Java が対応しているのはシングルディスパッチです。イベントハンドラの例で説明します。今どきっぽくタッチイベントにしてみます。タッチイベント用のクラスのルートに TouchEvent が

    Multiple Dispatch in Modern JVM Languages | GREE Engineering
  • GREEにおけるJenkins, その7 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。 先週8月23日に、川口さんの来日にあわせて開催された豆ナイト続々・CI超入門:Jenkinsのススメ3 CI導入の勘(感)所というイベントに参加してきました。 先週の発表はJenkins User Conference 2012での発表とほぼ同じでしたが、Jenkins導入のマネージメントというパートを追加してどのようにJenkinsを導入したかを紹介してきました。 今回は、この内容をふまえてもう少しJenkins導入のマネージメントや工夫、結果的にうまくいったことについて紹介しようと思います。 導入期間と組織的な成熟度の関係 最初から戦略的に計画した訳ではなく結果論ですがGREEではJenkinsの導入を急いで行っていた訳ではなく、ボトムアップにゆっくりと行いました。最初はiOSやAndroidのネイティブアプリビルドとそのビル

    GREEにおけるJenkins, その7 | GREE Engineering
  • GREEにおけるJenkins, その6 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。 今回は、Jenkinsを運用に使うテクニックを紹介します。 JRubyとgemをgitで管理 GREEのシステムではいくつもの管理系のスクリプトがあるのですが最近岡崎が管理している管理系スクリプトはすべてRubyで書いています。実行はRubyJava実装であるJRubyを使っています。また管理系スクリプトと一緒に、JRubyのランタイムやGEM(Rubyのパッケージ管理システム)レポジトリ一式もgitで管理しています。これの狙いは二つあります。 どのSlaveでも動作する Jenkins SlaveもJavaで動いています。ということは、JRubyを実行するのに必要となるJavaは既にある訳で、Slave側のソフトウエア構成を気にせず実行することが出来ます。OSを選ばないのも大きなメリットです。 バージョンが指定できる すべての

    GREEにおけるJenkins, その6 | GREE Engineering
  • 多人数開発で Git を使う場合の環境構築 | GREE Engineering

    こんにちは、インフラやってる sotarok です。最近、社内でも「sotarok は そーたろっくと読む」という誤解が広がっていましたので改めて自己紹介しますと、sotarok と書いて「そーたろー」または「そーたろー・けー」と読みます。ロックしてないのでよろしくお願いします。 今日は、Git の話です。 GREE ではずっと Subversion を使っているという話を、以前開発環境の話をしたときに少し触れたことがあります。Subversion での運用方法も、GREE では割と面白い運用をしているのでその話もどこかでしたいのですが、まあ、それは今回は置いておきましょう。どこかで聞いてください。 GREE もその昔 CVS から Subversion に移ったのですが、時代は流れるもので、いよいよ Git 化という流れがきています。Subversion と Git の違いを今更あえて挙

    多人数開発で Git を使う場合の環境構築 | GREE Engineering
  • GREEにおけるJenkins, その4 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。 今回は、先日行われたJenkinsユーザカンファレンスで発表した内容をもう少し掘り下げて紹介していこうと思います。今回のカンファレンスでは、「開発者とディレクターの視点を変えていく方法」と題してJenkins初期導入時のこつ、その後の運用の改善について説明していきました。今回は特に初期導入の部分についてもう少しご紹介します。 Jenkins導入のコツ Jenkinsを導入したいがなかなか進まないという経験をお持ちの方は多くいらっしゃると思います。CI(継続的インテグレーション)のようなツール群は一度回り始めれば必要不可欠とも思えるような仕組みを持っていますが、利用経験の無い方からすると得られるメリットのイメージが既存の仕事のやり方やワークフローを変えるコストをなかなか超えることが出来ないために積極的になれないということが多いようで

    GREEにおけるJenkins, その4 | GREE Engineering
  • GREEにおけるJenkins, その5 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。 今回も前回に続き初期導入のお話です。 どんどん水平展開する Jenkins導入初期で、いくつかジョブが動き始めるようになったら類似のプロジェクトにどんどん水平展開していくのが最も簡単な方法です。Jenkinsには既存のジョブをコピーして新しいジョブを作る機能がありますので、これを積極的に使いましょう。 GREEでの導入事例ではまず最初に、iOSネイティブアプリのビルドに導入し、ある程度安定して運用が出来上がった段階から、新規開発機能向けのgitランチを追いかける別のジョブを作る等まずは類似のプロジェクトへの展開を最初に行いました。 同様に、PHPのコードをテスト&品質チェックするプロジェクトも最初に作ったジョブをベースにコピーして各種プロジェクトで利用しています。PHPのJenkins上での環境整備についてはPHPでTDD&CI

    GREEにおけるJenkins, その5 | GREE Engineering
  • GREEにおけるJenkins, その3 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。今回はGREEにおけるJenkins導入1年半のなかでの、反省点とこれから導入する方へのおすすめを紹介します。 GREEでのJenkins(当時はHudson)導入は、最初、岡崎の個人的な導入から始まりました。そこから徐々に利用してもらえるプロジェクトが増えて、いまや開発には欠かせないシステムに成長しました。今回は、この1年半でのJenkins導入の反省点と、これから導入される方へのTIPSをご紹介します。 ジョブの命名規則 Jenkinsに登録されているジョブも100を超えるようになってきた昨今、そろそろてこ入れをしたい問題です。 ジョブは1画面に収まる程度であれば、Jenkinsダッシュボード画面でも難なく目的のジョブを探し出したり、ジョブの状態を確認することが出来るのですが、さすがにジョブを探すためにスクロールをしなければなら

    GREEにおけるJenkins, その3 | GREE Engineering
  • GREEにおけるJenkins, その2 | GREE Engineering

    こんにちは、エンジニアの岡崎(@watermint)です。今回はGREEにおけるJenkinsをつかった品質管理について紹介します。 hourlyビルド 岡崎がGREEに入社したのは1年半前ですが、そのときから感じているのがGREEの開発速度は非常に速いことです。ソースコードレポジトリには多くの優秀なエンジニアが日々数百以上のコミットしています。 GREEのシステムは多くのサブシステムを組み合わせたものですが、手元の些細な変更が全く予想しない別のプロジェクトで問題を起こすことがあります。こういった問題は通常、リリース前の結合テスト等の段階で検出します。 リリース前のテストで問題が発覚すると、当然その修正をして再度修正をリリースプロセスにのせるということになるのですが、これには他のエンジニアの作業を止めてしまったりリリースの順序を調整が必要になることがあります。 こういった事態を防ぐために単

    GREEにおけるJenkins, その2 | GREE Engineering
  • GREEにおけるJenkins, その1 | GREE Engineering

    はじめまして。エンジニアの岡崎(@watermint)です。今回はGREEにおけるJenkinsの利用について紹介します。 Jenkinsは継続的インテグレーションの代表的なツールです。JenkinsがどういうものかはJenkinsコミュニティーの説明をみると良く分かります。 一言で言えば、Jenkinsは、容易ないわゆる「継続インテグレーションシステム」を提供し、開発者が変更をプロジェクトに統合でき、ユーザーがより新しいビルドを容易に取得できるようにします。自動化された継続的なビルドは、生産性を向上させます。 Meet Jenkinsより 継続的インテグレーションという言葉について耳慣れないというかたは、JenkinsならびにJenkinsの前身であるHudson開発者である川口さんによる解説をご覧ください。 Hudsonを使ったアジャイルな開発入門 GREEにおけるJenkinsの導入

    GREEにおけるJenkins, その1 | GREE Engineering