head_hexagonはにらぼ☆てっくtale_hexagon

ハニカムラボスタッフたちによる、研究・実験・日常風景・自慢・苦悩・妄想・夢・希望、いろんなものが詰まった日常ログ。

新人kusanagiのslack bot

初めまして新入社員のkusanagiです。
自己紹介はスタッフ紹介欄をみてください!
年末に髪の毛を切りました。 最近、我が家の連絡手段をslackに切り替えました。
そこでslackのbotを趣味で作ってみたので流れを紹介したいと思います。
まず参照したサイトはこちら。
https://moneyforward.com/engineers_blog/2015/02/18/slack-timer/ (rubyで簡単に時報botが作れます) このサイトを見て作ってみました。
slack-apiのサイトからトークンを持ってくるだけであとはコピペで動作を確認しました!
rubyバージョンは2.3.1でした!
これで毎日slackのbotが励ましてくれます。 しかし、家族にうるさいと言われたのでもっと必要なbotに育てようと思いました。
とりあえず天気予報は必要かなと思い、livedoorの天気apiを使ってみました!
http://weather.livedoor.com/forecast/webservice/json/v1?city=400040
(このアドレスは福岡県・久留米の天気です) サイトには地点のコードがあるので自分の知りたい地点の番号をcity=400040
のように書けば情報が飛んできます。 我が家は毎日22時に翌日の天気予報を教えてくれます。
以外と好評ですが、
22時にパソコンがネット環境にないといけないみたいで
教えてくれるときと、教えてくれない時があります。 ↓こんな感じです!

Posted by KusanagiTakaya on 2017/01/11 under Development

ブログ画像

HoloLens待機なう

めちゃくちゃ久しぶりに投稿します、ハニラボインターンのふじです。(もう私しかインタン生いなくなっちゃった・・・) もうすぐはにらぼにHoloLensがくるぞーー!ということで、今回はUnityプロジェクトをHoloLens用にビルドする環境を整える方法を紹介したいと思います。いろいろググったら出てくるのですけども、HoloLensが出た当初から微妙にかわっているところもあったので、2016/07末現在の模様をお伝えします。詰まったところも何か所かあったのでメモも兼ねて残しておこうと思います。 (さらに…)

Posted by fuji on 2016/07/27 under Development, HoloLens, misc

ブログ画像

【Photoshop】デザインスペース機能で画像を切り出す

こんにちは。rihokです。 最近Photoshopの「デザインスペース」を使用してちょこちょこ画像を切り出してます。 6月にプレビューとして新しくPhotoshopに搭載されたばかりでまだ限られた機能だけみたいですが
今のバージョンで個人的に重宝しているのは書き出しパネルからの書き出しです。 デザインスペースについては以下のAdobeのサイトをご覧ください。
[レイヤーパネルを閉じたままデザイン作業できるPhotoshopの新しいワークスペース「デザインスペース」のベータ版まもなく登場]
(さらに…)

Posted by rihok on 2016/07/09 under Development

ブログ画像

【Cocos2d-xアプリをUWPへ移植③】Windowsで実行時に落ちる問題を調べる

こんにちは、kiyokazkです。 前回の最後に発生した、実行は無事にできたけど、アイテムを取った瞬間に落ちる問題について、何が起こっているのかを調べました。 ポインタ変数の未初期化 これはcocos2dとか関係なく、初歩的なミス(?)で、ポインタ変数が未初期化なものがありました。
ミス(?)としたのは、元のプロジェクトがiOS用で、Objective-Cでは言語仕様として”未初期化変数はnilもしくは0になる”というのがあるため、それで問題がなかったからなんですが、クロスプラットフォームにする前提なのであればここはちゃんと(お作法的にも)NULLで初期化しているべきでした。
VisualStudioのデバッグビルドでは未初期化のメモリは0xcdcdcdcdになってるので比較的気づきやすいバグですね。久しぶりに0xcdcdcdcdを見ました。
これについては、ちゃんとポインタ変数をNULLで初期化することでOK。 Vectorの要素削除の挙動の違い これは若干の落とし穴でした。
Vector配列の要素をループ内で削除するときには要素数が変わるのでループを逆向きに回すのが定石ですが、Cocos2d-xのVectorの実装で、iOSとWindowsで若干の挙動の違いがあるようで、それに伴って問題が出ていました。 元々のコード: for(auto itr = m_enemies.rbegin(); itr != m_enemies.rend(); itr++) { EnemyObject *enemy = *itr; //死んでる? if(enemy->isDie()) { //配列から削除 m_enemies.eraseObject(enemy); } } 普通にm_enemiesをrbegin()で逆向きに回して、該当する要素を削除していました。 Windows実装だとeraseObject()後のVectorのループの挙動が少し変わっているようで(削除後にitrが指すものを続けてループで回せない)、以下のように書き換えました。 for (auto itr = m_enemies.rbegin(); itr != m_enemies.rend(); ) { EnemyObject *enemy = *itr; //死んでる? if (enemy->isDie()) { //配列から削除 m_enemies.eraseObject(enemy); itr = m_enemies.rbegin(); } else itr++; } 通常時は普通にitrのインクリメント、eraseObject()を行なった後はrbegin()を呼び直す、みたいな感じです。
これでループでの要素削除が意図通りに動作するようになりました。 これで一通りWindows環境に移植するという面ではひとまずできたので、次回からはいよいよWindowsストアアプリ、ユニバーサルアプリとしての対応について進めます。

Posted by kiyokazk on 2016/05/16 under Development

【Cocos2d-xアプリをUWPへ移植②】元ネタアプリをWindowsでビルド

こんにちは、kiyokazkです。 前回は、Cocos2d-xの新規プロジェクト作成時にできるサンプルプロジェクトをVisual Studioでビルド&実行するところまでできました。この調子で行けば対象のゲームアプリもさくっとビルド&実行できてしまうんじゃないかと思ってしまうくらい簡単(ただコピーしてWindowsに持ってきただけ)でした。 移植元ネタアプリのプロジェクトでレッツトライ さて次はいよいよ移植元ネタアプリのプロジェクトを持ってきてみます。
既存の元ネタプロジェクトにもproj.win8.1-universalフォルダが自動的に出来ていて、その中にソリューションファイルが入っているので開きます。ただ、このままの状態だとソリューションの中に必要なファイル(自分のアプリ用に追加している各ソースファイル)がない状態なので、Classesフォルダに対象となるソースファイルを追加します。Classesフォルダはすでにあるので、対象ファイルをドラッグ&ドロップでOKです。 さて、この状態でビルドすれば上手くいけば動くはずですが・・・実際にビルドしてみるとやはりたくさんのビルドエラーが出ました。
というわけで、次はこれらのビルドエラーをひとつずつ対処していきましょう。 ビルドエラーに対処 ■AudioEngineがない 今回の移植元アプリのcocos2d-xのバージョンは3.4なんですが、どうもVisualStudioのソリューションにはAudioEngineが入ってないみたいです。ソリューションに追加してみようといろいろやってみましたが、どうもうまくビルドできないので今回はAudioEngineを使わない方向で行くことにします(上手く追加できたとしてもこのバージョンではWindows側の実装がアヤシイ気もするし)。 移植元プロジェクトでは、Audio関係はAudioManagerというクラスにまとめているので、その中でAudioEngineを使わないようにするだけでいけそうです。いずれは、cocos2d-xのバージョン2の時代からあったSimpleAudioEngineというクラスを使用する形に書き換えようかなと思いますが、とりあえずはバッサリとカットしておきましょう。 ソースは別のプラットフォームでも共用できるようにちゃんとプラットフォームごとのdefineを使って切り分けます。
プラットフォームごとのdefineはCCPlatformConfig.hに定義されていて、今回のWindows版は以下が有効になってるようです。 #define CC_PLATFORM_WP8 13 #define CC_PLATFORM_WINRT 14 なので、こんな形でWindows版ではとりあえず何もしないようにしちゃいます。 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) //Windows版では何もしない int AudioManager::play(std::string file) { return 0; } #else //AudioEngineを使って音を鳴らす int AudioManager::play(std::string file) { return AudioEngine::play2d(file); } #endif ■改行コード 移植元アプリのソースファイル、ヘッダファイルは改行コードがCR+LFではないので、//コメントの次の行も改行されず軒並みコメントとみなされてしまってエラーが出ているので、エラーが出ているファイルの改行コードを変更します(全部のファイルを変えてしまう方が今後を考えると良いと思います)。 具体的な変更箇所は、 ファイル→保存オプションの詳細設定から、「現在の設定」を「CR LF」に変更 でOKです。 ■その他 あとは、元々はiOS用にしかビルドしてなかったので、ランダム関数にarc4random()を使っていました。が、これはiOSにしかないので、使っている部分をrand()に置き換えます。今後のことを考えると、ランダム関数をプラットフォームdefineで切り替わるようにしておくと良いと思います。 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) int randValue = rand() % 4 + 1; #else int randValue = arc4random() % 4 + 1; #endif ビルドが通った! 上記もろもろを修正して、ドキドキしながらビルドしてみると無事にビルドが通りました!あーんど、ワクテカしながら実行すると…実行できました!ちゃんとタイトル画面が表示されて、クリックするとゲームが始まります。
・・・が、アイテムを取った瞬間、見事にアプリが落ちます。
ということで、次回はここの部分を追求してみたいと思います。

Posted by kiyokazk on 2016/04/20 under Development

【Cocos2d-xアプリをUWPへ移植①】元ネタアプリの準備と環境構築

こんにちは、kiyokazkです。 さて、勝手に”連載”としちゃいましたが、Surface Pro 4も借りたことだし、マイクロソフトからの依頼である「Cocos2d-xアプリを色々と調べながらUWPへ移植」について実際に進めていくことにしましょう。進める方針としては前回の最後に決めた方向でいきます。 そもそもUWPってなんなのさ? ここまでさらっと「UWPへ移植」って書いてきましたが、そもそもUWPってなんなんでしょうか。
ちゃんとした説明はWindowsデベロッパーセンターの該当記事に任せるとして、UWPとは”ユニバーサルWindowsプラットフォーム”の略で、Windows 8で初めて導入された、ユーザーがすべてのデバイスで便利にアプリを使うための考え方をサポートするプラットフォームのことのようです。 うーん、分かるような分からないような、イマイチすっきりとはしない感じは残りつつも、すごく大雑把に簡潔に言うと、「Windowsストアで配布されてて、PCとかモバイルとかのWindows 10環境で同じアプリが使えるような仕組み」みたいな考え方でいいのかな。少なくともWindows 10のコアAPIとかアプリパッケージの概念を使うことで、PCだろうがモバイルだろうが動作するアプリをWindowsストアで配布することができるみたい(つまり逆に言うと、PCでもモバイルでもちゃんと動作するようにしないと申請に通らないということなんでしょう)。この”Windowsストアで配布するアプリ”というのを当面の目標とすることにしましょう。 移植元ネタとなるゲームアプリ さて、今回移植の元ネタとなるCocos2d-xアプリですが、昔、練習用に作ってみたシンプルなゲームアプリを掘り起こして使ってみることにします。当時iOS用に作ったアプリだったので、ひとまずMac+Xcodeでビルドして動作するところまで確認してみました。 よかった、ちゃんと最新のXcodeでもビルド&実行できました。
こんな感じの強制スクロール系横スクロールアクションゲームです。ひたすらゴールを目指して敵を避けつつ進みます。 まずはこのシンプルなゲームアプリをWindowsで動作させることを目指します。 プロジェクトファイルと開発環境の構築 次にWindows側の準備をしましょう。 Cocos2d-xプロジェクトファイル Cocos2d-xはプロジェクト内にCocos2d-x自体のソースコードを全部持っているので、特にCocos2dのインストールとかはしなくて大丈夫そうです。Cocos2d-xでプロジェクトを作成すると、いろんなプラットフォーム向けのプロジェクトファイル(Xcode用のプロジェクトファイルとか、Visual Studio用のソリューションファイルとか)が自動的に作られるので、Macで作成したCocos2d-xプロジェクトをそのまま持ってきて使うことにします。 ビルド&実行環境 UWPアプリを作成するためのビルド&実行環境としてはVisual Studioが必要です。無料のVisual Studio Community 2015で問題ないのでこちらをインストールすることにしましょう。
Visual Studio Communityページ まずは空のサンプルプロジェクトで実験 開発環境が準備できたら、まずはCocos2d-xで新規プロジェクト作成時に作られる(ほぼ)空っぽのサンプルプロジェクトを使って試してみましょう。 iOS版はこんな感じです。いわゆるHello Worldですね。新規プロジェクトを作って動かしただけなので当然特に問題もなく動きました。 さていよいよWindowsです。このプロジェクトファイルをまるごとコピーして持ってきて、とりあえずproj.win8.1-universalフォルダにあるソリューションファイルを開きます。ちゃんと開けたらそのままビルドして実行! なんかウインドウサイズは違いますが、そのままでビルドして実行までできました! 移植と大げさに言ってたけど、対象のゲームアプリについてもやってみたらそのまますんなりいけてしまうかも…?
と言ったところで、今回はここまでにします。

Posted by kiyokazk on 2016/04/10 under Development

【プロローグ編】Cocos2d-xアプリをWindowsプラットフォームへ移植しよう

こんにちは、kiyokazkです。 Windows 10、使ってますか?僕は使ってないです(基本Macなので)。 でも、周りの意見とか聞くと、Windows8系がちゃんと進化してるみたいでWindows 8.1より10の方が使いやすいって話もちらほらありますね。僕は完全にMac派かというとそうでもなく、「XcodeがあるのでMacを使ってるけど基本どっちでもいい派」だったりします。最近では、Unityで開発をするときにはWindowsを選択することが多いので(やっぱりVisual Studioが強力すぎる)、近いうちにWindowsを10にしてもいいかな〜と思ってました。 マイクロソフトからの相談 そんなことを考えていた昨今、マイクロソフトのエヴァンジェリストチームの方から相談があるのですがと連絡がありました。内容を聞いてみるとWindows10プラットフォームを広げていくための内容のひとつとしてWindows 10で遊べるゲームアプリを増やしたいという相談です。さらに掘り下げて話を聞いてみると、最初頭をよぎった「つまりWindows向けにゲームアプリを作ってほしい」という相談ではなく、「Windows向けのゲームアプリを作る人を増やしたい」という話でした。もう少し具体的に言うと、UnityはVisual Studioとの連携もあるなどアプリ開発プラットフォームとしては確立できてきた、でもcocos2d-xではまだまだ → cocos2d-xでもちゃんと開発できるんだよということを広めたい=間口を増やしたい、という内容でした。 ただ僕は先に書いたように、どうやらWindows 10って結構いいみたいね〜、とか言っているくらい最近のWindows事情には詳しくなく、Windowsのアプリってストアアプリって言うんだよね?え、UWPアプリって何?っていう状態なんですよね(ちなみに、Universal Windows Platform(=UWP)というのがWindows10のコアで、デスクトップもモバイルもそれぞれのWindowsの一部がUWPであると呼べるもののようです)。
でも、UWPアプリについては知らなくても、cocos2d-xについてはそれなりにさくっと簡単なサンプルゲームを作ったりすることをできるくらいは使えるので、「実際にcocos2d-xを使ってゲームを作っている(リリースしている)人が、UWPアプリについてを学びながら実際に移植を行い、その中で簡単だったねという点とか、逆にここはハマりポイントだった&解決するためにしたこと等を、実際に奮闘しながらその流れを記事にしていく」という形で、古巣でもあるマイクロソフトに一肌脱ぐことにしました! ちなみに、個人的にはWindows 10プラットフォームはがんばってほしいと思ってるので、微力ではあるけどその応援ができることと、最近のWindows上での開発はなにやら楽しそうだという好奇心も存分に動機に含まれてたりします。 ただUWPとは何か?という話についてはまったくズブの素人なので、そのあたりの解説については他の人達にお任せしつつ、UWPアプリに詳しくなりつつ開発の仕方を学んでいくという視点で、あれやこれやをお伝えしていければなと思ってます。 ということでプロローグ編でした。
今後は大まかに以下の様な方針で進めていこうかなと思っています。 今後の方針 1. Cocos2d-xを使って簡単なサンプルゲームを作る。iOSデバイスで動かしましたってところまでやる。(実際にiOSでアプリをリリースしてる人がちょっとでもUWPアプリへの移植のイメージをしやすいように)
2. Windows上でCocos2d-xをビルドするために必要な物は何かを調べて、ビルド環境を構築する。
3. 1.で作ったサンプルゲームをWindows上でビルド→Windowsアプリとして動く状態にしてみる(ここがまず1つ目のハードルかな?)
4. Windowsアプリとして動かせるところまでできたら、次にUWPアプリにするために何が必要かを調べつつ、UWPアプリ申請までの流れをトライしてみる
5. UWPアプリへの流れが大体分かったら、次に移植のネックになりそうな部分をひとつずつトライ&エラーで方法を知る。具体的にはCocos2d-xのクロスプラットフォームでネックになりそうな、アプリ内課金、広告の組み込み、SNS(Facebook/Twitter)連携、等の、プラットフォームごと(iOSならiOSの、AndroidならAndroid)の実装が必要な部分。これらをサンプルゲームに組み込んで、それを移植という形でトライ、具体的な方法とかハマリポイントを紹介。(実際にリリースしているものを移植するためにはこの部分が一番大きいと思うし、これが2つ目の大きなハードルかなと思います。) とりあえずはWindows用の開発マシンとしてSurface Pro 4をマイクロソフトさまに借りたのでこれをつかって進めていきます!

Posted by kiyokazk on 2016/03/31 under Development

ブログ画像

Flash->HTML5Canvas アンチエイリアスが解除できないときの解消法

こんにちは。rihokです。 FlashでHTML5Canvasをパブリッシュすると、自動的に画像にアンチエイリアスがかかる場合があります。
それがいい場合もあるのですが、テキストを画像で配置している場合などは、アンチエイリアスを解消するために
 オブジェクトの配置をキリのいい数値にする
 オブジェクトのサイズをキリのいい数値にする
 オブジェクトの拡大/縮小でも小数点が入ってしまうのでキリのいい数値にする
という対応を入れるとだいたいの場合は解決するのですが、それでもダメなパターンがありました。 上の3つは対応した上で問題を探っていくと
 1)flaファイルの、あるレイヤーを消すとアンチエイリアスが解消する
 2)1で消したレイヤーを戻して、他のレイヤーを消してもアンチエイリアスが解消する
 3)1と2のレイヤーが両方ある時だけアンチエイリアスがかかってしまう
という状態に。どこか固定のレイヤーが悪さしているわけではなさそうです。 その2つのレイヤーが「両方共存している」ことでアンチエイリアスがかかっていました。
途方に暮れていろいろ考えていたのですが、1と2のレイヤーで使用する画像をスプライトシート上で切り離したら
アンチエイリアスがかからなくなるのでは?と思いつき、実際に試してみることに。 パブリッシュ設定のアセット書き出しオプションのイメージの下にある「スプレッドシートの最大サイズ」の設定は
もともとデフォルトの設定にしていたのですが、問題の2つのレイヤーが離ればなれになるように
最大サイズを小さく設定してパブリッシュしてみたところ、うまくいきました。
ようやくアンチエイリアスがかからなくなりました。 スプライトシート化された時に、なんらかの配置ズレが置きているのでしょうか。
もっといい方法があってほしいものなのですが、ひとまずはこの方法で解消しました。 Flash Professional CC 2015になって、特に意識せずに
リソースを一気にスプライトシート化してくれるのは便利なのですが、こういう時はドキドキします。 ちなみに、スプライトシートの最大サイズを設定する項目が「スプレッドシートの最大サイズ」となっているのはなぜなんでしょう…

Posted by rihok on 2015/11/27 under Development

社内バーベキューで歓迎会!

こんにちは、kiyokazkです。 先日、またまたエンジニアがハニカムラボにジョインしました。
ということで何はともあれ歓迎会! せっかく広いテラスがあるのに、火を焚いちゃいけない…ということだったので、いままでバーベキュー的なことは諦めてましたが、そうだホットプレートがあるじゃないか!!ということで、テラス部分+天窓エリアを使って室内バーベキューをすることにしました。 (さらに…)

Posted by kiyokazk on 2015/11/11 under misc

ブログ画像

fabricであるroleに対してそれぞれ別の引数を渡して何かを実行したい場合

kasugaです。 fabric便利ですね。
スマホのTwitter用のではないです。
http://fabric.io/ python製のサーバDeploy系のこっちです。
http://www.fabfile.org/ (さらに…)

Posted by kasuga on 2015/09/02 under server

« previous next »