オールフリーソフトさんオールフリーソフトさんでウェザタイを紹介してもらった。最近はストアが中心になっているので、フリーソフト紹介サイトが目立ってないイメージがあるけど、twitterを見ると結構アクティブに追加されていますね。入力プラグインTwitterでいろいろやりとりしていたのだが、WTのプラグイン機能を実装して下さっている方がちらほらと。月配列(permilさん)なるほど、githubからforkするとこうなるのか。githubでちゃんとオープンソース運営するって手もあるけど、それだと普通の人が手軽にダウンロードして使うのが難しいし、やっぱりダウンロードサイトかな。先になりそうなのでそれまでは結局日記で紹介していくしかないか。WT3がベクターの新着で紹介されました。3.2.1がベクターの新着レビューに掲載された。ベクタートップページにリンクされる。前回のレビューがWT1.5の頃。15年前でずいぶん経ったので、先月更新の案内が来ていた。Realforceイベントの件があったのでPocariさんに聞いてみたらOKってことだったので作者のひとこと欄にサミットについても触れておいた。ベクターのレビューは毎回結構深いところまで書いてくれるので読むのが楽しい。今回もWT2のときのマニュアルの情報にまで言及してくれていたり、、、ってWT3でマニュアル作れって話ではあるんだけど。通信対戦ができるようになった。http://denasu.com/blog/wp-content/uploads/2017/08/diary2017071806.mp4デスクトップ版のWTとも対戦ができる。ことはモバイル版とデスクトップ版との対戦も可能ってことで。ローカルPCクライアントからUWPのサーバには接続できないっぽい。製品版では別に構わないけどデバッグはめんどくさい。Tokyo1日目へ行ってきた。一通り回るだけで5時間くらいかかったのでかなり疲れた。ロボットの展示がかなり多く感じたが、たくさん並んでしまうと何が違うのか分かりにくくなるのがもったいない感じがした。逆にキッズコーナーは各展示でいろんなバリエーションがあって面白い。IoTをやっているのでLattePandaはちょっと気になったりした。出展者一覧になさそうなので製品ページへリンク。なんかが印象に残った。ウェザタイIoTで出展できるといいなあ。2017」が開催される。その中のオフライントーナメントでウェザタイを使って頂けるとのこと。東プレといえばタイパー間で一番有名なキーボードRealforceのメーカー。前にPocariさんからこういう話があるというのを伺って、使ってもらえるなら歓迎です、というようなことを返したのだが、本決まりになったようだ。いつもウェザタイを推してもらって感謝です。15年前、秋葉原にToD大会をこっそり見に行ったときにはこんなことになるとは思ってなかった。WT3もタイピングサミットで2度大会を開いてもらって品質向上版を出したばかりなのでタイミング的にもバッチリ。1対1の(多分)LAN対戦てことで不安要素は特にないのだが、何か現バージョンのバグを知っている方は教えてもらえると助かります。来週はあれもあるし、しばらくウェザタイのダウンロード数が増えそう。TypingのUWP化でネックになるネイティブC++の部分。C#に移植するのはそんなに大変ではないのだが、ネイティブ部分を使えるといろいろ便利なので調査。普通にネイティブDLLを作ってUWPからP/Invokeしてみるが、あっさり成功。IoTでもそのまま動いた。禁止されているAPIを使っていなければそのまま動くらしい。問題なさそうなmemsetとかmemcpyとかが引っかかっているので、どうもデスクトップ用のライブラリを見ているためっぽい。appsを参考に有効にしてみるが変わらず。Appというそのままのヘルプが見つかったのでそれに従って、上のC++/CXに加えてプロジェクトファイルを直接書き換えたりプリコンパイルヘッダの名前を変えたりしてWACKに通るようになった。Walkerで見てみると、元々リンクしていた「VCRUNTIME140.DLL」とか「MSVCP140.DLL」が「VCRUNTIME140_APP.DLL」「MSVCP140_APP.DLL」になっていて、これがUWP用ってことか。TipsしばらくXamarin.Forms使ってみて分かってきたこと。ManagerでUWPプロジェクトのビルドとデプロイにチェックが入っていないためだった。デフォルトでオフになっているのかな。Releaseで動かした場合だけなんだけど、そのまま例外をスルーすると動くっぽい。Xamlのインテリセンスが死ぬ一番困ってるのがこれ。動くんだけど、何かしているといつのまにかインテリセンスが死んでいる。UWPプロジェクトを選択しているときはインテリセンスが正常に動いたことがない。found”みたいなのが出てインテリセンスの選択肢がほとんどない。Android/iOSプロジェクトを選択していると動くことも多いけど、いつの間にかインテリセンスのウィンドウが出なくなる。一応そんなときはAndroidやiOSのプロジェクトから共有プロジェクトの参照を消してビルド、もう一回共有プロジェクトの参照を追加してビルドすると出るようになったりする。Piでウェザタイを動かす計画。一通りロジックは移植し終わったのて、画面も少し作ってみた。2週間前の状態がこれ。モバイルバッテリー付けて持ち運べるようになった。キーボードを付ければ打ち込める。(UWP)、Android、iOSで動くので、一石四鳥といえる。MacってのもあるっぽいけどMacでも動いたりするかなあ。対戦機能も、Windowsストアならサーバ・ホスト両方できそうかな。Androidとかでも、少なくともゲストはできる見込み。ラズパイなのでハードウェアも動くはず、ってことでお決まりのLEDを試す。キーボードを押すとON/OFFする。http://denasu.com/blog/wp-content/uploads/2017/07/diary2017071702.mp4ここまで下準備ができてくると、やりたかったあの企画も近づいてくる。ある程度できたらイメージを載せてみよう。第二回ラズパイワークショップはっぱさんとラズパイワークショップ。近場によい感じの作業スペースがあったのでそこで情報交換をした。Studioで開発できるのでは、という推測をしつつSDカードカードを購入。StudioではUWPプロジェクトは作れなかった。必要になってきたってことでマクセルのモバイルバッテリーを購入。3Aまでいけるのでラズパイも余裕。モバイルバッテリーを取り付けた様子。これで完全にワイヤフリーになった。Formsへとりあえずウェザタイをラズパイで動かすのが当面の目標だが、せっかくやるならモバイル対応も同時にできるとよい。ことで前からやりたかったXamarin.Formsを試してみる。ProjectとUWP/Android/iOS用のプロジェクトができる。IoTで動かすためにUWPを中心に。PCで実験してからラズパイに持って行けるのがすごく便利。Library(PCL)はそのまま使える。Projectにして、ifdefでなんとかするかな。Injectionでやるのが綺麗らしいけど、クラス数が多すぎてめんどい。Projectはそれ自体はDLLでもスタティックライブラリでもなくて、各プロジェクトに勝手にマージされるイメージっぽい。それはいいとして、ifdefのdefine値は各プラットフォームで定義されていると思ってたんだけどそういうわけではない、んですかね。自分で各プロジェクトに_UWP__とか定義した。Formsで共通にするかプラットフォーム依存でそれぞれ作るかの2択で、やれることはそんなに変わらないように見えた。感じだったが、実際やってみると・・・これはプラットフォーム依存の方が楽かも、って思える。コーディング中に画面イメージが出ないのはまあ仕方ないとして、何かちょっとでも変なコードを書くとインテリセンスが動かなくなったり、とにかく不安定。あと、コード変更した後いちいちBuild&Deployを手動でやらないと新しいバイナリでデバッグできないのは何か設定とかないのかな。心配だったGPIO周り。XamarinのUWPで動くかな、と思っていたが普通にUWPのプロジェクトからGPIOのライブラリは参照できた。Xamarin.Formsで作った最初の画面。IoTを使えばC#が使えるということで実験。DashboardからSDカードにイメージを転送して起動。INFOでブルースクリーンになる。その後起動するとBCDがおかしいエラーで何もできなくなる。何度かSDカードを作り直すがダメ。ネットを調べるとアンペアが足りないとか出てくるが、Surfaceの充電器のUSBポートでもダメ。IoTを入れるとSDカードに大量のパーティションができる。やってフォーマットすればいいのか分からないのでパーティションを全削除したらWindowsから認識されなくなった。これはXperiaにつないだらフォーマットしてくれた。結局SDカードとの相性がだめだったようで、TOSHIBAの16GBはダメでELECOMの16GBで起動したらちゃんと起動した。TOSHIBAのSDカードがクラス4だったからだと推定。SDカードがすぐ欲しかったのでコンビニで買ってきたらクラス4だった。ELECOMは電器屋でちゃんと?買ったものなので当然クラス10。Dashboardからデバイスポータルを起動。インストール時に設定したパスワードが通らない。あのパスワードではなく「p@ssw0rd」らしい。パスワードは変更しておいて、デバイスポータルからようやく画面を反転。PCからリモートで操作する方法を探してみると、Windowsストアアプリがあるらしい。Clientでリモートデスクトップのように操作できた。これでなんとか使い始められそう。WT3.2.1公開WT3.2.1を公開。開発版からの修正は、ワードの最後の文字を打ち終わった後に入力するとたまにエラーになる対策と、内部的には各キー配列のハッシュが変わったためファイルを更新している。ウェザタイ本体のページがごちゃごちゃしてきたので、過去の履歴を過去のバージョンページに移動。ついでに過去バージョンをダウンロードできるようにしてみた。初期バージョンは手元にないが、1.2以降は全部ある。入力方式部分をオープンソース化してGitHubに登録した。登録するのは初めてなので作法がよく分からないが、とりあえず一番自由っぽいApache2ライセンスにしてみた。商用非商用関わらずソースコードを使用可能、改造も可ってことで、ウェザタイのプラグインが増えることにつながるとウェザタイ的にもプラスになる。ウェザタイonラズパイに向けてWT3.2の開発もほぼ完了。いうことでラズパイの環境を整備。秋葉原で買ってきたラズパイ用7インチタッチLCDとケースを取り付けてみた。LCDの電源もラズパイから取れるし、一体型で持ち運びもOK。何より裏蓋も取り外し可能ってことでなかなか使い勝手が良い。裏で動いているウェザタイonラズパイプロジェクトを開始しよう。GitHubでオープンソース化ウェザタイのプラグイン部分はオープンソース化してみようと考えているのだが、いろいろと分からないことがある。ライセンスはとりあえずApache2にしておけば自由に使えるかな。最終的にはウェザタイストアみたいなのを作ってワード、入力プラグイン、CPUプラグイン、リプレイをみんなで公開できるサイトにしたいけど、いつまでかかるか分からない。ことでGitHubのトップページにあるマニュアルのようなページを作っている。Markdown形式というWikiっぽい形式で書くのだが、最初AtomというGitHub公式エディタを使っていたが、文章が長くなるとすごく重くなる。結局サクラエディタで編集、Atomでプレビューすることに。Atomが自動的にファイルの変更を検知してくれるので割と使い勝手がよい。WT3.2開発版ひととおりテストが終わったので、WT3.2開発版を公開。本当はいきなり正式版にしたかったのだが、最後まで毎日数件バグが出ていたので、一旦公開してバグ報告をもらいつつ、追加でテストすることに。何もなければ来週あたり正式版を、何かあれば3.2.1として公開するかな。