サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
developer.wonderpla.net
今回のエンジニアブログを担当する加賀です。 高速な擬似乱数生成アルゴリズムのXorshiftを紹介したいと思います。 今回のコードはVisual Studio 2010 Pro SP1、C# 3.5で確認しています。 Xorshiftとは Xorshiftとは、その名の通り、XOR(排他的論理和)とシフト演算のみを使用する乱数生成アルゴリズムです。 複雑な計算をしていないので、かなり高速に乱数を生成することが出来ます。 また、生成し続けて再び同じ数が出てくるまでの周期は2128-1と、精度も実用には悪くありません。 C# 実装例 public class Xorshift { // 内部メモリ private UInt32 x; private UInt32 y; private UInt32 z; private UInt32 w; public Xorshift () : this (
始めまして、サーバエンジニアの山脇です。 サーバアプリケーションのテストと開発環境へのデプロイをCircleCIに任せているのですが、最近CircleCIが2.0リリースされたのでどんなことができるのか試してみたのでその内容を書きたいと思います。 1.0と2.0の比較 まず1.0から2.0に変わった点として設定ファイルの配置場所が変わりました。 1.0ではリポジトリ直下の circle.yml に設定ファイルを配置していましたが、2.0ではリポジトリ直下から .circleci/config.yml に設定ファイルを配置するようになりました。 以下で1.0と2.0でそれぞれテストをして動かし、masterブランチの場合デプロイする例(実行するコマンドはただのechoです)を記述してみました。 1.0の書き方 machine: python: version: 3.4.2 test: ove
目的 筆者の専門分野でもあり、最近は色んなネットワークのライブラリーーcurl、photonのようなーーが多いので、手作りのクライアントやサーバも少なくなっています。 そのために問題が生じてもどのような問題なのか分からず、ライブラリーのパッチをいつまでも待たないといけなくなったり、効率の悪い回避策を入れたりすることになります。 しかしながら、オープンソースが今のように発展していない一昔は、こういうライブラリは自前で作ってきたものです。 ライブラリーを使うのに慣れている現在のエンジニアさんには難しく思えるのかも知れませんが、実際にポイントを押さえていれば、そこまで難しいものではありません。 この連載によって、基本的なソケット通信のやり方を覚え、実戦で応用ができるならばいいと思っています。 対象 ・ソケットプログラミングに興味のある方 ・Photonなどのネットワークフレームワークやライブラリ
こんにちは。サーバエンジニアの桐島です。 今回は、図(フローチャート、シーケンス図など)をチームで継続的に管理するための個人的なベストプラクティスを紹介したいと思います。 図の有用性と、継続的な管理の必要性 図って便利ですよね。 以下の様な図があると、チーム内での認識合わせを正確に素早く行うことができます。 サーバ構成図 アプリ-サーバ間処理のシーケンス図 APIプログラムの複雑なロジックのフロー図 ER図 ただ、プロジェクトのドキュメントに含まれる図がすべてメンテナンスされ、最新の仕様と図がマッチし続けているケースは少ないのではないでしょうか。 図は有用なのですが、管理し続けなければその有用性を失い、いずれ削除される運命にあります。 図の継続的管理への課題 では、図が管理されない原因は何でしょうか。 具体的なケースを幾つか挙げてみます。 再編集できないフォーマットで図が作られている ホワ
クライアントエンジニアの乾です、今回はUnity5.3でコルーチン周りでの変更点 について書きたいと思います。 1:コルーチン内からのコルーチン呼び出し 5.3以降はコルーチン内の呼び出しはStartCoroutine()が省略する事が可能に なりました。 これによりMonoBehaviourを継承していないクラスでも扱いやすくなりました。 // 5.3以前の書き方 public IEnumerator Coroutine(MonoBehaviour monoBehaviour){ yield return monoBehaviour.StartCorouitne(Coroutine2()); } // 5.3以降の書き方 public IEnumerator Coroutine(){ yield return Coroutine2() ; } 2:追加クラス(WaitWhile、Wait
アプリエンジニアの山下です。 プロダクト自体の改善はもちろんですが、開発環境を改善していくこともエンジニアの重要な仕事だと思います。 今回はUnityプロジェクトをビルドしストア提出用アプリ(ipa/apk)を作る上で 起こった問題とその解消方法についてまとめてみました。 ビルド作成時の問題 開発を進めていく上で、現行プロジェクトをビルドしてQAや開発に関わっているメンバーに配布することは多々あります。 しかし開発が進むにつれプロジェクトが膨らんでいき、ビルド手順の複雑化とビルド時間の増大が問題になってきました。 特に手順の複雑化は属人性を高め、ビルド職人がいないとビルドを作れない事態にまで及びました。 一時期ビルド手順書が作られましたが、日々の開発による手順の変化に対応できず、属人化を避けることはできませんでした。 Jenkins の導入 まず属人化解消のため、Jenkinsによる自動ビ
サーバーエンジニアの若原です。 今回は開発でも使っているCircleCIのGitHub連携について紹介させていただきます。 CircleCIとは継続的インテグレーションのためのクラウドサービスです。 GitHubと連携することができ、git pushなどをトリガーにビルドを走らせることができます。 1コンテナまでは無料で使用することが可能ですが、複数のビルドを並列で行うためにはコンテナを増やす必要があり、2つ以上のコンテナを使用したい場合は有料となります。プロジェクトの規模を考えて適切な量のコンテナ数を追加する必要があります。 サインアップ CircleCIへはGitHubのアカウントでサインアップすることができます。 プロジェクトの追加 サインアップ直後にダッシュボードに遷移します。プロジェクトが存在しないため赤枠内の「Add Projects」からGitHubのプロジェクトを追加します
ネイティブアプリケーション事業部サーバエンジニアの桐島です。 先日、社内エンジニアLT会にて、ポモドーロ・テクニックについて発表したところ、 「自分はこんな感じでやってるよー」という意見が出たり、気になっているひとが結構多い感じだったので、ブログにも書いてみます。 ポモドーロ・テクニックとは Francesco Cirillo さんが、1980年代後半に考案した、時間管理法です。 小休憩を細かく取ることで生産性を向上させる、という考えがベースになっています。 ポモドーロ・テクニックのやり方 具体的な実践方法は以下となります。 やることを決める 25分後に鳴るようにタイマーを設定する タイマーが鳴るまでタスクを処理する タイマーが鳴ったら、短い休憩(3〜5分)をして、1に戻る(これが1ポモドーロ) 4ポモドーロしたら、より長い休憩(15-30分)をして、1に戻る とてもシンプルですね。 とは
今回のエンジニアブログを担当する村田です。 前回は、Pythonを使ったAWS Lambdaでスケジュール化を試しました。 今回は、画像処理ライブラリである「Pillow」をAWS Lambdaで使いたいと思います。 Pillowとは? Python Imaging Library (PIL)のforkプロジェクトで、 ピクセル毎の操作 マスキングと透明度の制御 ぼかし、輪郭補正、スムージング、輪郭検出などの画像フィルタ シャープ化、明るさ補正、コントラスト補正、色補正などの画像の調整 画像へのテキストの追加 その他いろいろ といった様々な画像処理が可能なライブラリです。 実は前回使おうとしたのですが、このPillowというライブラリ、 インストール時に環境に合わせてビルドをするため、普通にMac上で環境を構築すると実行時にエラーが発生します。 Unable to import modul
ネイティブアプリケーション事業部の山内です。 ワンダープラネットでは、プロダクトローンチ前あるいはローンチ後にサーバーの負荷テストを実施してボトルネックを探り、パフォーマンスチューニングを実施しています。Apache BenchやJMeter、Vegetaなど様々な無償ツールがありますが、社内ではGatlingが人気です。負荷テストの結果が静的ファイルにも出力され、グラフや表をブラウザで確認できて便利です。 今回は、Docker上にGatlingとnginxを動かすコンテナを用意し実際に負荷テストを実施、テスト結果をブラウザで閲覧するまでの一連の流れをご紹介します。 環境 ・MacBook Pro (El Capitan 10.11.6) ・Docker for Mac Version 1.12.1-beta26.1 (build: 12100) docker-compose.ymlの作成
こんにちは。サーバ担当の中村です。 本日はAmazon Web Services(以下AWS)のサービスの1つであるSimple Queue Service(以下SQS)を使った非同期処理の実装について書いてみようと思います。 Q.SQSとは? A.分散型キューサービスで高い信頼性とスケーラビリティを兼ね備えたサービス。 しかもとても安い! Q.何ができるの? A.キューにメッセージを「送信する」、「溜めておく」、「取得する」、「削除する」ことができる。 この機能を使いリアルタイム性を求められない処理をキューに溜めておき、非同期に処理することが可能。 失敗した時にはメッセージを消さないようにしておけば最低1回は実行されることが保証される。 Q.具体的にはどのように使うの? A.例えばログの出力をSQSに任せることでアプリケーションの処理とログ出力を分離することができる。 例) 【SQSを使
ブログを担当する戸田です。今回はiOSアプリ(iPAファイル)の再署名について紹介していきます。 iOSアプリの開発を行っていると「Apple Developer Program」の証明書にて有効期限が設定されているため、証明書の期限が切れてしまうとiOSアプリを利用することができなくなります。iOSアプリを再利用するには、証明書を更新後に再ビルドを行う必要があります。そのため、ビルドに時間が掛る場合やビルド環境がない場合でも行える方法になります。 iPAファイルを展開する。 「unzip」コマンドで、iPAファイル(sample.ipa)を展開します。 $ unzip sample.ipa Entitlementsファイルを作成 「codesign」コマンドから再署名に必要になるentitlementsファイルを作成します。 $ codesign -d --entitlements :-
リニューアル後、2エントリー目、担当の大橋です。 リニューアルに伴った特別なネタを持っているわけでもないので、いつものピンポイントなネタでお送りします。 Unityでデータを暗号化 Unityでなんらかのデータを保存するとき、PlayerPrefsを利用したり、 ファイルに書き込んだりすると思いますが、 ある程度の知識があるユーザーであれば、これらの保存したデータを 比較的簡単に見ることができてしまいます。 そのため、アプリを利用するユーザーには知られたくないデータを保存する場合、 そのデータを暗号化する必要があります。 ということで、今回はAESという暗号化方式でデータを暗号化する方法を取り上げようかと思います。 AESはアメリカ国立標準技術研究所(NIST)が新しい標準暗号として暗号方式を公募し、 Rijndaelという暗号方式がAESとして採用されました。 そういうこともあり、Uni
リニューアル後、3エントリー目、担当の長屋です。 日々、業務中にいいなと思ったことを書いてみます。 今回は汎用的で且つ軽量高速なバイナリベースのシリアライズ形式である「MessagePack」について書いてみようと思います。JSON-likeに汎用的に扱え、バイナリ形式で且つ余分なデータを切り詰めているためシリアライズ後のサイズはJSONよりもかなり小さくなります。 また、C++の場合は自作のデーダオブジェクトや列挙型などのそのままシリアライズ・デシリアライズできる楽ちん仕様になってます。 MessagePack MessagePack: It's like JSON. but fast and small. 実際にMessagePack形式でシリアライズしたデータのサイズとJSONの場合のサイズを比べてみたいと思います。 #include <iostream> #include <msg
お世話になります。藤澤です。 ぼくは普段 Git のクライアントに SourceTree を使ってるんですが、ある日突然、変更していないはずのファイルが untracked として表示されるようになってしまいました。 作業ツリーをいつもキレイにしておきたい派としては これは非常に気になります。 というわけでちょっと腰を据えてこいつと格闘してみました。 ファイル名を変えてみる ファイル名に "*" が含まれてるせいかな、ということでファイル名を変えてみます。 これを index に add しようとするとエラーが。 おまけに変更をリセットしようとしても同様のエラーが出て元に戻すことすらできません。 (仕方ないので「ローカルの変更を破棄」オプション付きでブランチを切り替えて元に戻しました) とりあえず commit してみる 試しにテスト用のブランチを切って commit してみると作業ツリー
今回の担当、大橋です。 Unityでのベクトル(Vector3)の扱い方をまとめてみました。 基礎的なことが中心になってます。 スクリプトはC#です。 ベクトルの作成 まずはベクトルの作成です。 引数にx、y、z各成分の値を指定して作成できます。 引数を省略すると、長さ0の(0, 0, 0)のベクトルになります。 // ベクトル(0, 0, 0) var vec1 = new Vector3 (); // ベクトル(1, 2, 3) var vec2 = new Vector3 (1f, 2f, 3f); ベクトルの足し算、引き算 ベクトルも足し算と引き算が出来ます。 2つのベクトルの各成分同士がそれぞれ加算、減算されます。 var vec1 = new Vector3 (1f, 2f, 3f); var vec2 = new Vector3 (1f, -1f, 2f); // 足し算 v
今回のエンジニアブログを担当する村田です。 みんな大好きAWS LambdaがPythonで実装できるようになりました! 参考:【AWS発表】AWS Lambdaのアップデート – Python, VPC, 実行時間の延長, スケジュールなど ワンダープラネットにおいてPythonは、 サーバーサイドのメインのプログラム言語 MayaでのPython スクリプティング ちょっとしたコマンドラインツールを作成 と、様々な場面で活躍しております。 今までAWS LambdaはNode.jsで実装してきましたが、これからはPythonで実装できます。 というわけで、早速AWS LambdaをPythonで実装し、折角なのでスケジュール化して動かしてみます。 作成するもの 今回は、Appleが提供するRSS Feed Generatorを使い 「日本」のAppStoreの「iOSアプリ トップセー
こんにちは、エンジニアの成田です。今回もUnityのシェーダで遊んでみます。 今回はタイトルの通り「VRっぽい」シェーダを作ってみました。VRのシェーダと言っても最近流行りのヘッドマウントディスプレイOculus等の視差シェーダみたいなものではなく、あくまで「演出上のVR」、よくアクションゲームなんかに登場する空間のソナーみたいな効果を作ってみました。説明が難しいですけど、なんというか、SF映画のトロンみたいなグリッドの表現です。 注意点として今回の実装はあくまで私流のやり方で試行錯誤したものですので、もっと美しく処理も軽い方法があるかもしれませんが、ご了承ください。というか良い方法教えて下さい…… また、今回作成するシェーダはピクセルシェーダの負荷が結構高いと思われますので、実用は厳しいかもしれません。 1.方針 とりあえずシーン内で多様なサイズのオブジェクト同士での整合性を取るために、
今回のエンジニアブログを担当する大原です。 昨今、カジュアルゲームには動画広告を入れているパターンが多くなってきました。 動画広告の売上話題によくあがる某ク◯ッシー◯ードも使っているUnityAdsをCocos2d-xで使えるようにしてみようかと思います。 共通の環境準備 1.アカウント登録 UnityAdsでUnity Developer Networkアカウントの登録をしてください。 広告を紐付けるプロジェクトを追加します。 2.SDKの準備 githubでsdkが公開されているので、そこからDownloadしてください。 https://github.com/Applifier/unity-ads-sdk Androidの広告表示 1.EclipseにSDKをインポートする。 Eclipseを使っている人前提で書きます。 EclipseのFile->Importから[Existing
今回のエンジニアブログ担当の山下です。 先日AppleのSwift Blogを眺めていたところ、 「Nullability and Objective-C」という気になる記事を見つけました。 もしかするとObjective-CでもSwiftのような安全なコーディングが出来るようになるのでは…!?と 若干の期待をしつつ試してみました。 nullableとnonnull Objective-Cの新しい言語仕様ではnullableとnonnullの2つの注釈が追加されています。 それぞれnilやNULLが入る可能性のあるもの、入れることが認められないものを意味します。 注釈は*記号の後に記述します。 nullを許容しないプロパティの例を以下に示します。 @interface ObjCClass : NSObject @property NSString * __nonnull string; @
今回のエンジニアブログを担当する藤岡です。 D3.js等のデータ可視化ライブラリは沢山存在していますが、 このエントリでは、「NumPy + Pandas + matplotlib」でデータプロッティングを行います。 所謂データ分析ツールのフロントエンド側の処理を3つのライブラリで実装してみようかと思います。 「データ分析Python」と呼ばれるものですね。 NumPyとは? NumPyは数値計算を効率的に行うためのPythonの拡張モジュールです。 多次元配列の扱いを簡単にしてくれたり、大規模な高水準の数学関数ライブラリを提供してくれます。 公式サイト: http://www.numpy.org/ Pandasとは? Pythonのデータ分析ライブラリで、Rライクな機能を提供してくれるモジュールです。 データ操作の為のDataFrameオブジェクトや、データセットの整形、柔軟な変形機能を
今回のエンジニアブログを担当する山下です。 最近はGitHub製テキストエディタのAtomを使っての開発が中心になっています。 Atomの特徴はなんといってもパッケージによる拡張で、 世界中のデベロッパが様々なパッケージをGitHub経由で公開しています。 カスタマイズ性の高いツールはやはりいいものですね。 そこで今回はUnity(C#)でのゲーム開発でもこのAtomを使ってみたいと思います。 MacユーザはUnityにビルドインされているMonoDevelopや、Xamarin Studioを使っている人が 多くいるように思いますが、第三の選択肢となれば幸いです。 インストール まずAtomがインストールされていなければダウンロードしておいてください。 https://atom.io/ 続いてomnisharp-atomパッケージをインストールします。 omnisharp-atomはMo
サーバーエンジニアの原です。 今回は、Python製テスティングフレームワークpy.testの数あるプラグインのうち、おすすめプラグインをご紹介します。 Python 3.4、pytest 2.7.0を前提とします。 pytest-flakes pytest-flakesは、Pythonの文法/コードスタイルチェッカーであるpyflakesをテスト時に実行できるようになるプラグインです。 例えばこのような(全く役に立たない)テストコードがあったとします。 # -*- coding: utf-8 -*- def test(): a = 5 assert 1+2 == 3 これを--flakesオプションを付けてテストを実行すると、未使用の変数があるため、テストが失敗します。 $ py.test --flakes ===================================== te
こんにちは、エンジニアの成田です。 以前のアリのフェロモントレイルに続き、今回も人工知能のシミュレーションを行ってみます。今回は人工生命のアルゴリズムとしてはメジャーであるBoidsを取り上げます。 1.Boids Boidsとは1987年のSIGGRAPHでCraig Reynolds氏が発表した人工生命プログラムで、鳥や魚、陸上動物の群れのような動きを行うオブジェクト(boid)の集合体です。このアルゴリズムの面白いところは各オブジェクトに簡単なルールをいくつか適用するだけで全体が複雑な動きを見せるところです。その意味では前回のアリのフェロモントレイルと同じくBoidsも群知能と言えます。 Reynoldsが群れをシミュレーションするために定義したルールは 衝突の回避…近隣の仲間との衝突を避ける 速度の適合…近隣の仲間の速度に合わせようとする 群れ中心化…近隣の仲間の近くに居ようとする
こんにちわ。 エンジニアブログを担当します乾です。 よろしくお願いします。 最近触る機会があったPUN(Photon Unity Networking)について書きたいと思います。 PUNの特徴は インディー・プロのディベロッパー問わず、誰でも リアルタイムマルチプレイヤーゲームを開発してグローバルに配信可能なところです。 「導入編」 「1:アカウント登録」 ここからメールを送りアカウント登録を行ってください。 登録作業でクーポンの有無を聞かれますが、もっていなくても問題ありません。 「2:アセットのインポート」 AssetStoreを開きPhoton Unity Networking Freeをインポートします。 有料版もありますが、今回は無料版をダウンロードします。 ダウンロードが済んだらインポートしてください。 「3:PUNをセットアップ」 インポート後にウィンドウが表示されるのでS
最近BI(Business Intelligence)ツール巡りをしようと考えている藤岡です。 今回はBIツールの一つである、「re:dash」に触れてみたいと思います。 http://redash.io/ re:dashはPython製かつ、様々なデータストアに対応しており、 クエリを設定しておくとその結果をデータリスト化やグラフプロットしてくれます。 対応データストアは以下の5つです。 BigQuery MySQL PostgreSQL Redshift MongoDB 今回はBigQueryのサンプルデータを可視化してみたいと思います。 動作環境 Ubuntu 14.04.2 LTS上での動作です。 ※ Google Compute EngineのLinux VM上での動作です。 ※ Google Console上でウェブアプリケーションのクライアントIDを作成する必要があります。
今回担当させていただく大橋です。 Unityで、Missing状態のプロパティを検索するエディタ拡張を作ってみました。 よろしくお願いします。 記事の最後に全コードを載せてますので、 とにかくコードを!という方はそちらをどうぞ。 動作確認したUnityのバージョンは5.0です。 なかなか気づかないMissing あるアセットのプロパティに、別のアセットをセットしている場合、 そのセットしているアセット自体が削除されると、Missing状態になります。 例えば、3Dオブジェクトにセットしていたマテリアルを削除すると、 その3Dオブジェクトは全身ピンク色になってしまいます。 このこと自体は特にエラーにならないのですが、 逆にエラーが出ないので、実行してみて初めてピンク色になってることに気づいたり、 最悪、実行してもMissingに気づかないこともあり得ます。 ということで、Missing状態に
今回のエンジニアブログを担当する村田です。 今回はモバイル向けデータベースとして今後熱くなりそうな 「Realm」を触ってみたいと思います。 Realmとは? SQLiteやCoreDataと同じモバイル向けのデータベースです。 エンジン部分はC++で実装されております。 特徴としては iOS(Objective-CとSwiftの両方)とAndroidをサポート SQLiteよりも高速 iOSでの比較 Androidでの比較 Apache 2.0 Licenseの元、オープンソースとして公開 Realmは現在β版としてリリースされており、バージョン1.0に向けて、機能追加・バグの修正などが行われております。β版ということでプロダクトに使う際は、APIが頻繁に変わるものだと心して使う必要がありそうです。 では、iOS版である「Realm Cocoa」に触れてみます。 今回の検証環境は以下のと
今回のエンジニアブログを担当させていただきます、佐藤です。 今回はAndroidで、Viewのキャプチャを撮る→保存→メールに添付ということをやって行こうと思います! ・まずはキャプチャを撮る部分 /** * キャプチャを撮る * @param 撮りたいview * @return 撮ったキャプチャ(Bitmap) */ public Bitmap getViewCapture(View view) { view.setDrawingCacheEnabled(true); // Viewのキャッシュを取得 Bitmap cache = view.getDrawingCache(); Bitmap screenShot = Bitmap.createBitmap(cache); view.setDrawingCacheEnabled(false); return screenShot; }
次のページ
このページを最初にブックマークしてみませんか?
『WonderPlanet Developers’ Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く