Tumblr概要Unity製のiOS,AndroidアプリとBluetoothで繋がる自作専用ハードウェアを作りたい。言うシチュエーションは最近増えてきました。Energy)経由で接続することが多いです。iOSのネイティブ実装例が見つかります。現在はWifi+Blutoothに両対応した安価なESP32ボードが手に入ります。安価なESP32ベースで専用BTコントローラを仕立てて、iOSやAndroidと(Unityから)繋ぐことが出来ると、変なゲームやインスタレーションが作れそうです。本エントリではUnity製アプリ内でESP32に繋いだジャイロセンサの値を反映する。いうサンプルを作成します。くらげのIoTテクノロジーさんが詳しいので、一読をおすすめします。実例IMUからQuaternionを受け取ってCube回してます。)Unityのインストールや環境構築お願い手元にiOS開発環境がないのでiOSの動作確認がとれません。動いたら教えてください。kitmicroUSBケーブル後述のアセットamazonから買うときは、primeのものを買うようにしましょう。ないと中国発送で届くまでに2週間かかります。amazon以外だと秋月電子あたりで買えるんじゃないでしょうか。アセットを買うPCにUnityのandroid/iOSのビルド環境を用意するandroidに関しては参考文献を参照してください。参考文献通りに進めれば基本的に問題ないですが、一点変更がありました。SDKをチェックしていることを確認するよう書いてありますが、2018/05/15次点では一覧に表示されませんでした。studioを起動すると「SDKが見つからなかった」と表示がでてそのまま半強制的にSDKをインストールすることになりました。qiita.comframesynthesis.jpPCにESP32の開発環境を入れる別記事に書いてあるので参考にしてください。takashiski.hatenablog.com基本的に公式に書いてある通りの手順に沿って手を動かすだけです。アセットを買う買ってください。Unity自体はBLEの処理を持っておらず、デバイスごとにネイティブで書く必要があります。androidでBLEが取り扱えるようになります。ネイティブの処理を自前で書いて連携できるなら買わなくても大丈夫です。この記事では動確程度のため、サンプルコードを最小限の改変で動かすことを目標にします。Unity側のBLEアセットのSimpleTestというサンプルシーンがScanとnotifyの受け取り・表示をするので使います。ESP32側はSimpleTestにあうように実装を決めます。BLE_notifyというサンプルスケッチを使います。....という順番でデータが飛んでくるやらなければならないこと識別情報を一致させないといけません。一致さえさせれば動作確認は取れます。今回識別情報と呼称しているのは以下の三点の組です。UUIDと呼ばれるHEX4桁のものを利用します。UUIDを埋め込んだほとんどが共通部のUUIDを埋め込みます。BLE_notifyを開きます。今後も改造することとしますので、適当な名前で別名保存してください。私はBLE_Unity.inoにします。NameはデフォルトがMyESP32なので変更は不要です。これをビルド・書き込みしたら完了です。そのまま電源を入れたままにしておけば、Unity側のインストールが終わり次第すぐに確認できます。Unity新規プロジェクトを作成し、android(もしくはiOS)をビルド対象にして、その他の設定を済ませてください。androidをインポートします。Example>SimpleTest>SimpleTestシーンを開いてください。cameraを選択し、インスペクターの項目を設定します。Name以外は初期値を使っています。2222(今回は使わないのでHEXなら何でもよい)SimpleTest.csを開いて以下の項目を編集します。具体的にはWriteCharacteristicを使わないように書き換えます。(_foundSubscribeID)もしくはWriteCharacteristicを使って評価してる部分を削除すればよいです。最後に、スマートフォンをPCにデバッグモードで接続して、ビルドアンドランで書き込みましょう。ESP32の準備が済んで電源がはいっているのであれば、起動次第すぐに見つけられて、数値がインクリメントされ続ける様子が見れるはずです。まとめ便利なアセットと便利なBTモジュール付きマイコンを使うことで、BLEでデータのやり取りができました。notifyではデフォルトだと20バイトのデータが送れるそうです。今回は1バイトのみですが、任意バイトをおくって表示するなどしてみてはいかがでしょうか。発展として、ESP32でセンサの値を読み取り、Unityに投げてUnity内のオブジェクトに反映させる、というのをこのあとやります。LEのnotifyを使います。記事の内容をよくするためにご意見いただいたようてんさんとizmさんに感謝を申し上げます。Tumblr経緯ESP32の開発環境の一つとしてArduinoIDEがあります。Arduinoは散々使われているため、大抵のセンサのライブラリが容易されているので非常に便利です。一方で、てきとーにネットを参考にしてやると地雷踏むことが分かったので怪しいとこだけ書きます。世間では「gitよくわかんねーし、zipでダウンロードしてきて使えばいいじゃん」な風潮なようです。ZIPからダウンロードしたファイルを解凍して配置します」とか「BLEフォルダは空っぽなので別に用意されてるリポジトリの中身をダウンロードしてBLEフォルダにコピーしてきます」なんて書いてある記事が上位に出てきます。有名な人が書いています。「ダウンロードして配置すれば動く」は大嘘です。動くケースもあるんでしょうが、私は以下のエラーで悩みました。半年くらい前に突っ込んだESP32環境に最新のBLEリポジトリを突っ込んだからな気がします。https://github.com/espressif/arduino-esp32/issues/1299大嘘と強い言葉を使っていますが、あながち間違いではないです。公式が提示している導入方法と異なるからです。github.comESP32は結構な頻度で更新されている上に、ArduinoIDEの機能では自動更新されません。pullなどのコマンドで比較的容易に更新ができます。「git...わからん...」な人も、これを機会に導入しましょう。わからんの人でも、公式はすごい少ない手順に死ぬほど丁寧にスクリーンショット貼りつけて説明してくれていますので順にやっていけばできるでしょう。英語なので無理と思う方は基本的に英語の情報しかないので諦めたほうが良いかと思います。以下は公式に書いてある内容を適当にメモしたものです。Windowsの手順です。それ以外のOSの人は適当に補完するか公式の導入手順を読んでください。gitはコンソール版で、powershellで実行するものとします。ArduinoIDEは1.8.0です。最初に、Powershellを起動します。Arduinoのスケッチやライブラリが設置されているフォルダに移動します。Windowsだとデフォルトは~/Documents/Arduino/です。~/Documents/Arduino次にその下にフォルダを作成します。cloneコマンドを実行します。updateをします。このコマンドにより、適切なBLEライブラリが導入されます。--recursive最後に、esp32以下のtoolsに入ってget.exeを実行します。pullすれば完了すると思います。ダメならget.exeをさらに実行すればよい気がします。ctrl+m)に置き換わってしまっている場合は、以下のように置換するといい感じになる。Ctrl+mにより入力される特殊文字である。Tumblr2020/01/07追記excludingなど、tweetdeckの各フォームは言語程度しか、いつの間にか動かなくなっているようである。apiを紹介しているウェブサイトをもとに試してみたところ、Matching内に定型文を入れることである程度実現できた。現在は検索内容に-"単語"を追加するしかないようである。ダブルクォートでくくらないと、否定ではなく同様に検索されてしまう糞仕様である。haxeの検索結果から、どこかの飲食店の名前であるハクセを除外したい場合は以下のようになる。-to:haxeを追加すればよい。-to:haxeただし、複数ユーザーへのリプライで2番手以降の場合はこれでは除外できないよう。その場合は-"@haxe"を付ければよさそう。追っていると、当日見落としていた本の情報や、購入対象外にしていた書籍の書評が流れてきて思いのほか面白そうだった、ということがたびたびある。面白い記事の投稿があると、皆こぞってtweetをする。SEOでタイトルに#技術書典が含まれていたり、ハッシュタグを追加して投稿することがあるので検索汚染甚だしい。検索のexcludingを適用しようと該当語句を追加したところ、何故か除外されないどころかその語句を含んだtweetしか出現しなくなってしまった。twitterの仕様とは言え酷い。調べたところ、フォーマットはカンマ区切りのクォートされた文字列のようである。具体的には下記である。,"単語"これで「もうみた」を排除できるようになった。Tumblr技術書典4おつかれさまでした。DLカードのみの準備で、20部売れる見込みで、一応40枚用意して20部売れたので予定通りだったtakashiskiです。今回、対面電書とA-oneとbrotherに助けられたので書きます。は...どういうサービスといったらよいんでしょうね。シリアルコードをイベントで配布・販売すること前提のDLサービスです。このサービス自体ではシリアルのやりとりはできず、イベントやその他の販売方法で配布します。このサービスは無料で利用できます。管理者は自転車創業のkazamiさんです。年々アップデートされており、最近では電子書籍以外にもゲームなどの販売もできるようになったようです。広告もない状態でいったいどうやって無料でずーっと続いてるのか謎に包まれていたのですが、衝撃の事実がついーとされていました。現状は本来おれが使う筈だった印刷代をサービス代に回しているだけです。2019安心して(?)使えますね!(ありがとうございます)本題さて、今回諸事情で入稿締め切り日からリライトをすることになり、イベント当日にQRコードを作成する、ということを実施しました。本当はイベント会場でサーマルプリンターで即時印刷するつもりでしたが、ジャンクでかったプリンタであったためうまく動きませんでした。そのため急きょほかの手段を模索したところ、たまたま揃っていた部材で解決できましたのでここにまとめます。具体的には、対面電書のDLカードを自宅で作成する方法です。私は以下の2種類を使いました。名刺用紙の50シート500枚は多いと感じるかもしれません。実際はテスト印刷もしますし、個人名刺を作ることもあるでしょう。100部用意して個人名刺を200枚用意すると、それだけで半分なくなってしまいます。「急きょ必要になった時」のことを考えると、500枚が不安ではないです。100枚ごとに買うよりも単価が下がりますしね。厚手を選ぶ理由は受け取った時にしっかりしているほうが嬉しいからです。ここは完全に好みで選択してます。単価をさらに下げたいようであればより薄い名刺カードを選んでもよいでしょう。プリンタは購入当時amazonで一番安かったやつです。品質を求めるならもっといいやつを買ってください。黒インクは切れないようにいつも一つ以上予備を持っています。Computersこの商品を含むブログを見る対面電書でやることまず、対面電書に書籍情報を登録します。この時点では仮データで問題ないです。次に、書籍のページの右上に管理に関するリンクがありますので、「シリアル管理」を選びます。シリアル管理の右上のボタンで必要な数を満たすまで「シリアル発行(+100個)」を選びます。必要な数を出しましたら「CSVダウンロード」でシリアルコードのCSVをダウンロードします。「ラベル屋さん」をインストールします。www.labelyasan.com次に、起動して「用紙を選んで新規製作」を選び、「品番や用語で絞込検索」に「51678」を入力して絞り込み、51678を選びます。次に、右上のタブをデザインから差し込みに切り替えてください。次に、右上の差し込みをONにしてください。確認ダイアログがでていますが、現段階では一切影響はないのでOKで問題ありません。次に、データ読み込みを選択してください。既存のデータが破棄されると出ますが、既存のデータなんてないので問題ありません。次に、先ほど対面電書からダウンロードしたシリアルCSVを選択します。次に、読み込み対象を聞かれますので、全読込を押して全部を対象にしてから読み込みを押してください。次に、列をテキストエリア・QRコードの関連付けを行います。次に、デザインタブに戻って、文字とバーコード(QRコード)を配置してください。非常に雑に配置すると次のようになります。次に、再度差し込みタブに戻ってください。次に、列名を選択しテキストエリアを選択して「関連付け」ボタンを押してください。マッピングがされます。今回はパスコードとpasswordが、QRコードとsecret-urlを関連付けます。次に、印刷タブに移動します。すると、全カードに対して異なるデータが配置されていることが分かります。あとは、必要な分だけ印刷するだけです。そのままだと、全データを印刷してしまいます。「開始行」と「終了行」を設定すると、50-59番だけ印刷する、などができます。レイアウトにも問題がなければ、印刷ボタンを押します。デフォルトだと片面印刷ですが、必要であれば、逆面にも絵を付けてください。その他レイアウトはグリッドスナップなどないようで、かなり厳しいです。うまく調整してください。別のツールで矩形など配置した画像を用意し、その画像をガイド/背景として使うのがよいかもしれません。注意点としては、印刷時にちょっとずれることがあるので何も印刷されない余白は確保したほうがいいです。対面電書を知っている人の割合はまだまだ多くはありませんので、注記はつけたほうがよいです。secret-urlをブラウザで開けばパスコードは自動で入力された状態のページが表示されますので、すぐにダウンロードやアカウント連携ができます。何事も事故は考えられますので、念のためパスコードを付けています。まとめ自宅にプリンターと名刺用紙が常備されていれば、前日/当日まで執筆をしてサークル入場直前まで時間をかけてキンコーズに駆け込んで並んでコピー本をする、なんてことをしなくてもよくなります。自宅で提出用の見本誌と、内容確認用の見本誌2-3部程度をコピー本として印刷している間に、対面電書に登録してDLカードを作成しましょう。DLカードの印刷はコピー本の印刷に比べると一瞬で終わります。追加で必要なものは布とPOPとおつりくらいでしょうか。あとサインペンや白紙のA4用紙とクリアファイルがあるとよいですね。非常に身軽に会場に向かうことができます。「紙の本ないの?」と聞かれたら、非常に乱暴ではありますが「このPDFを購入・ダウンロードしてセブンイレブンのコピー機で小冊子印刷をしてください。」と注記するなり伝えるなりすればよいのです。最初にちらっと書きましたが、サーマルプリンターでDLカードを動的?生成をすることを本当はやりたいです。