第30回全国高専プログラミングコンテスト、通称、高専プロコン!
楽しい作品と、元気な高専生に会えました。
感謝と激励の意を込めて、こうするともっとおもしろい!? 勝手な一言感想&追加アイデアを写真と共にお届けします。


J11 一関 Child−like-子どもの「得意」を知る学習支援システム-
何をもって分かるかはこども、それぞれ。3種に分けた特性、通常の学習方法には向かない子供向けに特化した、IT機器があるがゆえに実現できる具体的なカリキュラムの提案ができると強そう!


J17 岐阜 TBM-TrashBoxManager-
自らLINEで呼びかけ、一杯を予測するIoTゴミ箱。物珍しさを前面に出して、イベントトータルサービスへの昇華もありかも。月60円のsakura.ioを使ってリサイクルボックスへの横展開もぜひ。


J6 仙台(広瀬) ふろっく
ブロック型プログラミングを物理で実現!ひとつひとつのはんだづけされたブロック、工夫された磁石による接点がうまく動いていた。他にPCが必要なくスタンドアローンで動いていてステキ。オープンソース化とキット化しての手頃価格での販売から始めてみよう!


K13 呉 語Live-カタリベ-
災害における事象をフォーマットを定めて時系列に記録、追体験できるアプリケーションへとつなぐと良さそう。いつどういう状況で、どういう指令が出されたのか、ふりかえり大事。


K15 鳥羽商船 とばまっぷ-現在・過去・未来のまちの姿を地図上に可視化-
元町内会長で元市長からの要望でスタートした実用アプリ。市役所の協力によって、個人情報に近づく攻めたデータの活用ができているのがポイント!地域連携の好例!


J13 都城 ハザップ-避難訓練に革新を!-
避難訓練にTRPG的要素を加えて、リアルフィールドでチーム戦するゲームにすると楽しい。絶体絶命都市もヒントになるかも。参加者の動きを知る神様チームとフィールでサバイバルするチーム、どちらも楽しそう。


J9 広島商船 アリスteaパーティー
ぬいぐるみと声でつながる!音声認識と音声合成技術が手軽になっておもしろい。映像に頼らない声だけもいいかも。話者認識してみんなで楽しむTRPGのコンピューター化もいいかも。


K2 熊本(熊本) CHEER RING-地域マラソン応援システム-
メッセージの読み上げや、声でメッセージによって応援が届くのがおもしろい!走っている人の見ている風景、速度、乱れ具合などのデータ中継もあると遠隔からの応援も捗りそう。


K6 米子 スマートカーブミラー-高齢歩行者交通事故防止システム-
光り輝くちゃんちゃんこなど、歩行者側が積極的に目立つ仕組みもありかも。


J7 沖縄 GooTravel-オフライン下のインバウンド支援システム-
オフラインでもシンプルに案内。いくといいことあるかも感を出すクーポンなど、データを出すお店側もあるといいかも。


J5 阿南 あ!水ダス(AMIZDAS)-水災害を自ら防ぐ水位監視システム-
実際に何度も設置していて、完成度高い!オープンデータ化とデザイン好きや、機械学習好きな高専生が使いたくなる仕組みを加えて水位を身近にできるといいかも。NICT賞、目指せ日本一


K16 呉 TOWN HERO-地域で助け合うWEBアプリケーション-
匿名投稿による気軽なまちでの助け合い!災害時だけでなく平時でも使える身近にしておくのとよいですよ!(参考、千葉市のちばレポ、鯖江市のさばれぽ


K9 沖縄 うみまもる-離岸流事故防止システム-
海の中でのデバイスづくりという難問にチャレンジした、海の沖縄ならではの作品。画像解析や、衛星データによる離岸流推定と組み合わせてデバイスレス実現のアルゴリズム発見に繋げられるとすごそう。


J8 鳥羽商船 JO−HARI
姿勢推定を使ってフォームを3Dモデルとして記録し、AR/VRデバイスMirageSoloで再生してチェック。位置合わせに難点があるけど、いっそVRでもよかったかも。Oculus Questのコントローラー、より直感的に使えてオススメ!ARCoreやARKitでスマホ化できると手軽で良さそう。


K8 東京 :::doc-自動点字相互翻訳システム-
頼むと時間がかかってしまう文字が書かれた紙の点字化をその場で実現。実際読んでもらいながら、読みやすい点字文章への変換アルゴリズムが良さそう。点字プリンターとのセット販売が熱いかも!?点字を身近にする墨字化カメラが作りたい。


J3 鈴鹿 あなたとリビング-遠隔日常会話実現デバイス-
単身赴任のお父さんとの自然なコミュニケーションを実現するデバイス。関係性によってベストな間は様々。足りない部分を埋めるモノ。いろいろ探してみるのもおもしろそう。


J20 熊本(熊本) FormTube-運動姿勢を評価するサポートシステム-
無線式の加速度センサーを9コ使って運動する姿勢を記録しアドバイス。どう知らせ、どういうメリットを感じてもらうか、利用者側からの視点でのアプリやUXデザインに落とし込んでみよう。データを集めて機械学習、最終的にはスマホやメガネデバイスだけでアドバイスできたら最高!


J14 香川(詫間) Cre:えいと
影からの3Dモデル化と破壊が楽しい。ひとつ具体的なゲームや、影アニメーションツールにしてみるとより伝わるかも。


K20 松江 Graffiti Arcade-ラクガキ出来る商店街-
ホース型デバイスで建物を落書きし放題!こどもの夢実現になっておもしろい。スプラトゥーンばりにバケツとかもっと派手にぶちまける感出せるとアーティスティック!


K12 沖縄 uniHome-地域と都会に住む家族をひとつに-
8x8のマトリクスLEDとサーボを使ってシンプル安価でかわいいロボットを実現!名前をつけてあげてオープンソースハードウェア化して、沖縄高専名を広めよう!


K10 松江 ANIMAL CAPTURE-車椅子利用者向けの新ARゲーム-
車椅子にのって、手も使わないでできる体を動かす新しい遊びの提案。映像を中継してみんなでわいわい、スイカ割り感覚で楽しさがステキ。ARCore/ARKitとスマホVRゴーグルで手軽に実装できるのも要チェック!(参考、スマホARとSwiftかぼちゃデモ


K1 熊本(八代) まちもりブザー-地域で子どもを見守る防犯システム-
こどもがもって楽しいデバイスとは何か?安全だけじゃない子供側視点を入れると楽しそう。


K14 香川(詫間) Unexplored Road Explorer
オープンストリートマップの道路グラフを抽出して独自ナビを実装する意欲作!鯖江駅と同様、都城駅も駅裏へ抜ける地下道が登録されていないため、Googleのナビはぐるっと遠回りを案内され、被害者数名。地域のナビは地域で創ろう!


K4 弓削商船 SearchーaーBLE-さがし、つながる街づくり-
弓削商船高専、BLEの落とし物をサーバーレスで実現!落とさない時にも楽しく使える工夫を考えてみるとおもしろいかも!?


J10 熊本(八代) Silent Recorder
マンションなど家での練習が難しいリコーダーを電子楽器化!吹き込む量をマイクで測定、押されているかをフォトトランジスタで判定。半押しは未対応。本物さからは離れるけど、圧力センサーを使って運指の練習のみにコンパクトに特化するのも手かも。


J19 熊本(熊本) CCCeB-コメントで繋がる教育支援システム-
高専生は自分達の授業自体もハック可能!おもしろくない授業、どうしたらおもしろくなるか、先生と一緒にあれこれ試して情報発信すべし!(参考、講演時に好評、コメント.net


J2 東京 Gulliver Blocks-VRで新しい創造体験を-
深度カメラでブロックの積まれ具合を判定し、VR空間で再現!ミニフィグをおいて、Oculus Questを使うとミニフィグになって歩き回れる感がでて更に楽しそう。創る人と、VR空間で遊ぶ人それぞれが楽しめる仕掛けを加えたい。


J18 大島商船 観音-音のミエル世界へ-
擬音が見えるという衝撃!マンガ的な表現にこだわり、機械学習を進めて、いろいろ認識するようになると楽しそう!


K3 阿南 TOZAN-もっと楽しく運動!地元の山がゲームの舞台に!-
改造したステッパーで地元の山をフィットネスゲーム化!歩きながら記録するスマホアプリや、観光データの活かし方もよい。写真から3Dモデルを生成する注目の技術、フォトグラメトリを使ってみるのもいいかも!(with 初音ミク by @DuckbillStudio


J15 弓削商船 Re:Take-反転授業時代のビデオ作成システム-
スクリプト言語から動画を生成する、動画教材生成コンパイラ!まずは情報系の先生をターゲットに自分の声、姿を使わず質の高い授業づくりができる!IchigoJam教材などで使いたいので、何か良い名前をつけてぜひ公開を!


J12 サレジオ 玄白-内視鏡手術支援裸眼立体視インターフェース-
大学技術との連携がおもしろい!手術するお医者さん用に設置型で見せる3D。Looking Glassが熱い!デモを見せる立体視にはOculus Goや、スマホVRが便利だよ。


J4 有明 NukuNuku-熱が見える不思議なデスク-
高解像度なサーモグラフィー(7万円〜15万円)を使った不思議感が楽しい。8x8の低解像度なら4,950円 at SwitchScience!変なデバイスを遊びで使うの楽しいね!


J16 八戸 CanGakki-組み替え可能な知育管楽器-
ダンボールで組み立てる楽器キットがかわいい!吹くときのアナログ感をうまく出せればぐっと楽しくなりそう(参考、LPC810を使ったFM音源

展示している学生が、みんな楽しそうに紹介してくれたのが印象的でした。
自分で作ったものを自分で展示する場、NTイベントの開催とかどうでしょう?


10/26-27、さばえものづくり博併催の「NT鯖江2019
バリエーション豊かな30もの出展者さんが集まってくれることになりました。(出展者一覧会場ブース配置)
何かやってみたい人、ひとまずふらっと見に来てください!
なにかつくろう!みせてみよう!

あけましておめでとうございます!
今年の一日一創も、よろしくおねがいします。


nenga2019」 - framework websarasa.js
こどもパソコンIchigoJamIchigoJamフォント と websarasa.js を使った年賀アプリ!

本サイト「福野泰介の一日一創」遅ればせながら、ようやくAOSSL(Always on SSL / 常時SSL)にしました。 無償で使えるSSL Let's Encrypt と、軽量webサーバー Nginx で、Javaで開発する自前webアプリケーションサーバー Zerosen へ受け渡す形で実現。

従来の非URL http で始まるアドレスへのアクセスは、https を付ける形でリダイレクトするので、基本的には動くはずですが、混ぜるな危険のSSLの仕組み上、アプリが動かなくなっているものは、順次修正していきます。

アドレスが変更になったことから、Facebookのいいね数などがリセット。心機一転、リスタート。ひとまず、ソーシャルボタンを外したところ、ずいぶん軽量になりました!


日本の自治体「Webの安全」対策率
1年ぶりに調査してみた、地方自治体webサイトのAOSSL化状況。
2017年12月には54自治体、2.8%から、306自治体15.9%まで大幅増とはいえ、対策は遅い。
Webの安全、準備できてますか? 2017年はHTTPS標準化元年 地方自治体対応率はわずか1.5%

SSLの普及率、世界平均69.9%、日本平均62%、アメリカはすでに82%!(2018年5月の調査)
日本のHTTPS導入、普及しつつもまだ不十分 – Anderswodenkender – Medium

オープンデータ伝道師&地域情報化アドバイザーとしての活動にも力が入ります!

links
- 2012年 2012年のテーマ「一日一創」
- 2013年 じゃみじゃみ年賀アプリでスタート、2013年の一日一創
- 2014年 セマンティックWeb元年、一日一創第三章のテーマは「つなぐ」
- 2015年 創造は力なり スロットおみくじハードウェアで占う2015年
- 2016年 起動10秒!IchigoJam BASIC、PC用のOSベータ版リリース! IchigoJam PC
- 2017年 BIG SCREEN IchigoJam New Year Update!
- 2018年 Happy New Year 2018! Starting with Glasses! 新メガネで迎える新年

全世界同時多発、宇宙ハッカソン「Space Apps Challenge 2018 - Locations


ステキなイベント、ありがとうございました!(photo from Space Apps Challenge 2018 東京会場
世界みんなで取り組む、アプリで世界をより良くする動き、いろんな世代を巻き込み進んでいきます。


Yahoo!ロッジ、ハッカソン「Space Apps Challenge 2018」東京会場!


Space Apps Challenge 2018 東京会場の審査員チーム!
シークレット審査員、JAXAの鈴木さんも!


「みんな地球の為に集まっているよ!」 by もじゃ-Co


火星で暮らすようになる2040年を見越した「火星センサー Photosensing Dome の開発」


大きなIoT傘で火星の砂嵐を乗り切る!


IchigoJam賞!


NASAのテーマでも力入っている、南極北極、研究対象としても大事なところ


その南極北極を身近に感じる、虫眼鏡型デバイス


グローバルへ進出!


魔法少女として擬人化されたべんぬちゃん


厳正な審査の結果、グローバルへの選出を決めました!
0.07%の確率で地球に衝突するらしい「小惑星ベンヌ」探査機によるデータも楽しみ!


衛星データのビジュアライズをTシャツにしてシェアする作品。コミュニケーションのきっかけになる服、良いですね!


ぶら下がり健康器や、クラッピー付きWiiボードなどいろいろ活用して実現、月歩きを体験するデバイス


なんとNASAのオープンデータに音声が!?
それを使った音楽作品「宇宙の音」宇宙楽器にするとか、おもしろそう


雷のNRTデータ(Near Real Time Data、ほぼリアルタイムデータ)を使った作品。
地球のどこかで落雷があると、写真右下の白い玉が光って音が鳴る!
NRT、いろいろ探すとおもしろそうっ(NRTで検索、234データセットある!)


使いやすいデータとして再配信するのも良いですね!


ロケットが飛ぶか否か、みんなで予想しよう!
ロケット予定オープンデータ、大型LEDで作ったカウントダウンボードをどこかに設置したい!


うなぎの絶滅の謎を、宇宙オープンデータで解析!


大好きなうなぎオープンデータ他、LODでデータをがしがし作ってる小学生、サクくん!


「オープンデータのいいところは、みんなに楽しく使ってもらえるところ!」
オープンデータ界も期待の新星!


宇宙オープンデータでどんどん作品作って、衛星データ、宇宙データへの興味持ってくれるひと増やしましょう!


審査室!


宇宙がテーマの食事、緑の惑星、地球!


全世界同時多発開催「Space Apps Challenge 2018 - Locations
懇親会で活躍、ドイツ会場から日本のビールを注ぐ、IoTビールサーバー


かなり普通のメガネになった、Vuzix製電脳メガネ「Vuzix Blade」(at Vuzix.com)
レンズ面も違和感なし!今回のハッカソンでは登場しなかったものの、虫眼鏡型への応用もおもしろそう。
スマートグラス「Vuzix Blade」ハンズオン:ついにGoogle Glassの理想を実現した? | ギズモード・ジャパン


こちら宇宙ネクタイにしたい、ひとまず、宇宙色に輝くネクタイ by IchigoJam x WS2812B
一部消灯させるカスタマイズ付きプログラムがこちら

10 POKE#700,240,181,68,24,90,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 11 L=30:O=8 12 POKE#704,L*3 15 H=180:S=100 16 V=20 17 A=1<<RND(7) 18 FOR I=1 TO L 20 H=(H+A)%360 30 GSB@HSV2RGB 50 Z=#800+O*3:POKEZ,G,R,B:COPYZ+L*3-1,B+L*3-4,-L*3+3 60 U=USR(#700,#800) 70 WAIT 2 80 NEXT 90 GOTO17 100 @HSV2RGB:R=V:G=V:B=V:IF S=0 RTN 110 D=H/60%6:C=V-(59-H%60)*V/60*S/100:E=V-H%60*V/60*S/100:F=V*(100-S)/100 120 IF!DG=C:B=F 130 IFD=1R=E:B=F 140 IFD=2R=F:B=C 150 IFD=3R=F:G=E 160 IFD=4R=C:G=F 170 IFD=5G=F:B=E 180 RTN

IchigoSodaと宇宙リアルタイムオープンデータを使ってIoT化しよう!

外カメラ x スマホVR = デジタルメガネ

JSで手軽なWebMeganeもオススメながら、iPhoneネイティブアプリとして作ると、顔認識や、QRコード認識などが高速で楽しい!

リアルタイムにQRコード内容をデコードして、視界をオーバーレイ(上書き)するメガネができた。
megane - qrdetector on GitHub」 Swift4で実装

ウィンクシャッターが便利だったGoogle Glassのように、手軽に写真撮影もついでに実装。
ボリュームダウンキーで、シャッター(初回のみダイアログがでるので、VRにする前に押しておこう)
ボリュームアップキーで、視界をズームすることもできる(現在は、1920x1080の画像をデジタルズーム)

こちら「オタマートで売ってるVRゴーグル」の一番安いもの。ボリュームアップダウンが上からアクセスできる!
ボリュームアップダウンキーのついたイヤホンを接続すると、手元でも操作できるようになって便利。
デジタルメガネなUXづくり、いろいろ試していきましょう。

鯖江の道の駅、西山公園前のバス停。日本語表記しかない標識にQRコードをつけておけば、リアルタイムに見ている人の母国語に変換できそう。

Let's hack your sight!

AppDelegate.swift

import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { return true } func applicationWillResignActive(_ application: UIApplication) { } func applicationDidEnterBackground(_ application: UIApplication) { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "applicationDidEnterBackground"), object: nil) } func applicationWillEnterForeground(_ application: UIApplication) { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "applicationWillEnterForeground"), object: nil) } func applicationDidBecomeActive(_ application: UIApplication) { } func applicationWillTerminate(_ application: UIApplication) { } }

ViewController.swift

// // ViewController.swift // megane, QR code detector glass with VR goggle // // CC BY taisukef on 2018/05/24. // https://fukuno.jig.jp/2133 // import UIKit import AVFoundation import MediaPlayer class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate { override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.black self.imageView1 = UIImageView() self.imageView2 = UIImageView() let w = self.view.frame.width let h = self.view.frame.height let w2 = w / 2 let h2 = w2 * 1080 / 1920 let y = (h - h2) / 2 self.imageView1.frame = CGRect(x:0, y:y, width:w2, height:h2) self.imageView2.frame = CGRect(x:self.view.frame.width / 2, y:y, width:w2, height:h2) self.view.addSubview(self.imageView1) self.view.addSubview(self.imageView2) self.initNotificationsFromAppDelegate() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } var input:AVCaptureDeviceInput! var output:AVCaptureVideoDataOutput! var session:AVCaptureSession! var camera:AVCaptureDevice! var imageView1:UIImageView! var imageView2:UIImageView! override func viewWillAppear(_ animated: Bool) { self.configureCamera() self.listenVolumeButton() } // notifications foreground and background func initNotificationsFromAppDelegate() { NotificationCenter.default.addObserver(self, selector: #selector(type(of: self).viewWillEnterForeground(notification:)), name: NSNotification.Name(rawValue: "applicationWillEnterForeground"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(type(of: self).viewDidEnterBackground(notification:)), name: NSNotification.Name(rawValue: "applicationDidEnterBackground"), object: nil) } @objc func viewWillEnterForeground(notification: NSNotification?) { print("foreground") self.listenVolumeButton() } @objc func viewDidEnterBackground(notification: NSNotification?) { print("background") self.removeVolumeButton() } // override func viewDidDisappear(_ animated: Bool) { session.stopRunning() for output in session.outputs { session.removeOutput(output) } for input in session.inputs { session.removeInput(input) } session = nil camera = nil } let DETECT_QRCODE = false func configureCamera() { session = AVCaptureSession() // iPhone Xで実験 //session.sessionPreset = AVCaptureSession.Preset.cif352x288 // 34% 荒い //session.sessionPreset = AVCaptureSession.Preset.vga640x480 // 47% 4:3 なかなかきれい //session.sessionPreset = AVCaptureSession.Preset.iFrame1280x720 // CPU50% 16:9 かわらない? //session.sessionPreset = AVCaptureSession.Preset.hd1280x720 // CPU50% 16:9 きれい session.sessionPreset = AVCaptureSession.Preset.hd1920x1080 // CPU88% 16:9 かわらない? iPhone6でもQRcode offならOK! //session.sessionPreset = AVCaptureSession.Preset.hd4K3840x2160 // CPU93% 16:9 かわらない? QRcode offなら実用的 camera = AVCaptureDevice.default( AVCaptureDevice.DeviceType.builtInWideAngleCamera, for: AVMediaType.video, position: .back) // position: .front do { input = try AVCaptureDeviceInput(device: camera) } catch let error as NSError { print(error) } if (session.canAddInput(input)) { session.addInput(input) } output = AVCaptureVideoDataOutput() // AVCapturePhotoOutput() 写真用 output?.videoSettings = [kCVPixelBufferPixelFormatTypeKey as AnyHashable : Int(kCVPixelFormatType_32BGRA)] as! [String : Any] let queue:DispatchQueue = DispatchQueue(label: "myqueue", attributes: .concurrent) output.setSampleBufferDelegate(self, queue: queue) output.alwaysDiscardsLateVideoFrames = true // 間に合わないものは処理しない if (session.canAddOutput(output)) { session.addOutput(output) } session.startRunning() } var zoom:CGFloat = 1.0 func captureOutput(_: AVCaptureOutput, didOutput: CMSampleBuffer, from: AVCaptureConnection) { // from.videoOrientation = .portrait //デバイスの向きを設定、縦の時 from.videoOrientation = .landscapeLeft //デバイスの向きを設定、landscape left の時 DispatchQueue.main.sync(execute: { var image = self.imageFromSampleBuffer(sampleBuffer: didOutput) image = resizeImage(image: image, ratio: zoom) if DETECT_QRCODE { image = drawQR(image: image) } self.imageView1.image = image self.imageView2.image = image }) } func resizeImage(image: UIImage, ratio: CGFloat) -> UIImage { if ratio == 1.0 { return image } let iw = image.size.width / ratio let ih = image.size.height / ratio let size = CGSize(width: iw, height: ih) UIGraphicsBeginImageContext(size) image.draw(in: CGRect(origin: CGPoint(x:-(image.size.width - iw) / 2, y:-(image.size.height - ih) / 2), size: image.size)) let resimage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return resimage } func drawQR(image: UIImage) -> UIImage { UIGraphicsBeginImageContext(image.size) let rect = CGRect(x:0, y:0, width:image.size.width, height:image.size.height) image.draw(in: rect) let g = UIGraphicsGetCurrentContext()! g.setStrokeColor(UIColor.white.cgColor) g.setLineWidth(1) let font = UIFont.boldSystemFont(ofSize: 14) let textStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle let textFontAttributes = [ NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: UIColor.black, NSAttributedStringKey.paragraphStyle: textStyle ] // 顔認識もおもしろい // let detector : CIDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options:[CIDetectorAccuracy: CIDetectorAccuracyLow] )! // 読める四角は今のところひとつだけ // let detector : CIDetector = CIDetector(ofType: CIDetectorTypeRectangle, context: nil, options:[CIDetectorAccuracy: CIDetectorAccuracyHigh, CIDetectorAspectRatio: 1.0] )! let detector : CIDetector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options:[CIDetectorAccuracy: CIDetectorAccuracyHigh] )! let features : NSArray = detector.features(in: CIImage(image: image)!) as NSArray if features.count > 0 { for feature in features as! [CIQRCodeFeature] { var rect: CGRect = (feature as AnyObject).bounds rect.origin.y = image.size.height - rect.origin.y - rect.size.height // QRコードを上書き! g.beginPath() g.setFillColor(UIColor.white.cgColor) g.addRect(rect) g.fillPath() feature.messageString?.draw(in: rect, withAttributes: textFontAttributes) } } let resimage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return resimage! } func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> UIImage { let imageBuffer: CVImageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)! CVPixelBufferLockBaseAddress(imageBuffer, CVPixelBufferLockFlags(rawValue: 0)) let baseAddress = CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0) let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer) let width = CVPixelBufferGetWidth(imageBuffer) let height = CVPixelBufferGetHeight(imageBuffer) let colorSpace = CGColorSpaceCreateDeviceRGB() let bitmapInfo = (CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue) let context = CGContext(data: baseAddress, width: width, height: height, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: bitmapInfo) let imageRef = context!.makeImage() CVPixelBufferUnlockBaseAddress(imageBuffer, CVPixelBufferLockFlags(rawValue: 0)) return UIImage(cgImage: imageRef!) } // volume switch var initialVolume = 0.0 var volumeView: MPVolumeView? func listenVolumeButton() { volumeView = MPVolumeView(frame: CGRect(x:-3000, y:0, width:0, height:0)) view.addSubview(volumeView!) let audioSession = AVAudioSession.sharedInstance() do { try audioSession.setActive(true) let vol = audioSession.outputVolume initialVolume = Double(vol.description)! if initialVolume > 0.9 { initialVolume = 0.9 } else if initialVolume < 0.1 { initialVolume = 0.1 } } catch { print("error: \(error)") } audioSession.addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.new, context: nil) } func removeVolumeButton() { AVAudioSession.sharedInstance().removeObserver(self, forKeyPath: "outputVolume") volumeView?.removeFromSuperview() } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if keyPath == "outputVolume" { let volume = (change?[NSKeyValueChangeKey.newKey] as! NSNumber).floatValue let newVolume = Double(volume) if newVolume > initialVolume + 0.05 { if let view = volumeView?.subviews.first as? UISlider { // volume up pressed view.value = Float(initialVolume) if zoom < 12.0 { zoom *= 1.2 } else { zoom = 1.0 } print("zoom: \(zoom)") } } else if newVolume < initialVolume - 0.05 { if let view = volumeView?.subviews.first as? UISlider { // volume down pressed view.value = Float(initialVolume) /* if zoom > 1.0 { zoom /= 1.2 } */ if let image = self.imageView1.image { saveImage(image: image) print("save image") } } } } } // save private func saveImage(image: UIImage) { UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) } }

megane - qrdetector on GitHub」 in Swift4

links
- WebMegane - your new digital sight / デジタルな視界 on iPhone Safari x VR goggles (JS、webアプリ版)

2007年の今日、5/12、アニメ「電脳コイル」が放送開始。
バーチャルとリアルが融合した、近未来の世界はまさにエンジニアの夢。
12th May is anniversary day of "COIL A CIRCLE OF CHILDREN", a dream of all engneers!
電脳コイル on Otamart

オタマートで買ったVRゴーグル
任天堂伝説のゲーム機、バーチャルボーイ風をスマホVRとWebVRで手軽に創る

スマホというイノベーションは、安価で軽量なVRディスプレイ、Oculusを産んだ。
iOS11で利用可能になったweb上でのカメラのストリーミングを使った「WebMegane」を作ってみた。
I created WebMegane, digital eye glasses using web technologies.

カメラからの画像をCanvasに2枚貼り付け、VRゴーグルでこのサイトを開いて見るだけ。
WebMegane」 web app for iOS11 with VR goggles

立体感はなく、ちょっと遅延が気になるが、メガネをしなくてもゴーグルでクリアな視界が見られる体験が楽しい。
2014年のSXSW発表時点では、ネイティブアプリでしかできなかったものが、JSで簡単に誰でも無料で自在に配布できるようになったのは大きい。
It's so fun and easy to share!


ゴーグルのボタンタップで、視界をモノクロ、セピア、色相回転、色反転、標準と切り替え可能。
You can modify your sight using the button on your goggles.


モノクロモードにしたWebMeganeをかけて開発していると、モノクロモードになったかどうかの確認ができないことに気がつく。 手軽に、色弱や弱視など、障がいを体験することができるメガネとしても使える。

もちろん真骨頂は見えないものを見せるメガネ。
You can improve your sight by WebMegane!

オープンソースかつオープンライセンスな WebMegane CC BY、どんどん進化させてみたいと思います。
Join us on GitHub "WebMegane - github.com"

links
- Circle for Glass concept by Zeppelin x jig.jp in SXSW Trade Show 2014
- iPhoneで開発可能な「攻殻機動隊」の世界、80年代の夢が現実に (2014)
- 課題と向き合い、みんなで創ろう、世界最先端IT国家、電脳メガネサミット2018 in 東京
- Smart Glasses x Open Government = Smart City, Smart Glasses Summit! (2012.8.3)

Happy New Year! あけましておめでとうございます。

The first thing created is a small jig tool to join glasses and a light!
新年最初の作品は、メガネとライトをつなぐ治具!

Measureing, modeling for neoplug, print by 3D printer!
強力ライトを測って、neoplug用にモデリング、3Dプリンターで印刷。
"LightMounter for neoplug Glasses by taisukef - Thingiverse"


Finished! できました!


Very bright and useful but a little heavy... とても明るくて便利!でも、ちょっと重すぎました


I've started 2018 with special glasses made in Sabae!
鯖江産めがねに、スペシャルなレンズを付けた新メガネと共に、2018年スタートです!
Psycho Bunny, lutina lens with Blue Cut Coat(TBC)


"Smart Glass Summit 2018 in Tokyo" will come on 22 Feb!
電脳メガネサミット2018 in 東京」2.22開催!

ASIA OPEN DATA HACKATHON was launched in 2015.
In this 2017, Taiwan and Japan connected! (*MOU at VLED)
Japan's theam is Weather-Driven Solution!

Our team!


The important thing is humidity!


I helped developping on IchigoJam!


IchigoJam controlled by PC via MixJuice (network board for IchigoJam).
*tips of IchigoJam
ALT+'[' → '_' (under line)
Use tethering when you can't connect on a local network


PCN meets CoderDojo Japan at MFT2017!


Japan is not only Tokyo! Makers festival will hold in Ueda city Nagano pref!
上モノフェス」 Ue-Mono-Fes


Glass type Wearable "OTON GLASS". Glass will be the king device!


CEO of OTON GLASS


It's show time!


Let's connect this great world by techs!

ASIA OPEN DATA HACKATHON and Maker Faire

ものづくり好きによるイベント「NT金沢2017」7/8-9、金沢駅にて開催!
「作ってみた」は正義。


生活に色を添えるPico-Color、5VとGNDをIchigoJamのCN5につなぐと青くゆっくり点滅はじめます。
Pico-Colorのセンサー部分を触ると、赤から緑へと色変化。
PB4をIchigoJamのOUT1へ接続して、次のプログラムで、赤と青が交互に点滅するなど、ちょっとオシャレな光る部品として使えます!

10 OUT1,1:WAIT60 20 OUT1,0:WAIT60 30 GOTO10


配線は、Pico-Colorの左側(POW/PB5/PB3/PB4/GND)へピンソケットなどをはんだづけするだけ


今回の買ってきたものたち
- キーボード及びキーボードを自作するための本
- Brainfuck言語でCPUを作ってみたい本 by なませれ宇宙開発機構 - (参考、IchigoJamでつくってみたBrainfuck
- FPGA技術SPECIAL
- 世界のMakerFaireの歩き方
- Pico-Color
- 無駄な抵抗コースター
- 電子工作 x 水引 アクセサリー - (参考、電子工作アクセサリー)
- Qiから電源をとる回路


Pico-Colorを使った七夕の笹デモ、触るとじわっと色の変化が伝搬するのが楽しい


ここだけ特価500円!何か作ったら、売ってみたくなりますねっ


電脳メガネ「ハゲスカウター」発見、メガネのツルにワイヤーで7セグLEDをつけたGoogle Glass風 / VUFINE風。
温度や時間など、この形式、割りと良さそう!neoplug対応版をぜひ!(neoplug関連記事)


7セグLEDを16x8、128コ並べた動画プレイヤー


裏を見せてもらったら気合の手配線!


キーボード自作している人!IchigoJamのキーボードも自作キットとか用意してもいいかもしれない。


ジャンパーワイヤーや抵抗、クリスタル、コンデンサなど、電子部品を使ったアクセサリー。


抵抗入り!


メモリーカードをIchigoJamに接続するJamToastも発見!


NT金沢の会場は金沢駅東口から徒歩1分、まっすぐ地下へ入ってすぐ!お近くの方、ぜひどうぞ!
NT金沢
訪問時写真 on Facebook


ランチに、石川県内灘町のカレー屋さん「るびな ばいざべい
カレーと一緒に頼んだ、季節の野菜のパコラ(インドのてんぷら風)につける謎の塩がうまい!


レジ前に売ってた謎の塩、10種類のスパイス&ハーブによる「るびなオリジナルマジックソルト」


いい野菜が手に入ったので、カットして、焼き野菜をつくってみる


マジックソルトと相性抜群、新鮮焼き野菜&焼き肉!塩で食べる焼肉、オススメ!

料理も、手芸も、電子工作も、プログラミングも、なにかつくるのは楽しい!

links
- NT金沢2016訪問記


2日目のめがねフェスでは、PCN鯖江に通う若きエンジニア2人の姿。
There are 2 young engneers at Ichigo-Glass booth.


展示デモプログラムはPCN鯖江エンジニアMASAHARU作の「ネオジム磁石 - MASAHARUの魂のプログラム」 - Demo "Neodymium magnet - MASAHARU's Program" by PCN Sabae engneer MASAHARU


PCN鯖江、新商品開発中。 Under developping by PCN Sabae.


ついに歩いた、カニロボ! Crab Robot Walks!


テスト中のPCN鯖江オリジナル基板。 Original PCB by Kids of PCN Sabae.


未来のエンジニア育成、IchigoJamはんだづけ体験するこども。 Future engneer!? Kid tries to solder IchigoJam.


自分で作ったパソコンが動いた! It's works!


"IchigoJam web by WebAssembly"
IchigoJamが気になっている方へ、PC/Macなどのブラウザでお試しできるIchigoJam WebAssembly版Chromeにも対応しました!ポイントは、JavaScriptのWorkerスレッドで動作させることでした。
IchigoJam WebAssembly version works on Chrome also! The problem solved by JavaScript Worker.

動いた記念の「めがねくだりゲーム」 Glass Rafting Game!

10 CLS:X=15 20 LC X,5:?"V" 30 LC RND(29),23:?"O-O" 35 WAIT 5 36 X=X-BTN(28)+BTN(29) 37 IF SCR(X,5) 40 GOTO20


めがねのまちさばえ大使となった仮面女子。 KamenJoshi inaugurated Ambassador of Glass City Sabae.


鯖江市とコラボする、最強の地下アイドル「仮面女子」と。Ichigoメガネブースにて。 with KamenJoshi at our Ichigo-Glass booth.


めがねフェス、いい天気! MeganeFes with good weather!


��都、三重、金沢、仙台、福井、集まったPCNクラブ! PCN club's members!

links
- PCN
- めがねフェス / MeganeFes
- 仮面女子 / KamenJoshi
- IchigoJam

ウェアラブル(電脳メガネ)と走ったつつじマラソン!記録は28分22秒(5km)
I ran Tsutsuji Marathon in Sabae city with nwearable glass!

今回の視界はシンプルにタイムを表示(合成用素材
This is my sight (a image made with resource)

今回の装備、VUFINE+とラズパイゼロで動かすIchigoJamをneoplugメガネに装着。ポケットにバッテリー。
This is my wearable set VUFINE+ and IchigoJam on Raspberry Pi Zero with neoplug. And a battery in my pocket.

プログラムはシンプルですが便利でした。 Program is useful but so simple!

10 CLT 20 CLS 30 LOCATE 5,20 40 T=TICK()/60 50 PRINT T/60;":";DEC$(T%60+100,2) 60 WAIT10 70 GOTO 20

ゼッケンは100均の小さな磁石でくっつけると楽でした!(すごい強風でなければ大丈夫そう、8コ入りを2つ買って200円)
It was good to use magnets to put a number!

この日はSkypeで、川崎北部少年少女発明クラブ第二回IchigoJam講座にもおじゃましました!
I went virtually to IchigoJam #2 on the kids club of Kawasaki north!

photo by Yasuhide Nakata

ほしいものはつくろう!
Let's create what we want!

links
- つつじマラソン2016 28:54
- つつじマラソン2015
- つつじマラソン2014 Google Glass
- つつじマラソン2013 MOVERIO
- マラソン2012 MOVERIO

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS