オープンデータ活用サービス開発日誌~06~

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。
 早いもので折り返しを過ぎた6回目です。今回はUI周りに手を付けて、プロトタイピングを終わらせにかかろうというところです。
 さて、まず前回の振り返りですが、都内における、だれでもトイレ(多目的トイレとほぼ同義です)の設置場所のオープンデータを利用する方針で、そちらの表示ができるところまでは進みました。ここから、データの見易さとアクセシビリティをなんとかしようという目標のもと、今回の作業に当たりました。
 今回の進捗としては、データの表示方法をカンマ区切りの文章から表へと変更、設備の対応状況によるフィルタリング機能、性別の対応(共用、男性用、女性用の3条件)でのフィルタリング機能の3点があげられます。これによって、比較的ではありますが、見やすい表示ができているのではないかと考えております。また、この方針でもインターン制作物とみれば一定のWebサービスができるのではないでしょうか。
 今回の作業で気になった点は、動作速度の問題です。今回は重要度が低いと思われるデータ項目を削る方向で動作速度の確保を狙いましたが、削っていいデータの量には限度があるので本実装では工夫が必要になると思います。
 今回の作業でプロトタイピングは完了したと考え、次回以降は本実装にあたろうと考えています。本実装ではUIをより一層分かりやすくすることが必要でしょう。それ以外に必要な部分としては、フィルタリングを今より多い条件(地域や利用可能な時間など)で行えるようにすることと、施設名のほかに地域による検索が行えるようにすることがあるでしょうか。
 残り日数は多くないですが、なるべく良いものが作れるように作業を進めていきたいところです。

興味を持たれた方はお気軽にお問い合わせください。

10日間でAndroidゲームネイティブ制作に挑戦(情報受け渡し編)

 こんにちは。星野耀司です。

 前回はゲーム画面のUIを作りましたね。
今回はまずクリア画面を作っていこうと思います。

いつものようにアクティビティを作っていくのですが、今回はタイトルにはありませんが、まずLayoutについて話していこうと思います。

レイアウトはそれを置いておくと、ある程度画面内のアイテムを並べておいてくれるものです。
最初のほうに引用してあったサイトでもレイアウトを使っていたような気がします。
私はクリア画面を作るときにLinearLayoutを使いました。縦にアイテムを設置していってくれるもので、単純な画面を作るのならこれがあれば十分です。
最初に入っているConstraintLayoutはなくてもいいと思います。
これまでDesignを使ってやっていましたが、レイアウトが分かりづらかったり、配置しずらい、プレビューとテスト時のエミュレーターのアイテム配置が異なっているなどの問題があったため、Textでやってみました。
Textは記述することはとても面倒ですが、サンプルなどを見ながら打って、自分に合うように改良していけば段々と覚えていくことができると思います。

 ついでにmarginについて過去に訳が分からなかったと話したと思いますが、隣接してるアイテムとの距離を示すためのものだったようです。Layoutと組み合わせればかなり簡単に配置ができそうでとてもいいものだと思いました。
できればx、yでのやり方も知りたいものですが。

 そしてレイアウトなどを使ってテキストやボタンなどを配置していったのですが、ある問題が発生しました。
今までの画面切り替えの方法のままだと回収した貝の情報が新たなアクティブに行かないため、結果がクリア画面で出せないのです。
情報を持っていくための情報を探したら比較的早く出てきました。
putExtraです。
これは、変数を取り出すためのキーを設定しておいて保持したい情報を格納するものでした。
相手先で情報を得るために、GetExtraをしなけらばなりませんが、たった二文書くだけで一つ分情報を送ることができるのでとても便利に感じました。

 今回はxmlについての知識や画面切り替えに関する新たな知識を得ることができました。
次回はゲームを遊びやすくするためにはどうすればよいかや、追加要素などを検討していきたいと思います。

 ではまた次回

興味を持たれた方はお気軽にお問い合わせください。

cocos2d-x

こんにちは、インターン生の宮本です。

今回は、手札と場の札を合わせてとる処理と山札から引く処理を作成し、
かろうじてプレイできるようになりました。

やはり、実際に動いているのが見れると、より強く作っている実感があります。

また、手札を出し切った後、もう一度タッチすると最初からできるようにしました。

そろそろコードが多くなり、メソッドの実装をすぐに確認するのが難しくなってきました。

constやstaticほどではありませんが今回はコールバック関数に悩まされました。何か所かで使用していますが、未だによくわかっていません。よくわからないままでも最低限は使えてしまいます。

https://qiita.com/keroxp/items/ba15b1ab485b1b11eceb

こちらのサイトを参考にして、
ラムダ式を使ってみようとしましたが、まともに扱うことができませんでした。

今は、完成させることが先決であるため、ラムダ式についてはインターンが終わった後にじっくりと理解を深めていきたいと思っています。

札のオブジェクトを動かすために変数で管理しようとしました。
しかし、タグを使うことでゲーム内のオブジェクトを識別し取得できると知り、さっそく通し番号でタグをつけ、タグで管理することができるようになりました。これで変数を一つ使わずに済みます。

AndroidStudioにも徐々に慣れてきましたが、ほとんどすべての機能を使いこなせていません、オートフォーマットとコメントアウト・デバッグ周りのショートカットは使えるようになりました。まだまだ、便利な機能があるので、そちらも徐々に使いこなせるようになりたいと思います。

C++についてほとんど何も知りませんでしたが、まだ若干時間があるうちに動くところまでたどり着くことができてよかったです。
のこり2日で、ちゃんとこいこいとして遊べるものが完成できるよう頑張ります。

次回は、役の判定をゲーム内に実装し、あがれるようにしたいと思います。

興味を持たれた方はお気軽にお問い合わせください。

アプリの微調整と完成(おすすめバンドランキング少々)

こんにちは!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回で最終日の5日目になります。今日は一枚のHTMLファイルの中にcssとJavaScriptを織り込む作業をして一つのファイルにするところから始めました。結果的にはサインインのHTMLファイルとブロック崩しのHTMLファイルの2つにまとまり、分かりやすい成果物になったと思います。細部の調整はブロックの数から、ボールの速さ等を変え、背景画像のうさぎの数も若干変えました。また、5日間は思ったよりも相当短く、作業が制限されていたため、クオリティーは良いとは言えませんが、とてもためになるインターンシップだと思います。私は今大学2年生ですが、3年生のインターンシップでも募集していたらまた受けたいと思います。今はまだ知識や技術等、まだまだ未熟ではありますが、これから就職に向けて、プログラミング作成とWebの勉強も続けていきたいです。私事ではございますが、神奈川の本厚木に遊びに来た際は、ぜひ、私のバイトしているビックエコーにも遊びに来て下さい。また、呼んでくれたらすぐに駆け付けるのでこれからも宜しくお願い致します。

気難しい話はここまでにして、昨日の続きのバンド紹介をしていきたいと思います。まず最初に、sumikaです。sumikaは私が高校生のころ、ZIPを見て知り、それからはsumikaの曲をよく聞いています。ボーカルの片岡健太さんが9月30日誕生日で9月に関連しているため、お勧めさせてもらいました!バンド名の由来は「住処」から。「本当に好きなものを、好きな人に向けて、たくさん渡せるチームを作れるように」という思いを込めてつけられた。ミニアルバム「「I co Y」」は「憩い」と「I care of You」のダブルミーニング(ウィキペディア引用)だそうです。由来が素晴らしいですね。

次に最近私が聞いているミュージシャンの10人を紹介して終わろうと思います。まず、Official髭男dism、Mrs.GREENAPPLE、Kng Gnuの3組は一番よく聞いていると思います。次にBurnout Syndromes、BLUE ENCOUNT、女王蜂も最近は比較的よく聞いていると思います。後はMy hair is bad、sumika、THE ORAL CIGARETTES、ラップだったらt-aceをたまに聞いています。どの組も個性的な部分はありますが、いい曲ばかりなのでぜひ聞いてみてください。

興味を持たれた方はお気軽にお問い合わせください。

オープンデータ活用サービス開発日誌~05~

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。
 5回目にして、オープンデータを利用する時に何が辛いのか、理解してしまった気分です。どういうことかを今回のテーマにしたいと思います。

 さっそく何が辛いのかという話でございますが、データのフォーマットが違うのです。具体的に言うと、現在利用しているAED設置施設についてのCSVファイル、東京都内でも区ごとにフォーマットが違うのです。例えば、ある区では施設に通し番号を振り、その次に施設名、住所のデータというような順番なのですが、別の区では施設の大分類、小分類の次に施設名、郵便番号、住所・・・という順番です。

 順番が違うと何が困るのか、という話なのですが、端的に言えば複数データをまとめることが難しくなります。これが揃っていれば、例えばA区とB区のデータをまとめたければ、IDの数値さえ増やせばB区のデータをA区のデータの最後に加えるだけで良かったのですが、フォーマットが違うのでは話は別です。それこそ、データを手作業で編集でもすれば、ある程度整ったデータにすることはできます。しかし、これは非常に時間と手間を求められるのであまりやりたくないです。前回触れた改行文字の問題は、仕方なく手作業でフォーマットを整えたのですが、正直もうやりたくないです。

 さて、今回は以前作ったプロトタイプの改良、機能充実にあたりました。結果として、エンターキーでのsubmitの無効化、CSVファイルの変更、それに伴う修正が完了しました。これまでは世田谷区のAED設置場所のデータを利用していましたが、今回、東京都福祉保険局が提供している、だれでもトイレ設置施設のデータを利用したバージョンも作成しました。理由は、複数エリアのAED設置データの統合に難しさを感じたため、都内全体についてのデータを利用して、UIを使いやすくする方針が良いと考えたためです。今後はだれでもトイレのデータを使ったバージョンを中心に開発を進めていき、必要な情報を見やすく提供できるサービスを目標にします。
 
興味を持たれた方はお気軽にお問い合わせください。

10日間でAndroidゲームネイティブ制作に挑戦(UI編)

 こんにちは。星野耀司です。

 前回は画面をタッチすることができるようになるまでの話をしましたね。
今回は画像の移動がどうなったかとUIについての話をしようと思います。

 まず画像の移動についてですが、とても面倒くさい方法で、貝が見切れることはあれど画面外に出ることはほぼ無いようになりました。
簡単に言うと最初にやったことをほぼ繰り返しているようなものです。
様々な座標の表示方法があるのでどれを使えばいいかわからなくなったため、その時の座標をX、Y単位で変数に格納できるものがありました。
getTranslationというものです。
これを使ってまず最初にランダムな位置に配置する前の座標を保存します。
そしてその後前にやったランダム配置を実行します。
ここからタッチをされた場合にSetTranslationというものを使い、変数に格納した座標に一旦画像を移動させます。その後ランダム配置の時と同じ値、変数を使いまた配置するというものです。
もし私と同じように調べ方が下手、調べたけどこのやり方よく分からないという人は、色々考えて、分かっているものだけでどうやってやりたいことができるかを考えたほうがいいかもしれませんね。
それでも知識が不足することは多々ありますが。

 次はUIの話ですね。そもそも私の作っているゲームに必要なUIは二つだけです。スコアと制限時間です。
スコアに関しては、何度もやったxmlからのid取得による方法で弄ることができたため、あらかじめスコアの数字を変数化しておいて、貝をタップした時の処理の最初に変数に数字を足して、xmlに反映させるだけで済みました。
問題は制限時間でした。
timerというものを使うのですが様々な種類と方法があったためどれが適切な方法かで悩みました。
私が使った方法は、CountDownTimerを使って数字を数えて、その数字がゼロになったら処理を終わらせるというものでした。
CountDownTimerは文字通りカウントダウンをしてくれるものなのですが、カウントする時間だけでなく、カウントダウンをどのくらいの周期で行うかのインターバルを設定することもできるものでした。
私は普通にカウントしたかっただけなので使いませんでしたが、どこかで役に立つかもしれませんね。
CountDownTimerに関しては詳しいことは各自で調べて頂けると幸いです。

さて、これでゲームに必要そうな部分は殆ど揃ったといっていいと思います。
あまり時間はありませんが、ここからはバグやエラー取りをして、追加要素やリザルト画面、ストーリーなどに力を入れられたらと思っています。
ただ、もう少しxmlについては勉強をしないとテキスト等の配置がとてもめんどくさいです。うまく配置できる方法を模索したいですね。

 では次回はなにか変化があったところがあればそれについて話したいと思います。
なければここからの構想や、今回のゲームで諦めた点などを話していきたいと思います。

ではまた次回

興味を持たれた方はお気軽にお問い合わせください。

cocos2d-x

こんにちは、未だにAndroidStudioに慣れないインターン生の宮本です。

今回は、手札をタップして選択する処理や、山札などのベクター設定、指定の札が場にあるか、などの処理を作成しました。

今回の作業は、ゲームの内部ばかりだったため、目に見える成果がなかなか出ずどのくらい進んでいるのか見当もつきません。

そのため今回は、使用中のベクターについて紹介しようと思います。
C++のプログラム内で配列を扱うときは、多くの場合コンテナのベクターかリストを使うことになると思います。
C言語では配列を使用する際、基本的には最初に使用する領域を全て確保しておかないといけませんが、これらはプログラム中で必要に応じてメモリを確保してくれます。
また、対応するライブラリをインクルードする必要があります。

ベクターとリストは似ていますが、構造が違うため得意なこと(処理が速い機能)が違います。

ベクターは添え字で指定するアクセス(ランダムアクセス)が高速で末尾以外への要素の追加がやや遅く、
リストは途中の項目の追加や削除が高速で添え字指定でのアクセスはできず先頭からたどっていくしかありません。

また、ベクターは動的配列と呼ばれるほど構造が配列と似ていて配列の延長のような形で使用できるため、CからC++を始めた多くの人が最初に扱うコンテナだと思います。

ベクターを使用するときは
#include
を最初に記述し、
std::vector<型名> 変数名;
で宣言します。

型名の部分はクラスでも大丈夫です。

ベクターに値を追加するときは、基本push_backメソッドで末尾に追加します。
値を削除するときも同様に、pop_backメソッドで末尾から削除します。
メソッド名の由来はデータ構造のスタックにおける項目の追加と削除だと思います。
もちろん任意の場所に対して挿入・削除することも可能です。ただし、任意の場所への挿入・削除は、空いた項目分を詰める処理が入るため要素数が多いほど時間がかかります。

配列と同じように扱えるため、ベクターはC++の経験がほとんどない私でも簡単に扱うことができました。

10日間もあっという間であと3日しかありませんが、ゲームを完成させられるよう頑張りたいと思います。

次回こそ、動く状態にしたいと思っています。

興味を持たれた方はお気軽にお問い合わせください。

7日でゲームを作ろう!7

こんにちは、インターンシップ生の松本です。前回はクリア、ゲームオーバー、タイトルの画面とステージの作成をやっていきました。

今回は最後になるので、全体の確認と今までできなかったことに再挑戦したいと思います。

今回作ってきたゲームの流れは、

1,向かってくる燃えるスイカたちを避け

2,白いゴールラインまで行き、

3,巨大スイカを破壊してクリア

といった感じです。

実際にやってみて、流れとしてはちゃんと正確に動きました。

ゲームとしてちゃんと面白くなっているかどうかは少し難しいところですが...

次は、できなかったことを調べてもう一度やり直してみようと思います。

今までできなかったことは、

・スイカを実際に割ること

・アニメーションに合わせて攻撃判定をつけること

の二つです。

いろいろな方法を調べてみたところ、スイカを割ることができそうな方法を見つけました。その方法は”Distructible Mesh”という機能を使ったものです。これはUE4のプラグインにあり、有効にすると触れるといくつかの破片になって壊れるようなものを作ることができます。

まず最初にプラグインを有効にします。セッティングのプラグインというところから設定することができます。有効にしたら”今すぐ再起動”と下に出ているのでそれをクリックして再起動します。準備はこれで完了です。

あとは、動きをさせたいスケルタルメッシュを右クリックしてCreate Destructible Meshをクリックすることで新しくDestructible Meshができ、そのエディタ画面が開きます。そしてEnable Impact Damageにチェックを入れると触れたときに破壊されていくつかの破片に分かれるようになります。

参考元:http://historia.co.jp/archives/8021/

攻撃判定についてはなかなかいい方法が見つからなかった為、今のままでいきます。

さて今回までインターンシップでの7日間で作るゲーム作成を記事にしていきましたが、いかがでしたでしょうか。拙い文章で分かりにくいところばかりだったと思いますが、読んでいただいた方、動画を見ていただいた方、ありがとうございます。

何とかゲームも完成とすることができました。自分の理解力や応用力が至らず、諦めてしまったことも多々ありましたが、ここまで作ることができてうれしく思っています。これからまたゲームを作るとき、今回のインターンシップで身に着けたことを思いだし、その時は後悔することのないように作っていきたいと思います。

興味を持たれた方はお気軽にお問い合わせください。

アプリの微調整と変更(アイビーカラーとバンド紹介少々)

こんにちは!

こんにちは!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回は4日目になります。検索フォームを作っていたのですが、なかなかうまくいかず、サインインの画面から飛ばすように設定を変えました!実はそのサインインの画面はフェイクで名前などを入れても特に意味はなく、ココと書いてあるボタンを押すと、ブロック崩しの画面になるようになっています。後は背景を十五夜のウサギに変え、(イラストやの画像です)見栄えを良くしたつもりです。

明日はいよいよ最終日なので、細部に注目してプログラミング作成を行い、悔いの内容で終われたらいいなと思います。また、私は副業でpythonを使ったブログ作成をしたいと思っていましたが、記事、動画の作成がいかに大変かわかったので、もっとしっかり知識を付けてから、副業のほうにも力を入れていきたいと思います。

ところで、明日で記事、動画作成が終わりますが、私的には比較的自由に作れたと感じます。とはいってもテーマが9月なのに様々な歌手を無理やり紹介しているので多少反省する部分ではあります。ですが、明日までは色んな人を紹介できればと思っています。そうしましたら、本日紹介したい方々が「アイビーカラー」です。アイビーカラーというグループはあまりメジャーではないですが、私がYouTubeを見ているとき、偶然発見したバンドです。どこが9月についてなのかというとこれまた9月に、最初のミニアルバム「君が思い出になる頃」を発売したというところです。一応9月と関係あるのでぜひ、気になったら調べてみてください。さらに、終わりが近いので明日も合わせ、合計二回に分けて最近聞いているバンドを紹介したいと思います。上げだしたらきりがないので、軽く紹介する程度にしておきます。まず、Mrs.GREENAPPLEです。(以下、ミセス)ミセスは、炎炎の消防隊(えんえんのしょうぼうたい)というアニメの主題歌を担当し、「lovin’」という歌も最近YouTubeで公開されていたので紹介しました。ミセスは誰にでも人気があると思うので、知っている人でももう一度聞いてみてください。次に、Official髭男dismです。(以下、髭男)髭男は最近ますます人気が出てきて、甲子園の主題歌も担当していたので、今きているバンドの一つです。そろそろ長くなるので明日にしますが、まだまだ紹介したいバンドがたくさんあります。なので皆さんもお気に入りのバンドをさがしてみてはいかかでしょうか。

興味を持たれた方はお気軽にお問い合わせください。

オープンデータ活用サービス開発日誌~04~

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。

 折り返しが見えてきた4回目は、やっと進捗らしい進捗がご報告できそうです。今回は進捗報告と今後の課題や実装したい機能をまとめて開発日誌としたい所存です。

 さて、前回決定できたのは、「AEDの設置施設や多目的トイレの設置施設のデータを利用して、なんらかのWEBサービスを作ろう」という大まかなテーマです。今回はこの方針に基づいて、プロトタイプを制作しました。このプロトタイプでは、世田谷区が提供するAED設置施設のデータについて、施設名に特定の文字列を含むデータセットを取り出す機能を実装しました。使用言語はHTMLとJavaScriptです。制作したとはいえプロトタイプなので、使い勝手は悪いです。施設名検索しかできず、データも文字列で表示されるので、見栄えが悪いです。この点は今後改良をしたいところです。

 今回の作業中に苦戦したのは、CSVデータの取り扱いです。改行をデータ列の区切りとして利用していたのですが、想定外の位置に開業文字が来ることがあり、この部分の対策は未完成です。手動で前処理するのは出来る限りやりたくないです。

 今後追加したい機能は、より詳細な検索機能とソート機能、最終的に達成したいのは、複数の都市のデータから、AEDと多目的トイレを同じページから検索できるようにしたいです。自分の技量を顧みずに理想を言えば、緯度と経度のデータを利用して、地図上に表示したいものです。

 前回は一切手を付けられなかった実装に、今回はある程度取り組めたのは中々良い滑り出しではないでしょうか。不安な点を挙げると、実装にかまけて要件定義が甘いことでしょうか。文字に起こしてみると、絶対に失敗しそうな開発やってるなぁとしみじみしております。

 次回の課題としては、追加機能や可読性を向上したバージョン2を開発することに加えて、要件定義をしっかり行うことですかね。

興味を持たれた方はお気軽にお問い合わせください。