タグ

ブックマーク / www.klab.com (12)

  • WebGLでYCgCo色空間による画像圧縮を実装してみた

    このエントリーは、KLab Advent Calendar 2016 の12/19の記事です。 やまだです。 昨年はWebGLをつかったソートを実装してみましたが今年はWebGLを使った画像圧縮を実装してみます。 はじめに WebGLのみならずアプリ開発において画像のフォーマットの選択は重要です。 とくにゲームの大部分を占める画像データはゲームのダウンロード時間に直結するため可能な限り圧縮しておきたいものです。 WebGLではGPUにテクスチャをアップロードする際にはgl.texImage2Dを使用します。 gl.texImage2DはTexImageSourceをアップロードできます。 このTexImageSourceというのが面白くてテクスチャデータとしてHTMLImageElementが使えます。 すなわちGIF/JPEG/PNGといったフォーマットだけでなくGoogleが開発した高

    WebGLでYCgCo色空間による画像圧縮を実装してみた
  • 新卒研修でGo研修を担当しました

    @tenntennです。 今年度の新卒研修でGo研修を担当しました。 スライドで100ページを超えるボリュームの資料を14時間かけて、じっくり網羅的に講義を行いました。 内容は今まで私が外部で発表したスライドをまとめて補足を足していった形になってます。 資料はSlide Shareに公開してあるので、ぜひチェックしてみてください。 また、資料中に扱っているソースコードもGithubで公開していますので、そちらも参考にしてください。 資料 ソースコード 研修をやってみて 新卒の反応は、普段触れない言語に触れて新鮮だったという反応やゴールーチンとチャネルが難しいなどさまざまでした。 スパルタ気味で進め方が少し早かったせいか、ついていくのが大変だったみたいです。 それでも、自主的にpingコマンドを作ってくる強者もいたり、いい刺激になったんじゃないかと思います。 裏話 実は最初はGoで簡易ゲーム

    新卒研修でGo研修を担当しました
  • Visual Studio 2015でAndroidアプリ開発

    こんにちは、今日は少しAndroidの開発ツールのお話をしたいと思います。 Visual Studio 2015を使ってAndroidの実機デバッグをおこなう方法とハマりがちなポイントを紹介します。 もともと社内でVisual Studio 2015でのAndroid開発環境を評価し始めたのは、Visual Studio 2015がリリースされる少し前のことでした。その時には最新のPreview版(CTP6)を使い、Android端末の実機デバッグをテストしました。 当時の個人的な感想としては、まだサポートしていない機能が幾つかあるものの、VSの操作に慣れている人にとっては大変使いやすい環境だと感じました。 Visual Studio 2015の正式リリースから時間がある程度経ち、Update 1リリースも提供されています。以前のプレビュー版で作っていた環境よりもかなり安定した環境を整えら

    Visual Studio 2015でAndroidアプリ開発
  • Go pprof 応用編 (CPU 以外のプロファイル)

    この記事は KLab Advent Calendar 2015 の18日目の記事です。 Go 言語のランタイムは CPU プロファイル以外にも幾つかのプロファイルを標準で実装していますが、あまり Web 上に実用的な情報がありません。 そこでこの記事では、実際に Go で長期間稼働するサーバーを開発する上で役に立った CPU 以外のプロファイル機能を紹介することにします。 スタックダンプ /debug/pprof/goroutine で、現時点での全 goroutine のダンプを取得できます。 これは go tool pprof でも利用できますが、実際に使うときはそれよりも curl や wget などを使って /debug/pprof/goroutine?debug=1 をプレインテキスト形式で保存します。 例えば、次のプログラムのスタックダンプを取得してみます。 package m

    Go pprof 応用編 (CPU 以外のプロファイル)
  • Go pprof マスター編 (pprof の仕組み)

    この記事は KLab Advent Calendar 2015 の19日目の記事です。 pprof 連載最後は、 ここまでで紹介してきたプロファイラがどういう仕組みでプロファイリングしているかを解説します。 pprof が表示している値がどう計算されているのかを把握することで、よりプロファイラを理解して使いこなすことができるようになるはずです。 goroutine profile スタックダンプ (/debug/pprof/goroutine?debug=1) の出力は次のような形式でした。 ... 1 @ 0x42d2b3 0x42d374 0x414cda 0x45d981 # 0x42d2b3 runtime.gopark+0x163 /usr/local/go/src/runtime/proc.go:186 # 0x42d374 runtime.goparkunlock+0x54

    Go pprof マスター編 (pprof の仕組み)
  • Goでサーバ開発するときのモニタリング

    このエントリーは、KLab Advent Calendar 2015の12/14の記事です。 @hhattoです。 私は主にゲームのサーバ開発や開発チームのマネイジメントに従事しています。 今回はexpvarを使ったGo製サーバのモニタリングとその周辺ツールについて書きます。 expvar 開発の初期段階やゲームのコア部分の開発をおこなってる際は、 なかなかインフラやモニタリングツールなどにまで手がまわらない事が多いのではないでしょうか? expvarを使えば簡単にメトリクスを取得することができます。 http://hostname:port/debug/varsにアクセスすることでメトリクスを JSONデータで取得することが可能です。 expvarの使い方等は公式ドキュメントや以下の記事が参考になります。 https://golang.org/pkg/expvar/ http://qii

    Goでサーバ開発するときのモニタリング
  • 基盤実装を手軽に差し替える為の設計パターン

    このエントリーは、KLab Advent Calendar 2015 の12/10の記事です。 @uzzuです。 私は主にUnity向けの社内ライブラリの開発に従事しています。社内ライブラリと聞いてウッとなる方がいたら友達になれそうです。 ライブラリを開発する上で意識しなければならないことはたくさんありますが、稿ではタイトルの通り、ライブラリ利用者のコードに一切手を加えず基盤実装を差し替える為の設計パターンについて紹介します。もう2015年なので恐らく当たり前のようにやってる話だと思いますが、あまりこういう話をWeb上で見かけないので、参考になれば幸いです。 はじめに そもそも、なぜ手軽に差し替える必要があるかといえば、以下の様な理由があると思います。 依存している基盤実装(レガシーコード、3rd-party製のライブラリ)に問題が発覚した時に、利用者に影響なく別の基盤実装に差し替えられ

    基盤実装を手軽に差し替える為の設計パターン
  • WebGLで暴力的な並列ソートに挑戦する

    日照時間足りてますか?やまだです。 KLab Advent Calender 11日目の記事です。 最近WebGLで実装できるちょっと強そうなソートアルゴリズムを知ったので書いてみました。 WebGLよくわかんないやーって人も雰囲気だけでも伝われば幸いです。 強さの秘訣 WebGLは3Dを描くAPIとして著名ですが、2Dはもちろん、工夫次第で汎用計算(GPGPU)にも応用できます。 WebGLでの演算は通常のJavaScript演算とは違い、GPUを使った並列な浮動小数点演算を可能とします。 そして、ソートアルゴリズムの中には計算量こそ地味なものの、並列処理が可能なものがあります。 そのうちの一つがバイトニックソートです。 GPUを使い、物量で計算する暴力的な並列ソートをやっていきましょう。 バイトニックソートとは 前述のとおり、並列処理が可能なソートアルゴリズムです。 配列を小さい領域に

    WebGLで暴力的な並列ソートに挑戦する
  • protobuf-net を Unity C# で使用する

    このエントリーは、KLab Advent Calendar 2015 の12/5の記事です。 5番手も緊張しますね。KLab 新卒4年目の @mecha_g3 です。よろしくお願いします。 5日目ですがGoの話ではありません。 はじめに 最近のモバイルオンラインゲームはリアルタイム性の高いマルチプレイができるものが増えてきました。 Unity を使用してゲームを作る場合の通信ライブラリは、Photon Unity Networking が有名です。 Photon を使えばマルチプレイのゲームを比較的簡単に動かすことができますが、便利な反面思い通りに行かない所も出てきます。 ここでは Unity C# を使用して開発するゲームの通信部分を自分で実装したい人のために、protobuf-net の話をします。 protobuf-net とは protobuf-net は ProtocolBuff

    protobuf-net を Unity C# で使用する
  • GoだけでAndroidアプリを作る その3 〜タッチイベントとライフサイクル〜

    連載目次 その1 〜インストール編〜 その2 〜画像の表示とイベント〜 その3 〜タッチイベントとライフサイクル〜 その4 〜音の再生とセンサー〜(予定) その5 〜簡単なゲームをつくってGoogle Play Storeに公開しよう〜(予定) はじめに @tenntennです。 前回の記事では,spriteパッケージといくつかのイベントについて扱いました。前回の記事を読んでいただいた方は,Android上で画像の描画と移動,回転,拡大/縮小を行うコードをGoだけで書けるようになったのではないかと思います。 なお,前回の記事を執筆後にevent/configがevent/sizeに変更されました。確かにサイズに関する情報しかconfig.Eventには含まれていなかったので,納得できる名前変更です。 また,GoチームによってGo Mobileの情報が徐々に整理されてきました。GoのWiki

    GoだけでAndroidアプリを作る その3 〜タッチイベントとライフサイクル〜
  • GoだけでAndroidアプリを作る その1 〜インストール編〜

    連載目次 その1 〜インストール編〜 その2 〜画像の表示とイベント〜 その3 〜タッチイベントとライフサイクル〜 その4 〜音の再生とセンサー〜(予定) その5 〜簡単なゲームをつくってGoogle Play Storeに公開しよう〜(予定) はじめに @tenntennです。 もうすぐGoのバージョン1.5がリリースされる予定ですが, みなさまはどの機能に注目しているでしょうか? コンカレントGCだったりshared libraryが作れるようになったりと,Go 1.5は非常に楽しみです。 その中でも私は,Go 1.4で入ったGo Mobileのアップデートに注目しています。 Go Mobileは,Goを使ってモバイルアプリを書くためのツール類を提供するプロジェクトです。 Go 1.5では,iOS向けのアプリがビルドできるようになったり,Androidのサポートが強化されるようです。

    GoだけでAndroidアプリを作る その1 〜インストール編〜
    hikazoh
    hikazoh 2015/09/05
  • Docker を使った開発環境構築事例

    皆さん Docker 使ってますか? なんだかよくわかんないからいいや・・・ そんなふうに考えていた時期が俺にもありました。 ということで今回は身近な例として、ローカルマシン上で Docker を使って開発環境を構築した事例を紹介します。 どちらかというと、ぶっちぎってサーバサイド寄りの話でしかも管理寄りの話だったりもしますが、その他の方々にも何かお役に立てれば幸いです。 問題 KLab にはたくさんの案件が有りますが、その中には WEBサーバやDBサーバなどが全部詰まった VM イメージを配布する、という方法でローカルの開発環境を提供している案件も有ります。 それらの案件も息が長くなり、下記のような状況が散見されるようになってきました。 配布した VM を個人好みに育ててしまって、アップデートの心理的障壁となっている 追加のミドルウェアを導入したが、環境のアップデートの伝播が行いにくい等

    Docker を使った開発環境構築事例
    hikazoh
    hikazoh 2015/07/16
  • 1