shinyaコメントするモノづくり大好きなみなさん、暑い暑いと怪訝な顔をして温度計を恨めしく観た夏が過ぎ去ろうとしている中、終わってしまうことにやや寂しさも感じているのではないでしょうか。勝手ですねwさて、そんな夏の終わりに、名古屋市が主催となっている名古屋ハッカソンに参加してまいりました。HACKATHON開催概要http://jellyware.jp/nagoyaboost/hackathon.html本イベントは、名古屋市が取り組む起業家育成プロセスの一環で、他にも様々な起業家支援イベントが開催されています。起業を目指す方、事業化に向けた新しいアイデアを持っている方など、参考にしてみてはどうでしょうか。10000とはhttp://jellyware.jp/nagoyaboost/まずは結果からハッカソンなので作品に対する評価・審査があるのですが、結論から先に申し上げますと、見事優秀賞をいただくことができました。(最優秀賞1点、優秀賞2点)そういえば春先に開催された中京テレビのHack-Chuでも優秀賞をいただいたので、今年二つ目の優秀賞です!やった!が、素直に喜べない理由も。ちなみに当日名古屋市の大ボスも来てました。テーマ今回の名古屋ハッカソンは、「ヘルステックナゴヤ」が主テーマになっており、さらに協賛企業さんがメインテーマに沿った小テーマを出されていました。各企業様の事業内容に沿って、独特の小テーマが展開されており、その小テーマを眺めているだけでも楽しかったです。(中には少々強引な感じもありw)今回参加時に、介護事業を営む水野さんとチーム参加することを決めていたので、個人的に選択したテーマも介護に関するもの。小テーマは、事前に開催された事前説明会でいくつか発表されており、その際に目に留まった介護に関する小テーマで行こうかな...と介護に関するテーマがあったので水野さんをお誘いしたのでした。巻き込んでゴメンナサイ。審査員受けハッカソンだけではない、イベント全体でのテーマ性など鑑みて、水野さんと数案は決めておきました。あとは当日の空気など鑑みて、よさげなアイデアを選択する方向で当日に臨みました。当日の流れの中で一つに絞ったのがコレ。高齢者をターゲットとした服薬管理システムです。高齢者のみならず、自分のようなサプリメント常用者や子供の服薬管理にも応用できますね。参加者ウケも良かったので、介護系全般にピボットする可能性を残しつつ、これを軸に水野さんの案も交えつつチームビルディングすることにしました。ちなみに、薬の発注からサービス化しているところで、一回の服用単位でパッキングしてくれるサービスというのは既にあります。)チーム幸いにも参加者投票が多かったので事前に参加者の前で簡単なピッチをすることができ、チームビルディングはしやすい状況にありました。エンジニアリングは主に私、テーマに沿った発表資料作成は水野さんを主体にするという方向でチームの機軸を決めました。このチームの弱点は事前にいろいろと情報共有やディスカッションを進めていたこともあり、やや進め方に偏りがあることを感じていたため、意外な視点で新しい要素を提案してくれるチームメンバーが欲しいなと考えました。テーマが介護ということもあり、介護に係る機会が多い属性が理想的・・・それって女性だよね?ということで、会場内で目についた女性に声をかけまくるという破廉恥なチームビルディングとなりました。結果、このような素晴らしいメンバーに恵まれました。いや、偶然の産物なんですが、ホントに素晴らしいバランス。作るものと構成は考えていたので、エンジニアリングチーム内での役割分担もうまくいき、前述のようにサーバサイド/基盤・・・入口さんクライアントサイド・・・諏訪さんハードウェア製作・・・榊原(私)な割り振りにしました。nodeとサーボの組み合わせで薬剤排出部分の制御を行いますので、サーバ側からはWioのAPIを呼ぶだけです。自分だけなら、UIをPowerAppsで、基本処理をFlowでサラっと作るところでしたが、各メンバーの得意な分野での実装に任せる方向にしました。実装技術もうまく分かれていたし!プロト版の目標は3回程度、実際に薬剤排出するデモができることオマケ機能は、基本ができたらに絞りました。発表時間も限られるため、HWを使ったデモはあまり重要視せず実現可能性を示すだけに留めることとしました。無理してもショーがないし。薬剤排出の仕組みは、箱を多数用意してふたを開閉する方式を最初思いついたのですが、蓋の数だけ動力が必要になるため、デモ向けのプロトにしてもやや製作が面倒+100均で売っているピルケースと見た目が似通うためUI/UX的に新しさが無いということで、観覧車のゴンドラに薬剤を載せて、観覧車を一定角度回してゴンドラの薬剤を輩出するという仕組みをとりました。この方式だと、デモ用プロトの範囲だけなら、サーボ一個で動作させられます。(プロト版は観覧車の軸にサーボの軸を直結したので、最大160度しか回らないというデモ限定仕様)本来はちゃんとステッピングモータなどでやるべきですね。サーボの動作異常が見られたので、電源取り直すために小加工。nodeとサーボは持ち込んでいたので、エンジニアチームに簡単な動作デモを見せてAPIを紹介したら、あとは入口さんと諏訪さんにUI~制御周りの実装はお任せしてしまいました。近所のイオンに実際のハード部分の資材調達に!全部100均で揃えました。紙皿にマヨカップ、フォトスタンドにPPシート、ゼムクリップに押しピンと、まさに誰でも手に入る資材です。紙皿とマヨカップ、ゼムクリップとフォトスタンド!中身の観覧車はそこそこに、外装にちょっとこだわってます。外装の接着のためのタブがあまりにもみっともない・・・別のうまい接合方法も考え付いたんですが、考え付いたのが外装5割できてからだったのでそのまま進めることに・・・残念。実際にサーボ接続して、カップに薬剤投入しての初動。(事務所で徹夜製作して動作テストはしていたんですけどね)ああああ薬がwww排出というより拡散になってるwww原因を確認すると、サーボが想定仕様通り動いてない疑い。Seeedさん!ということでSeeed社の松岡さんにHELPをお願いしたところ、どうやらサーボ制御用のライブラリにバグがあった模様で、ソッコー対応いただきました。松岡さん超感謝!で、バグ修正の間に外装が整ってきたので外装付けた状態で再度テスト。この動作を目指していたので仕様通りと言えば仕様通りなんですが、割とギリギリで調整していたので、思わず声が出ましたwなにやら怪しいドーピングアイテムが並ぶエンジニアチームの一コマ。この時点でかなり時間が迫っていたので、製作はここまでとし、実際のデモは行わずプレゼンの中で動画を紹介する方向に。本番でモタつくより、その方が確実ですね。満足はいきませんが、最低限目指すところまでは動作したのでほっとしました。エンジニアチームの入口さん諏訪さんありがとう!最高のチームだ!!(HWに係りすぎて彼らいなかったらホント動いてなかったカモ。)プレゼンテーションもう一つの大事な要素、プレゼンテーションは、水野さんをはじめとしたプレゼンテーションチームが最初の目標設定とポイントの共有だけでモリモリ進めてくれました。時々方向性や数字の確認をされた程度でスバラシイ資料が出来上がってる!いつもはどっちかというとそっちの役割の方が多かったりするので、チョッピリ寂しくも、とても新鮮でした。勉強させてもらうポイント多かったし。今回は私のアイデアベースにハッカソンが進んでいったのですが、HWに必死になりすぎて本当に要所要所しか全体を見てませんでした。資料を作成しながらプレゼンテーションチームを引っ張ってくれた水野さん水野さんのサポートをしながらいろんな調査をしつつ、助言をしてくれつついいムードメイカーにもなってくれた渡辺さんプレゼンテーションチームが忙しく資料作成する中、年長者二人が手の届かないところにうまくサポートとして入っていただいた吉崎さんエンジニアチームのクライアントサイド担当として、最低限の指示しかしてないにもかかわらず自力で頑張って実装してくれた諏訪さんエンジニアチームのサーバーサイド担当として、(いいかげんで)抽象的な指示を的確に咀嚼して実装してくれた入口さんサーボ制御ライブラリのバグを速攻調査してくれた上に修正してくれたSeeedの松岡さん皆さんがいてくれたからモノができました!そして見事優秀賞!本当にありがとうございます!それからこんな面白いハッカソンを企画・運営していただいた開催側の皆様、お疲れさまでした&ありがとうございました。最後に、冒頭でちょっと触れた素直に喜べないところ。Hack-Chuも同じく、インフルエンザとはいえチームメンバーに頼りっきりで実現した優秀賞・・・私の価値って・・・orzハッカソンは楽しいぞ!出るからにはなんらかの賞をもらいたいところですが、ハッカソンって結果はもちろんのこと、そのプロセスから学ぶことがとても多い、貴重なイベントだと思います。みなさんも、周りでハッカソンが開催されていたらぜひ参加してみて下さい。エンジニア寄りのイベントに見えますが、エンジニアリングにしか目が向かないわがままで一辺倒なエンジニアをうまく誘導するデザイナーやプランナーの存在もとても重要です。shinya3件のコメントこのエントリーは、このエントリーの関連です。【車DIY】車のエアコンが効かない!!!!!(2)さて、IoTしてますか?Office365してますか?SharePointしてますか?と、煽りながらのスタートですが、いずれのカテゴリーにしてもそれほど高度な内容ではないので、玄人諸氏はそっとタブの「閉じる」ボタンをクリックがよろしです。今回は、ずいぶん前にエントリーした本記事の続編とも関連記事とも言うべき内容です。node)からデータを取得し、可視化していく方法を記載しています。いうとこんな感じですね。appsを利用可能にする。appsを使用しています。(後述)うーんむ、超簡単。実際やってみましょう。MFTでお手伝いしたからとかそういう政治的な忖度は全くなく、純粋に圧倒的に使いやすいからです。nodeのセンサに接続されたデータを利用したり、接続された機器を制御できます。nodeからのデータ取得(機器制御)は、煩わしいコーディングをすることなく、Seeed社が提供するサーバーに用意されたAPIに、トークンを付与して呼び出すだけ。反対に、呼び出す頻度やタイミング、呼び出して取得した後のデータの操作はこちら側で用意する必要がありますが、一般的なソフトウェアエンジニアにとって、不慣れなハードウェア操作の煩わしさがなくなるだけでずいぶんと敷居が下がります。実際に、値を取得してみましょう。Appsのセットアップ方法はここでは割愛しますが、要望が多ければ別にエントリー作成します。nodeの値を取得してみます。Appsの初期画面から、「一般的なトリガーで開始する」にあるサンプルトリガー「繰り返し」を選択します。すると編集画面に遷移します。新規に作成し、トリガーを「スケジュール」で検索して選択します。同じ機能なのに、見出しが違うものが存在します・・・。一応どっちでも動作することを確認しています。APIから情報を取得するために、新しいステップを追加し「HTTP」アクションを選択します。「HTTP」にも数種ありますが、シンプルな「HTTP(リクエスト)」を選択。APIの場合は方法URLの二項目だけを入力すればOKです。APIで表示されるURLを入力します。(この画面そのものは、前回の記事を参考にアプリから参照してください。)最後に、必須ではありませんが該当タスクの名前を変更します。今回は一つだけなので悩まないんですが、取得するセンサーの数が増えるとホントに困ることになります。こんな感じで、どのセンサーの値からかわかるようにするとよいでしょう。数字で管理も実はやめた方がいいですが。nodeからの値の取得まではOKです。APIに値取得のためのリクエストを投げ、JSONで値が返ってくるところまでが完了です。JSONを解析する続いての処理。アクションの追加を行い、「JSON」で検索を行うと、「JSONの操作」というアクションが見つかります。クリックして追加するとコンテンツスキーマの項目が現れます。コンテンツは、入力欄をクリックすると現れる「動的なコンテンツの追加」から展開されるダイアログから入力します。001」というグループから、「本文」を選択します。この本文が実はJSONなんですが、それを解析するということですね。続いて、どのように解析するかを指示してやります。「スキーマ」に受け取ったJSONのスキーマを設定してやりますが、0からコード書くのはめんどうなので、「スキーマ」入力欄の下にある「サンプルのペイロードを解析してスキーマを生成する」を利用します。APIのWeb画面には、実際にリクエストを送ってテストする機能まで備わっているので、遠慮なく利用します。nodeから取得した値が表示されます。(この画面そのものは、前回の記事を参考にアプリから参照してください。)上手だと下の赤枠内、「Response:」の下ですね。これをコピーして先ほどの「サンプルのペイロードを解析してスキーマを生成する」をクリックして開いたダイアログに張り付け、「完了」ボタンをクリックします。すると、「スキーマ」欄に解析されたJSONのスキーマが読みだされます。