Technote

by sizuhiko

KDDI DIGITAL GATE HACKSのお手伝いをしてきました

KDDI学生向けハッカソンKDDI DIGITAL GATE HACKS 2018でチューターとしてお手伝いをしてきました。 どんなハッカソンなのかはTECH PLAYのイベントサイトの方がわかりやすいかも。

SORACOMのWio LTE M1/NB1を使って、家での生活をワクワクさせるIoTサービスを創るイベントです。

たくさんの大学生/大学院生が参加されて、みなさん優秀だったのでチューターとしては特にやることも少なくて、とにかく楽しいという感想が残るイベントでした。

詳細はイベント主催であるKDDIさんからブログが公開されるのではないかと思うので、準備秘話というか「Wio LTE M1/NB1」(以後WioLTE青)のつらさを書いておきます。

WioLTEとはSeeedが開発しSORACOMで販売しているボードです。 これまでに

が発売されています。WioLTE青はKDDIのSIMが利用できるのが特徴です。

ということで、チューターはサンプルプログラムを作ったりといった準備をしていました。 私は個人的にWioLTE赤を購入して使っていたので、その感覚でWioLTE青を使い始めたのですが、似ているのですが、だいぶ違うものなので、これから触る人は少し注意が必要です。

WioLTE青の良いところ

  • KDDIのSIMが使える
  • DFUモードが不要なので、Arduino IDEからのプログラムの書き込みが簡単

WioLTE青の困ったところ

  • サンプルが少ない。でも今回たくさん作ったのでkdg-hacks-examplesが役に立つと良いな、と思っています。
  • I2C通信にWireが使えない。WireI2Cを使うので既存のArduino向けライブラリを簡単に使えない。
  • WioLTE赤と違って使っている人が少ないのでノウハウが少ない
  • WioLTE赤は5Vセンサーでも電源だけ5Vを給電すれば5Vセンサー値も読み取れたが、どうもそれはできないっぽい
  • interrupts/noInterruptsメソッドがArduino-Coreに実装されていないので、タイミング重要なNeoPixelといったテープLEDが使えなかった(ライブラリ使うとコンパイルとおらない)
  • STM32F405/407のArduinoCoreの実装がプアなので、Arduinoだと思うとハマる

ということでGroveのセンサーだいたい使える、と思っていると5V必要だったりするセンサーが絶望的に動きません。

でも良いボード

IoTでWiFiとかかなりつらいし、LTE使えるだけでも魅力てきなので、例えば苦手な部分はArduinoで実装してI2Cスレーブとして、WioLTEから操作するのはアリかな、というか、そういう使い方が良いと思っています。悩まなくて良いし、開発スピードも増します。

まとめ

学生向けハッカソンへの参加はとても新鮮で楽しかったです。 また機会があればイベントに協力していきたいなと思います。

Assistant Developer Conference vol.1で仕事でやっていることの発表をしました

Assistant Developer Community JapanのSlack(assistant-dev-ja.slack.com)に入って情報収集したり、 普段仕事で得たTipsなどを共有したりしているのですが、 そこで運用の話で盛り上がったところ、セッションのお誘いをいただいたので、開発チームのメンバーと一緒に発表してきました。

Assistant Developer Conference vol.1の2番目で「家電操作の発話ログ収集と今後の展望」というタイトルです。

発表資料はまだOKが出てないので公開できないのですが、いわゆるスマートホームアクションの話をしてきました。 資料公開できたら追加でリンクします。

秋のJavaScript祭りに参加して、Web ComponentsについてLTをしました

11/17に開催されたJavaScript祭りに参加しました

いつもと同様にLT枠へ申し込み、この半年でおきたPolymerのアップデートを発表しました。 とは言いつつ、Polymerのアップデートは少なめで、Chrome Dev Summit で発表された内容を中心に話しました。

今回は、春のイベントで強烈な印象を残したCanvasだけで実装したゲームのLTについて、20分枠で聴けるというのが楽しみでした。 実際20分枠よりももっと聞きたいという感じでしたし、相変わらずすごい。実装も進んでいて、もう1つゲームが公開されていました。

さて、私のスライドは以下のとおりです。

いつもちょうどJavaScript祭りの直前にアナウンスがあるので、発表ネタには困りませんが、最近多忙でなかなか動画を見る時間を作れずギリギリまでスライド内容が決まらなかった….

富士通クラウドテクノロジーさんはUSB-C x HDMIとの相性が悪いのが、以前のPolymerイベントでわかっていたので、事前に運営へお知らせしていたのですが、やっぱりバタバタになってしまっていたのが残念でした。 なんとか改善されると良いなーと思っています。

Polymer.coedo #18を開催しました

今年9回目となる Polymer.co-edo ミートアップ を開催しました。

今回からしばらくは「Edoエレメントの制作とWeb Componentsもくもく」ということで、進めることにしました。

とりあえず以下のオーガナイゼーションを作成して準備を整えました。

  • Edo-Elements - Github
  • edo-elements の npm オーガナイゼーション(これはまだ何もpublishしていないので、リンクにできない….)

イベントに参加いただけたらオーガナイゼーションに招待しようと思うので、よろしくお願いします。

次回は

予定どおり開催できる見込みです。 Doorkeeperのコミュニティページに今年の予定も書いてあるので参考にしてください。

CakePHP2プラグインをTravisCIでビルドしているときに気をつけること

先日 @tenkoma さんが、FabricatePR をくれました。 しかももう枯れてる CakePHP2版 に。ありがたやー、と思っていましたら…

CIのビルドが失敗しています。

おや?直前までは通過していて、READMEのtypoが修正されただけなんですが…

(ただ直前は1年も前なのだが…)

ためしにRebuildしてみる

そういう小手先の問題ではないようだ….

TravisCIに書いてあるスクリプトの手順をローカルで実行してみる

うまく動く…

ビルド失敗の問題とは

失敗ビルドの一例でわかるとおり、PHPUnitのバージョンが期待値ではありません。

CakaPHP2ではPHPUnit3.7系しか使えません。 CakeTestSuiteDispatcherでPHPUnitのロードを試みていて、もしロードできないとTestShellでエラーになります。

CakePHP2のプラグインのテストを簡単に実行できるようにするためFriendsOfCake/travisを使っています。 このTravis用ツールは、PHPUnit3.7をインストールして、 Vendor の下にリンクしてくれるので、うまくPHPUnitは見つかるはずなのですが。

想定される原因としては、以下のような感じです。

  • PHPUnitが見つからない
  • 新しいPHPUnitが見つかった

CakePHPの日本語Slackで相談してみる

https://cakesf.slack.com/archives/C1FT02VQA/p1539927224000100

CakePHP2系のプラグインをTravis CIでテストするのに https://github.com/FriendsOfCake/travis を使っているのですが、PHPUnitへの参照がうまくできなくなっていて、解決した人っていたりしますか? 個人的に修正できそうなんて、試してみようかと思ったのですが、すでに対応済みの人がいたらなーと思い、聞いてみたいです

他のCakePHP2プラグインはビルド通っているのか?

  • https://github.com/lampager/lampager-cakephp2 は5ヶ月ぐらい前に通過している。でもPHPUnitのバージョンが新しい
  • https://github.com/cakephp/debug_kit/tree/2.2 はPHPUnit3.7使っているけど、 FriendsOfCake/travis を使ってない。ビルドは最近通過している
  • https://github.com/tsmsogn/Pas/ は FriendsOfCake/travis を使っていて、Slackで相談したらビルドまでしていただけた。ありがたや。通過している。

とにかくいろいろ試す

試すのに、別のブランチを切れば良かったのですが、まぁ簡単になおるだろうと Fabricate/cakephp2 ブランチで作業したのは、ちょっと後悔しています….

  • FriendsOfCake/travisのbefore_script.sh を呼び出す方法が、 travis_wait 付きに変わっていたので追従した。ビルドが不安定なことがあったが安定した
  • × FriendsOfCake/travis をローカルに fork して、ログを仕込んだりしてビルドを試みた(何も意味はなかった)
  • × FriendsOfCake/travisのbefore_script.shcomposer global install しているPHPUnitを削除して composer require で入れてみた(変化なし)
  • × include_path の先頭にPHPUnitへのパスを設定してみた(変化なし)
  • △ Slackで CAKE_REF 使うと良いかも?というアドバイスをいただいたので、入れてみた。PHPUnitへの参照としては変化がなかったけど、有用そうなのでそのまま採用した。
  • × 既存で composer.json があるのが、FriendsOfCake/travisを使っている他のプラグインと違ったので、 .travis.ymlbefore_script で消してみた(変化なし)

で、TravisCIの画面(のビルド結果コンソールではない部分)を見比べていたら、テストが通過している画面にはワーニングが表示されていて、自分のビルドには出ていないことが判明。 さらに過去に通過していたビルドにもワーニングが表示されていることを確認した。

何のワーニング?

This job ran on our Precise environment, which is in the process of being decommissioned. Please read about the status of the rollout on the blog, and take note that you can explicitly stay on Precise by specifying dist: precise in your .travis.yml.

意訳すると「このビルドは、Precise環境で実行されたけど、廃止予定です。もし続けて使いたければ .travis.yml に dist:precise と書いておけばOK。続きはBlogで」みたいなことです。 the blogも見ておいてください。

precise 指定でビルドしてみる

.travis.ymldist:precise を追加してみると….

ビルドが通過しました!!

ついでに古い composer.lock と composer.json も更新/削除しておきました。

詳しく調べた

現在のTravisでビルドするLinuxイメージは trusty なのですが、そこでPHP5.4などを利用しようとすると以下のようなメッセージがビルドコンソール中に表示されます。

5.4 is not pre-installed; installing Downloading archive: https://s3.amazonaws.com/travis-php-archives/binaries/ubuntu/14.04/x8664/php-5.4.tar.bz2 9.31s$ curl -s -o archive.tar.bz2 $archiveurl && tar xjf archive.tar.bz2 –directory /

ということで、PHPのイメージファイルをダウンロード&解凍してみました。 すると、PHPUnitが同梱されています。 そのバージョンは PHPUnit 4.8.35 でした。 そこかー、それ参照しちゃいましたか…

まとめ

CakePHP2プラグインを作ったことがあって、最近ビルドしていない方は漏れなく同様の事象になると思います。 これはFriendsOfCake/travis使っている、使っていないに関係なくです。

あなたの .travis.ymldist:precise が設定されていなければ、今のうちに追加しておきましょう。

ではステキなCakePHPライフを!