Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

サイトに「プロダクト」を追加しました:気軽にご相談下さい

f:id:weed_7777:20160613194530j:plain

ハードウェアからWebアプリまでやりましたが、私が「何をやってきたか」「何ができるか」がわかると思います。経験分野については多少詳しいので、ぜひお気軽にご相談下さい。

大きく10個に分類しました。上の方が新しいです:

あらかじめ断っておくと、以下はおっさんトークです。あしからず。

1. 画像処理

f:id:weed_7777:20160613200724j:plain

↑画像をクリックすると 画像処理へ飛びます

KinectOpen CV、HoloLensなどの登場によって、かつては大企業のラボでしかできなかった画像処理アプリケーションの開発が、個人でもできるようになりました。私もまだAPIを叩いているレベルです。

私は、とある物理教育用アプリをつくりたくて、OpenCVを始めました。最初に困ったのは周囲に同じことをやっている人が全然いないことでした。基本的に研究所や研究室で使われるものです。

画像処理をうまく使ったアプリはまさに魔法のように見えますが、ちょっと高度なことをしようとするとノイズに苦しめられるのも画像処理の宿命です。欲張ろうとするとユーザー体験がボロボロになってしまいます。HoloLensはその辺りのことをよく考えて作られていると思います。

また、今の画像処理技術が大きく発展したのは2000年代と比較的最近なので、教科書的な本がなく少し調べようとすると、すくオリジナルの論文を読むことを強いられます。しかも使っている数学が難しいし…

でも、画像処理をやって、自分の強みを持つことは良いなと思いました。強みが明確になると、学習が散逸せずに集中でき、深く掘り下げていくことができます。また、そのような能力は市場的価値も高いです。これからも大事にしたいと思います。

2. IoT

f:id:weed_7777:20130405183505j:plain

↑画像をクリックすると IoTへ飛びます

Arduinoではネットワークに接続するのがちょっと面倒くさかったのですが、Raspberry Piが登場して状況は一変しました。

Wi-Fiドングルをさせば、ちゃんとドライバも入っていて、すぐ使えるようになるのは画期的です。

他にもRaspberry Piは、いろいろと「期待通りに動いてくれる」ます。これは市場を制覇するために周到に練り上げられた製品です。正直なところ、もうArduinoには戻ることができません。

また、LittleBitsのように簡単にインターネットに接続できる製品も、いろいろ出てきています。部品もブレッドボードから機能別モジュールを接続する時代へ変わってきました。

個人的にはIoTは「自動化」が至上命題かつ限界ではないかと考えています。

3. Webアプリ

f:id:weed_7777:20160613201333j:plain

(上のBabelはES2015、ES7を現在のJavaScriptコードに置換してくれるツールです)

↑画像をクリックすると Webアプリへ飛びます

転職して2番目にやるよう言われたのは、悪名高きJavaScriptでした(1番目は後述するObjective-Cでした…)。

以前日曜プログラマー時代に挫折した経験があったので、最初からCoffeeScriptを採用してJavaScriptに直接触れることは可能な限り避けました。でもCoffeeScriptコンパイルしたJavaScriptにコメントが残らないんですよね…個人でプロトタイプを作っているうちは良かったのですが、チーム開発ではかなり難点でした。

今はTypeScriptを使っています。しかしJet BrainのJavaScript IDE「WebStorm」を使うようになったので、文法エラーはすべて指摘してくれるようになりました(それでも動かないときは動きませんが)。次に何かやるときはES2015でもいいのかなと思い始めています。

でもAsync/Awaitが入るのはES7から(まだ提案状態)なんですよね。JavaScriptは非同期処理が一番しんどいので、それまでは近づかない方がいいかな、と思いつつ意外に書く機会が多いのがJavaScript

まあ書けることは役には立っているのですが、長めのコードを書こうとするときに全然前に進めないあの無力感は今でも本当に嫌です。

4. iOSアプリ

プロダクト-iOSアプリ

f:id:weed_7777:20160613201416p:plain

f:id:weed_7777:20160613201416p:plain

(上の画像は、第二次大戦中のイギリスのポスター「落ち着いて、慌てずに」をもじったもの)

↑画像をクリックすると iOSアプリへ飛びます

転職してまずやるように言われたのは、当時悪名高きObjective-Cでした。いきなりですよ。ひどい!友人には「一人で学習するのは絶対に無理。仲間を作れ」とアドバイスをもらい(おどされ)、渋谷や横浜のObjective-Cの勉強会やもくもく会に通いました。

デリゲートは、離れたオブジェクトにメッセージを飛ばして突き刺すんだ、というイメージができると、少し落ち着いてコーディングできるようになりました。

当時はCocoaPodsが生まれて間もない時期で、私はPodをAから順に全部試していきました(Rくらいまで行きました。200個くらいかな?)。その記録は以下に残していますが、もう古い情報です。

qiita.com

今でも「植田さんはObjective-Cやってただけあって、変数名が長いね」という、良いのか悪いのかわからないコメントを頂きます。

5. ハードウェア

f:id:weed_7777:20160613201651j:plain

↑画像をクリックすると ハードウェアへ飛びます

f:id:weed_7777:20150314142829j:plain

↑画像をクリックすると セミナーへ飛びます

Arduinoをつかった電子工作です。これは持論ですが、電子工作は人を選びます。やってみて「ふーん」という人と、「すげえええ」と感じる人(2割くらいかな?)とに分かれます。そういう意味では「電子工作ができる」というのは競争力のある能力でしょう。

ちなみに私はどハマりしました。いやー、とにかく楽しかった。

最初は娘のオモチャを一生懸命つくり、後半はMakeに出す作品を作りました。展示1ヶ月前からC#を始めてギリギリ間に合わす、なんてこともありました…ん、これは正確には画像処理の話か。

都立大学の電子工作研修が、今思えば最初の出会いでした。先生はNASAでハンダ付けを習ったそうで。この研修がとても楽しかったです。難解な解説がスッと頭に流れ込み、自分の中にある才能に気づいたのもこのときです。もっと早く出会いたかった!

まあ、電子工作にハマったのは、登場したばかりのRailsに挫折したから、というのもあるのですが。

そして教師を辞めます。

6. Web APIRails

f:id:weed_7777:20160613222029j:plain

5個のはずでしたがどんどん行きます。

Web APIは、最初出てきたときは夢の技術のように言われましたが、今のようにJSONを書けば良いというものでもなく、しばらくしてしぼんでしまったように思います。

個人的には、星座占いのWeb APIを叩いてみたり、Amazonの商品説明を形態素解析して「独特」「世界観」を含む商品を見つけ出す(「バルダーズゲート」などが引っかかります)なんてことをしていました。

Railsは…周囲の皆が勧めてくれたのですが、挫折しました。ちょっとでも変な書き方をすると無視されるのがJavaScriptっぽくて辛かったです。ですよねえ、naorangerさん。

あとはLMS(Learning Management System)の日本語化プロジェクトに参加したこともありました。数年後に私の名前を発見した後輩が驚いて連絡してきたのが印象的でした。

7. Java

f:id:weed_7777:20160613222557j:plain

公立中学校教員として命を削る日々を送っていたころ。この辺で買ったJavaの本がオブジェクト指向プログラミングを丁寧に説明してくれていて、なるほど!と思いました。

それに伴いUMLも勉強しました。UMLはかなりハマって、授業案をシークエンス図で書いていた教師は世界広しといえど私以外にはなかなかいなかったのではないかと思います(笑)。ちなみに学習とは汎化です。今でも図表はすべてUMLで書いてます。いやー、勉強は無駄にならない。

8. C

f:id:weed_7777:20160613222803j:plain

博士課程を中退することになる最後の年。ここでなぜかCが出てきます。実はあるPC用RPGがシナリオ開発用アプリケーション(たぶんUnityのようなもの)を同梱していて、その制御言語がCでした。1年くらい狂ったようにプログラミングしていました。楽しくて仕方がなかったです。

私は主に他の人が使うライブラリを作っていました。感謝されるのがたまらなかったです(笑)。

9. PerlPHP

f:id:weed_7777:20160613223037p:plain

私は大学の寮に住んでいたのですが、ちょうど神ゲー「Age of Enpire」が降臨されまして、寮内をLANでつないで対戦しようという話になり、ちょうどその頃研究室で勉強していたネットワーク管理の知識を使って指揮をとりました。

で、せっかくつないだのだから、ということで掲示板を導入し、利用人数が増えるに従って複数掲示板にしてソースを書き直したりしていました。そのときは全部Perlでした。Perlはやや大変でした。

研究室の方は新しい技術であるPHPでホームページを作りました。いやはや、PHP、めちゃくちゃ便利。当時は「マンモス本」という太い本がありまして、載っている組み込み関数を一つ一つ読み込んでました。

10. N88-Basic

f:id:weed_7777:20160613223152j:plain

中学入学時に親父がPC9801を買ってくれました。当時は高い買い物でしたでしょうから、親父には感謝です。しかし私は「ウィザードリィ」や「ソーサリアン」「ラストハルマゲドン」などで遊び呆け、プログラミングはほとんどしませんでした。

しかし一度だけ大量の実験データを処理しなければならなくなり、重い腰を上げてBasicを書きました。自分でコーディングした最初の経験でした。

プログラムを書き終わると処理は一瞬で終わってビックリしました。翌日友人に「パソコンって便利だねえ」と話したら「それが本来の姿だよ」とご指摘いただきました。よくわかってるよ、福田くん!


まだ読んでくれていたんですか?ありがとうございます。ずいぶん脱線しましたが、私の「プロダクト」。ぜひ、ご活用下さい。