2018年3月10日土曜日

The support page for _99Taps_ Game App

The support page for _99Taps_ Game App

common_icon.png

About this page

This page is supporting for “99Taps” game app.
If you have questions or found a bug, please contact me using Twitter or below the comment.

App URL

iOS 版・・・https://apple.co/2oXupSN

How to play

  1. Create new a room.
  2. Share room ID to other players.
  3. When you are ready tap the Ready button.
  4. Start the multiplayer’s game.

You try to tap enemies 99 times as quickly as anyone else.
By tapping the player’s number you can bother other player (8 times) !

Privacy Policy

About Advertising ID

IoT Gateway for BLE uses Admob to deliver advertisements. Therefore, identification information called advertising ID is used. In this app, the ad ID is mainly used for delivering ads and collecting information with Analytics using Firebase. It is not used as the main function of this application. Collected data is collected in the cloud and strictly managed. It is not collected by personally managed databases or servers. Please see the following for the privacy policy of each cloud service.

Learn more about Admob’s privacy policy.
Learn more about Firebase Analytics’ privacy policy.

Release Note

v1.11

Updated features and fixed bugs.

v1.10

Disabled the splash screen.

v1.9

Update game user interfaces.

v1.8

Bug fixed.

v1.7

  • Set a giveup button.
  • End the game after 60 seconds.
  • An indicator is displayed when creating a room.

v1.6

Optimized display size for iPhoneX, Xs, XsMax, XR.

v1.5

Bug fixed.

v1.4

I improved UXs in game.

  1. Target color changes when tapping.
  2. I increased the font of score and time.

v1.3

A new feature.

  1. You can join the random room from “Join” button.

v1.2

Three new features.

  1. You can receive push notifications when Random match starts.
  2. You can also toggle ON/OFF whether received push notifications.
  3. Sounds when the player joins the room.

v1.1

Five new features.

  1. Random match now available.
  2. Modified a logic of room creation.
  3. You can’t join a room during playing the game.
  4. During the game, the name label color will be changed according to the score.
  5. You can show the game history in chronological order.

v1.0

Released App !

2018年3月9日金曜日

The support page for "IoT Gateway for BLE" App

The support page for "IoT Gateway for BLE" App

gateway_icon.png

About this page

This page is supporting for “IoT Gateway for BLE” app.
If you have questions or found a bug, please contact me using Twitter or below the comment.

App URL

iOS 版・・・http://apple.co/1Ytn48L
Android 版・・・No support

Getting Started

How to use it (Documents)

Same, but English only ver. (Github)

How to use it (Demo Videos)

  • With SensorTag CC2650 + MQTT Channel
  • With BLESerial2 + MQTT Channel

Privacy Policy

About Advertising ID

IoT Gateway for BLE uses Admob to deliver advertisements. Therefore, identification information called advertising ID is used. In this app, the ad ID is mainly used for delivering ads and collecting information with Analytics using Firebase. It is not used as the main function of this application. Collected data is collected in the cloud and strictly managed. It is not collected by personally managed databases or servers. Please see the following for the privacy policy of each cloud service.

Learn more about Admob’s privacy policy.
Learn more about Firebase Analytics’ privacy policy.

Release Note

v1.18

Update libraries and UI tweaks.

v1.17

Fixed the contents of the debug log when starting the gateway. Don’t show duplicate advertisement uuids.

v1.16

Updated an app privacy policy.

v1.15

Updated dependency packages.

v1.14

I added dark mode feature and fixed bugs and adjusted ui details.

v1.13

Changed app title on your phone.
Convert to swift4.

v1.12

Simple brushed up.

v1.11

Deleted unused library.

v1.10

Could be advertised in a part of pages.

v1.9

Could be shown the password in MQTT channel.
Any features brushed up and bug fixed.

v1.8

Update features for MQTT channel.

  1. Could be send a raw value which is formed hex string value.
  2. Could be send first bytes when connected to the MQTT broker.

v1.7

Added a function of copy mode for existing channels.
Fix bugs.

v1.6

Added a link of Documents.

v1.5

Added a new channel type of MODE and Webhook

v1.4

Added a new device mode “Non Device”

v1.3

Add a channel type of Slack

v1.2

Fix a logic to decide whether notify
Fix bugs

v1.1

Show the type of properties in characteristics list

v1.0

Released App !

2018年1月30日火曜日

2段階認証を設定した端末が破損したせいで Google アカウントがロックアウトされてしまった

概要

予期せぬことでメインで使っていた iPhone5 がぶっ壊れてしまい別のスマホに乗り換えようとしました
Google アカウントは 2 段階認証を設定しており 2 段階認証に Authenticator アプリを使っていました
iPhone5 が壊れてしまったせいで Authenticator アプリが起動できず 2 段階認証用のコードが取得できずログインできない状態になってしまいました
いろいろと試して何とか Google さんに 2 段階認証の機能を無効にしてもらえたのでその方法を紹介したいと思います

環境

  • iPhone5 + Google Authenticator アプリ

Google の設定

Google の 2 段階認証の設定はメインが Authenticator アプリにしていました
Google の場合 2 段階目の要素はいろいろとあり他には電話番号による SMS 認証やバックアップコードによる認証があります

自分の場合有効にしていたのが

  • Authenticator アプリによる認証
  • バックアップコードによる認証

の 2 つだけでした
しかもバックアップコードをちゃんとメモしておらず今回の状況に陥りました
なので本来であればバックアップコードをちゃんと取得しておけば問題なく 2 段階認証を通過できていたことになります

また、2 段階認証では使っていませんでしたが「電話番号」と「予備のメールアドレス」は設定している状態でした
結果的にこれが 2 段階認証を解除できた決めてになったかもしれません

どうやって 2 段階認証を解除したか

パスワード再設定リクエストを Google に送る

2 段階認証ができないのでログイン画面をいろいろと探していたら「その他の方法」というのがあり、そこから Google のサポートに問い合わせをしてログインできるようになる方法があったのでそれを使いました

内容としてはいろいろと本人確認するための質問をされます
それら質問に答えた後、数営業日後に Google から連絡がきて本人確認できれば無事解除という流れになります
質問される内容は人それぞれのようですが自分の場合以下の 3 つの質問をされました

  • セキュリティ保護用の質問の回答は?
  • Google のアカウント作成日は?
  • 再設定用のメールアドレスに送られた PIN コードは?

1 つ目は Google アカウントに謎の秘密のキーワードを設定していたようでカンで入れたら正解しました
2 つ目のアカウント作成日はまだ Gmail にログインできるセッションが残ったマシンあったので Gmail の一番初めのメールが届いた日付を入力しました
そして 3 つ目は Google アカウントに紐付いた予備のアドレスに 6 桁の PIN コードが送られそこに記載されているコードを入力しました

この 3 つの質問に答えて Google に問い合わせたのが 2018/1/28 で問い合わせが完了すると Gmail に「Google アカウントのパスワード再設定リクエスト」というメールが届きました
google_2auth1.png

当然ですがこの段階ではまだ 2 段階認証は解除されていません

連絡が届いてパスワードを再設定する

自分の場合 2 営業日後の夕方 2018/01/30 に以下のようなメールが Google から届きました
google_2auth2.png

ここのログインを選択するとパスワードを再設定する画面に遷移するので再設定しましょう
どうやらパスワードは必ず再設定しなければいけないようです
ここで注意が必要なのですがパスワードが変わるので Chrome など Google ログインしていたものが一度ログアウト状態になります
再度認証しないと使えないので注意してください

無事 2 段階認証解除

パスワードの変更に成功すると以下の画面になり 2 段階認証も解除されます
google_2auth3.png

最後に

メイン端末が壊れてしまい Authenticator アプリが起動できず Google でロックアウト状態になってしまいましたが何とかアカウントが復旧できたのでよかったです

Google の Authenticator アプリは 1 台の端末でしか有効にできないのが辛いなと思いました
別の iPhone がありそっちにも Authenticator アプリはインストールされていたのですがそっちに表示される PIN コードは使えない状態になっていました
メインを iPhone5 に変えそのときに Authenticator アプリもインストールしたのですがその段階で有効な Authenticator アプリは iPhone5 だけになってしまったようです

今回一番の失敗だったのはバックアップコードをメモしておかなかったことでした
これあればロックアウトにもならず問い合わせする必要もなかったと思います
あとは 2 段階認証の要素を SMS や予備アドレスでの認証も追加しておくべきかなと思いました
ただ、今回の場合、電話番号を持っている iPhone5 で SMS の受信もできない状態だったので SMS での 2 段階認証を有効にしていてもダメだったと思います

不幸中の幸いだったのは「セキュリティ保護用の質問」と「再設定用のメールアドレス」を設定していたことでした
前者は覚えていたのも幸いでした
おそらく今回の解除の決めては後者の方だと思います
ここに送られた PIN コードを問題なく入れらたので個人の特定ができ解除に至ったんだと思います

それにしても解除できて本当によかったです
皆様も 2 段階認証を使う場合は要注意です

2018年1月5日金曜日

「ぶたスラッシュ」アプリサポートページ

「ぶたスラッシュ」アプリサポートページ

butaslash_icon.png

概要

このページは「ぶたスラッシュ」アプリのサポートページです
機能改善、バグ報告、各種問い合わせはこちらのコメントまたは Twitter にてご連絡お願いします

アプリ

iOS 版・・・https://apple.co/2CHhVb4
Android 版・・・提供なし

リリースノート

v1.8

細かい修正を行いました

v1.7

スプラッシュスクリーンの表示を廃止しました

v1.6

インターステイシャル広告を廃止しました
ゲーム終了時にバナー広告を表示します

v1.5

敵と爆弾の当たり判定を修正しました
敵と爆弾が画面外にはみ出すバグを修正しました

v1.4

iPhoneX, Xs, XsMax, XR に最適化しました

v1.3

デフォルトでは音が出ないようにしました

v1.2

スプラッシュ画面がうまく表示されないバグを修正しました

v1.1

効果音を追加しました
ON/OFF できるのでアプリが思い場合は OFF にしてお楽しみください

v1.0

リリースしました

プライバシーポリシー

広告 ID の利用について

ぶたスラッシュ (以下本アプリ) では Admob を使った広告配信をしております。そのため広告 ID と呼ばれる識別情報が使われております。本アプリでは広告 ID は主に広告の配信と Firebase を使った Analytics での情報収集に利用しております。本アプリの主な機能としては使っておりません。収集データはクラウドに収集され厳密に管理されます。個人で管理するデータベースやサーバでは収集しておりません。各クラウドサービスのプライバシーポリシーは以下を御覧ください。

Admob のプライバシーポリシーについてはこちらを御覧ください。
Firebase Analytics のプライバシーポリシーについてはこちらを御覧ください。

2017年12月16日土曜日

LINE スタンプを家族 Slack でも使えるようにしたお話

概要

先日「むすめちゃんスタンプス」という LINE スタンプを公開しました



せっかくスタンプを作成したのですが、前回の記事で紹介したように家族の連絡に LINE を使うのをやめてしまいました
これはもったいないと思い Slack でもスタンプが使えないかなと調べたところ微妙なやり方ですができそうだったのでそのやり方を紹介したいと思います

仕組み

やり方は正直たくさんあると思います
ググってみると同じような内容の記事がいろいろと出てくると思います

今回紹介するのはボットを使う方法です
と言っても大元の機能は Slack にある画像の URL を投稿するとその画像を取得してチャネルに流してくれるという機能を使います
察しの言い方はもうだいたい仕組みがわかると思います

今回の構成は以下の通りです
line_stickers_to_slack1.png

ボットをコマンド形式にする場合 @bot help みたいな感じでボットを呼び出しますが、それだとスタンプを呼ぶのに少し面倒なのである特定の自然言語でコメントするとそのコメントにあった画像のスタンプを投稿する感じにしています
Slack の API はイベント API を使いメッセージの受信のイベントをハンドリングします

ボットは今回 Ruby で作成しました
Slack には Hubot Apps があるので Hubot を使って簡単に作成することもできますが、Ruby が好きなので Ruby で作成しました
あとはそれを Heroku 上で動かします

スタンプ画像をどうやって公開するか

これが一番悩んだかもしれません
Slack に画像の URL を投稿する場合はその URL はパブリックな URL でなければなりません
なので認証がかかっていたり、アクセスできないネットワーク上にある画像では Slack 上に表示することができません

とは言えば自分でサーバを立ててスタンプ画像だけを配信するのも大げさかな、、、
ボットを Heroku 上で動かすのでそのボット上で画像の配信を行ってもよかったのですがボットと画像配信用の Web アプリを同居させるのが面倒くさそうでやめました

で、最終的な結論は imgur にしました
無料で使えて画像への直リンクも取得可能です
また、URL が短いのも魅力でした
Slack に画像の URL をボットが投稿したときに異様に長いとスタンプっぽさがなくなってしまいます

imgur にはアルバムレベルで限定公開できる機能もあるの今回はそれを使って画像をホスティングしてます

ボットを作成する

あとは imgur でホスティングした画像の URL を Slack にポストするボットを作成すれば OK です
今回はコマンドベースではなく自然言語を特定してマッチした場合に imgur の画像 URL を Slack 上にポストします
なので、イベント API を使って message イベントに反応するボットを作成します

一から API をコールしても良いですが Ruby で Slack ボットを作成するための slack-ruby-bot というライブラリがあるのでこれを素直に使います

コードは以下の通りです

  • vim bot.rb
require 'slack-ruby-bot'
require 'json'
SlackRubyBot::Client.logger.level = Logger::WARN

class Bot
  def initialize
    @answer = JSON.parse(File.read('./answer.json'))
  end
  def call(client, data)
    client.say(text: @answer.keys.join(", "), channel: data.channel) if data.text == "へるぷ"
    client.say(text: @answer[data.text], channel: data.channel) if @answer.has_key?(data.text)
  end
end

server = SlackRubyBot::Server.new(
  token: ENV["TOKEN"],
  hook_handlers: {
    message: Bot.new
  }
)
server.run

非常にシンプルに書けるのがうれしいです
別途 answer.json という自然言語と画像の URL を紐付ける設定ファイルを用意しましょう

  • vim answer.json
{
  "えっへん": "https://i.imgur.com/I5OjXAn.png"
}

こんな感じです
これをスタンプ 40 個分追加していきます
エイリアス的なの張りたいのであれば同じ URL に対して別のキーワードを紐付けてあげれば OK です
今回はおまけで「へるぷ」という文字列が来たときには json に記載されているキーワードの一覧を表示するようにしてみました

あとは Procfile なり、Dockerfile なりを準備して Heroku への push or container:push をすれば OK です
Procfile の場合は Web アプリではないので push 後に heroku ps:scale bot=1 的なことをしてあげましょう

ボットが起動したら忘れずに環境変数でトークンを設定してあげましょう

  • heroku config set TOKEN=xoxb-222222222222-xxxxxxxxxxxxxxxxxxxxxxxx

動作確認

Heroku 上にデプロイできたらボットと会話してみましょう
こんな感じで画像 (スタンプ) が表示されれば OK です
line_stickers_to_slack2.gif

問題点

実は今回の方法には大きな欠点があります
それは同じ画像 URL が連投されると Slack さんがその画像を展開してくれないという点です

今回、画像のホスティングに imgur を使ったので URL を変更するのは結構大変なので回避する方法はありません
適当に文字をコメントしてから再度ボットから画像を取得するようにしてください

うーん、やってしまった、、、ごめんなさい

最後に

自作 LINE スタンプを作ったので Slack 上でも使えるようにしてみました
欠点ありですが、個人で使う分にはこのレベルで十分かなと思います
無料ですし簡単な技術しか使っていないので

ついでに宣伝ですが LINE スタンプ出してるのでよろしくお願いします


2017年12月4日月曜日

プライベートの連絡に LINE ではなく Slack に移行した話

概要

家族の連絡にずっと LINE を使っていたのですが、Slack に移行したのでそのメリットやデメリットを紹介したいと思います
ちなみに移行してまだ 2 週間ほどなので、今後更にメリット、デメリットが分かる可能性はあります (その際は追記でもしようかなと)

この手の記事は他の方もいろいろと紹介しているのでこの記事も参考程度に見てもらえればと思います

環境

  • LINE アプリ iOS 版 (iPhone5 + mineo Aプラン)
  • Slack アプリ iOS 版 (iPhone5 + mineo Aプラン)
  • Slack クライアント macOS 版 (10.13.1)

なぜ移行したか

まず初めにそもそも移行が必須というわけではありませんでした
が、日頃 LINE を使う上で少し問題があり「LINE よりも Slack の方が良さそうなんじゃないか」と思い Slack に移行してみました

移行したと言っても完全に移行したわけではなく、あくまでも家族のやり取りを Slack に移行しただけでそれ以外の友人などとはこれまで通り LINE を使っています

移行する上で問題だったことや逆に Slack になって問題になったことや導入するにあたって問題だったことを紹介したいと思います

LINE を使う上で問題だったこと

まず日頃から使っていた LINE の問題ですがざっくり以下の通りです
(環境によって発生しないケースもあるらしいのであくまで自分の環境での問題です)

  • 新着メッセージ到着時にプッシュ通知が届かないケースがあった (これが一番)
  • スマホアプリへのログインは 1 アカウント 1 端末しかできない制約がある

それぞれ詳細に説明します

まず 1 つ目のプッシュ通知が届かない問題ですが移行理由としてはこれが一番大きかったかなと思います
いろいろと症状や原因を調べてみると他の人も同じようにプッシュ通知が届かないケースがあり自分だけではないということがわかりました
原因の 1 つに回線や端末、またその組み合わせ等の問題があるようで、もしかすると自分の環境 (iPhone5 + mineo、この環境は家族も同様) が悪かったのかもしれません
アプリを再インストールしたり再ログインをし直したりしてみましたが症状は解消されませんでした

プッシュ通知は届かないわけではないのですが、アプリを開かないと届かないというケースがかなり多かったです
誰かにメッセージを送らないとと思い LINE アプリを起動すると「ブー」と言ってプッシュ通知が届きメッセージを見ると昨日や一昨日のメッセージだったなんてことが結構ありました

リアルタイムで受け取りたいのに、プッシュ通知が届かないとそもそも LINE を使っている意味がないかなーと思った感じです

そして 2 つ目の 1 アカウントでログイン可能なスマホ端末は 1 台までという制約ですがこれも大きな理由の 1 つです
そもそもこの問題がなければ別のスマホに LINE アプリをインストールしてそっちでプッシュ通知を受け取ることができたかもしれません

ご存知の通り Slack アプリではこの制約はありません
いろんな端末に Slack アプリをインストールして 1 つのログインアカウントでそれぞれの端末にログインすることができます
もちろんメンションやチャネルに新規メッセージが来た場合は Slack アプリをインストールしたすべての端末にプッシュ通知が届いてくれます

という感じで LINE で起きていた大きな 2 つの問題は Slack さんを使えば解決できるということが分かり移行した感じです

移行するのにポジティブな理由

上記はネガティブな理由ですがポジティブな理由もあります

  • 作業端末の Mac に Slack クライアントが常駐している
  • 「xx is Typing」の機能が便利
  • Bot やスラッシュコマンド、拡張絵文字が使える

簡単に詳細を説明します
1 つ目の Mac のクライアントが常駐しているというやつですが自分の場合、普段から Slack をプライベートで使っています
そこに家族チャネルを作ってやり取りするようにしました
なので、家族用のチームを新規で作成するということはしていません
メッセージのプッシュ通知はスマホにも届きますが、Mac のクライアント側にも届きます
作業中は主には Mac とにらめっこしているので返信もそのまま Mac でできます
返信のためにわざわざスマホでアプリを起動する必要がないので楽です
クライアントアプリって話であれば LINE にも Mac 用のクライアントアプリがあるのでそれを常駐させれば良いだけという話ではあるのですが、それだと自分しか解決に至らないのでダメでした

2 つ目の「xx is Typing」は LINE にはない機能で普段家族とメッセージをやりとりするのに必須だとは思っていませんが、あると意外と便利だということに気が付きました
LINE の場合たまーに返信が早すぎて話が前後することがあったのでそれを回避することができます
これは心理的な問題でもあるので必須ではないですが個人的にはあったほうがやりやすいなと思いました

3 つ目の Bot やスラッシュコマンド、カスタム絵文字ですがこれも Slack にしかない機能かなと思います
今のところ家族 Slack で Bot やスラッシュコマンドが必要なケースはほとんどありませんが、今後使っていこうかなと思います (後述)

ポジティブな理由はそんな感じです

Slack に移行して問題になったこと

では逆に Slack に移行して問題になったことを紹介します

  • スタンプがない
  • Slack のアカウント取得からアプリの設定をやってあげないと導入は厳しい

それぞれ詳細に説明します
1 つ目のスタンプ問題は言わずもがなかと思います
Slack には絵文字の機能があるのでそれで代用することは可能です
可能ではあるのですが完全に代用というわけにはいきません
絵文字がない場合、普段スタンプのみの会話で済んでいたのが、スタンプがないために文字の会話にせざるを得ません

また、例えば家族用に自分で頑張ったスタンプがある場合にも使うことができません
どうしても使いたい購入したスタンプがある場合も同様です

ただー Slack には Bot やスラッシュコマンドの機能がありこれらを使えば「スタンプっぽいこと」を実現することは可能です
ご存知の通り Slack には画像の URL を投稿するとそこから画像を取得してポストしてくれるという機能があります
これを使って画像をスタンプを配信するサーバなり Bot を構築してあとはそれらを GET するスラッシュコマンド or Bot のコマンドを作成すれば OK です
自分も今試し中なのでやり方や使い勝手が分かれば別記事で紹介したいと思います

そして 2 つ目のアカウント取得ですが、これはやって上げることをオススメします
家族のみんながネットリテラルがある程度あり「Slack アカウント取得したら教えて」というレベルのお願いでやってくれるのであれば何ら問題はないですが「Slack?は?」「アカウント取得?は?」という感じなのであれば正直全部やってあげるのが最善だと思います
もちろん言葉でやり方を説明してやらせることは可能ですが、それでも難しいと思います
いずれやってくれるかもしれませんが導入障壁を上げるだけなので素直にやってあげましょう
メールアドレスの認証はさすがにやってもらうしかないので「自分のアドレスに確認の URL が届いてるからちょっとタップしてもらえる」と言って一緒に画面を見ながらやってもらいました
あとは好きなチームに invite して家族チャネルに invite してあげれば OK かなと思います

たぶん家族 Slack を導入するにあたっての一番の障壁はここだと思うので頑張ってやってあげましょう

最後に

家族の連絡を LINE をやめて Slack に移行したので、そのメリット、デメリットを紹介しました
今のところ問題なく使えているので今後も Slack でやっていこうと思っています
たぶんフリープランだけで事足りると思います
過去のメッセージを全部辿りたい場合やたくさん Bot を入れたいなどあれば別ですが、まぁないと思います

今後も使い続けて更に何か分かればまた紹介したいと思います

2017年11月18日土曜日

「ぶた忍者」アプリサポートページ

「ぶた忍者」アプリサポートページ

butaninja_icon.png

概要

このページは「ぶた忍者」アプリのサポートページです
機能改善、バグ報告、各種問い合わせはこちらのコメントまたは Twitter にてご連絡お願いします

アプリ

iOS 版・・・https://apple.co/2yShowP
Android 版・・・提供なし

プライバシーポリシー

広告 ID の利用について

ぶたスラッシュ (以下本アプリ) では Admob を使った広告配信をしております。そのため広告 ID と呼ばれる識別情報が使われております。本アプリでは広告 ID は主に広告の配信と Firebase を使った Analytics での情報収集に利用しております。本アプリの主な機能としては使っておりません。収集データはクラウドに収集され厳密に管理されます。個人で管理するデータベースやサーバでは収集しておりません。各クラウドサービスのプライバシーポリシーは以下を御覧ください。

Admob のプライバシーポリシーについてはこちらを御覧ください。
Firebase Analytics のプライバシーポリシーについてはこちらを御覧ください。

リリースノート

v1.11

細かい修正を行いました

v1.10

スプラッシュスクリーンの表示を廃止しました

v1.9

インターステイシャル広告を廃止しました
ゲーム終了時にバナー広告を表示します

v1.8

スプラッシュスクリーンを修正しました

v1.7

手裏剣の調整をしました

v1.6

iPhoneX 系のデバイスでのバグを修正しました

v1.5

iPhoneX, Xs, XsMax, XR に最適化しました
iOS10 以上のみサポートするように変更しました

v1.4

レート機能を追加しました
これでだいたい完成です

v1.3

ステージ 5 から 8 まで追加しました
遊び方の説明ページを追加しました
登場する敵、アイテムの一覧を確認できるページを追加しました

v1.2

新ステージを追加しました
ステージ 2, 3, 4 で新たに Level16 まで遊べます
ステージ 5, 6, 7, 8 も今後追加予定です

v1.1

Exp が正常に表示されないバグを修正しました

v1.0

リリースしました