チンゲン菜で作るおいしい餃子とプロジェクトマネジメントの関係

数十年振りの大雪で、千歳行きが欠航になってしまったよ~。そんな訳で、家に帰って餃子を作った記録です。ちなみに、道民としては千歳空港が大雪になるのだから、今年は特別どう仕方がないよね、な気分ですね。あそこは、雪が少ないので空港になっているので、例年、札幌が雪で埋まっていても千歳空港は大丈夫なのです。ちなみに、道民なので当然のごとくAIRDO を使いますよ。

さて、以前(と言っても7年前ですね)、PMBOKとCCPMのおいしい関係(仮) | Moonmile Solutions Blog というのを .NET ラボ勉強会で発表しました。CCPM 系のプロジェクトマネジメントも個人的には10年以上やっていますが、実際のプロジェクトでは試したことはありません(部分的にはあるけど)。その第一の理由に、WBS/PERT図/ガントチャート を同時に操れるツールが無く、また10年前にはその技術的な手段がなかったことがあげられます。去年の正月にひな形として、XAML + Xamarin + タブレットの組み合わせ少し作ってみたのですが、もう一度挑戦してみようとしているところです。まあ、ツールは「かなづち」でしかないので、中身のほうが本質的なんですけどね。本質的なほうは、年明けから書籍として書き始める予定です。

ソフトウェア開発と料理は似ている

2016-12-22 – 散財日記2008 ここに、ちょっとだけ言及してあったので賛同しておきましょう。プログラマやプロジェクトマネージャは「料理」をしてみると良いです。レシピ≒仕様的なものもあり、2,3品目を同時に作る≒タスクの同時並行なところも一緒です。ところどころで臨機応変なところとか(フライパンの状態をみたり、焼き加減をポーリングしたり)、下ごしらえをして準備をしておくところ(下味とか、中華料理の場合は材料を切っておくのが重要とか)も同じです。まあ、PMBOK に従って料理を作ってみるのもありでしょう。

まあ、学ぶところは多いのでプログラマ、プロジェクトマネージャな方は料理をやってみるとよいです。料理本のレシピの書き方とか(クックパッドでもいいけど)が参考になりますよ。

巨大チンゲン菜で餃子を作ろう

おらの畑で採れたチンゲン菜を使いましょう。買うときは、ひとたま全部使うとよいです。年末は、葉ものが高くなっているので、まあ、安くなったら作るということで。

2つ使おうと思って採ってきたのですが、さすがに多いのでひとつだけ使いました。重さは、まあ大体で大丈夫。白菜とかキャベツでも同じですが、茹でると小さくなるので。

鍋に入れて、1分間だけ茹でます。

ざるに開けて、荒熱を取ります。結構縮みましたね。

みじん切りに刻んでいきます。面倒なので、本当のみじん切りじゃなくて細切れぐらいになってますが、これで大丈夫です。

ほら、こんなに小さくなりました。

豚と牛のあいびき200グラムと混ぜます。これで40個分ができます。豚だけで作るとちょっと脂っこい感じの餃子になり、牛肉だけだとハンバーグっぽいニクニクしい餃子になります。作るときの好みで分けてください。量は、200~250グラムぐらいで大丈夫。

薬味のために、すりおろしの生姜を入れます。これも、好みで生姜のみじん切りとか、擦った後に汁だけ入れるとか、ニンニクを使うとかでもいいでしょう。肉の臭みが取れます。

ボールに入れて、最初は手で混ぜて後はヘラで混ぜています。手がべたべたになるので、手袋をしたりしますが、面倒なので4,5回だけ手を使ったほうがいいです。その後はヘラで十分。

調味料は、塩をひとつまみ、酒・醤油・ごま油を大匙1、入れています。ごま油を入れるとぐっと中華料理っぽくなるのでおすすめです。胡椒を入れるとちょっと洋風になります。

平たいバレットに移します。そのままスプーンですくってもいいのですが(お店の人はそれで作りますよね)、家だと餡が余っても困るので40等分できるように平たくします。ちなみに、余った分を単に焼いても美味しくないので、清く捨てています。

さて、40個を一人で包みます。ひとりで40個というのはなかなかの苦行なので、ビールを飲み飲みやると効果的です。餃子の皮は、大判のものを使います。ふつうの大きさだと餡が大きくなって包みにくい=時間が掛かる、ので嫌になるので、大判の皮を買ってちょっと少な目に餡を入れるのがコツです。

40個できたのが、この状態です。多少はみでてしまっても、少し口が開いていても大丈夫です。焼いても水餃子にして茹でても、餡が固まるので、見かけは関係なくおいしく食べられます。

ホットプレートに少し油をひいて、40個一気に並べます。油をひくのは少し焦げ目をつけたいのと、底の部分だけ最初に焼いてはがれやすくします。

200度で1,2分焼くと、こんな風に少し焼けた感じになります。こうすると、水を入れてもはがれやすくなるのです。

本当はお湯を入れるのがいいのですが、水でも大丈夫です。40個の餃子で150cc弱入れると、うまく水を吸ってくれます。多いとべたっとした感じになるし、少ないと皮が水分を含んでなくてぱりぱりすぎる感じになります。ここは何回かの試行錯誤が必要ですね。

image

水/湯を入れたら蓋を閉めて、むらし状態にします。餃子の王将と同じ製法です。

何回か開けて確かめてみて、こんな風に中身が透けて、水が程よくなくなったら蓋をあけます。最後の水分は、こうやって外に飛ばすようにします。こうすると、うまく底の部分が焼けます。

ホットプレートで金属のフライ返しはダメなんですが(フッ素加工が取れてしまうので)、まあ、フライ返しを使うのが楽です(このホットプレート自体も10年ものだし)。耐熱プラスチックのフライ返しを使ってもいいですよ。

焼いている底を見せるようにすると、美味く見えるのですが、自分用だし面倒なのでガンガン取り出してしまいます。

たれは、酢と辣油だけで ok です(醤油は入れていません)。S&B の辣油が辛くておいしいです。子供には、たれをつけずにそのままでも美味しい。家なので、七味を入れるとか、ポン酢を使うとか色々できます。

そんな訳で、白飯を温めて、ビールをもう一缶開けて戴きます。日本人だから、餃子には白いご飯が必要ですよね。by 孤独のグルメ

チンゲン菜の餃子レシピは、仕事で一緒した中国の方に教えてもらったものです。キャベツと違って臭くならないし、白菜よりも水分を含んでくれます。水餃子にしても美味しいので、ぜひお試しあれ。

カテゴリー: 雑談 | チンゲン菜で作るおいしい餃子とプロジェクトマネジメントの関係 はコメントを受け付けていません

中華な組み込みボードを買おう&使おう

手に入りやすい組み込みボードと言えば、Raspberry Pi や Arduino が有名ですが、ちょっと高め(とはいえ、PC やスマートフォンを買うよりは安いけど)が難点です。となれば、中国での互換機を買うのもよいですよ、という話です。

中国産だと品質がとか技適がというのもありますが(技適は「広い家」で実験すればいいですよね)、会社に納品と言うの場合は高品質&入手の継続性が求められますが、個人であれこれ実験する場合には中国産の製品でも十分です。というか、実質、深圳や上海から送られてくる製品は日本や欧米の製品を既に上回っていると思います(安いのは人件費廻りか?)。特に、組み込みボードの場合は、入手性を考えて予備を含めて2個以上買うことが多く初回の購入であってもそれなりに安いほうがお財布に優しいでしょう。

久し振りに「表徴の帝国」を読み返したのですが、東洋のパッケージの考え方は西洋のパッケージとは違います。表層にこそ意味を持たせ表層のみでも独立して意味を成すという考え方が日本や中国には共通してあることがわかるでしょう。欧米の Kickstater よりも中国のほうが箱のデザインに気を使っていることがわかります。まあ、中国郵便でガムテで貼ってあるし、部品関係は透明ラップでぐるぐる巻きですけどね。これはだいぶん慣れました。

Aliexpress で電子部品を買うと、だいたいこんな包装です。これは 7インチ液晶2枚です。

ちなみに、AliexpressAlibaba で購入して日本に送ると、ほとんどが中国郵便&無料発送で送られきます。UPS とかも使えますが高いので、中国郵便を使っています。これは日本郵便に引き渡されるので書留になるらしく、20回位買っていますが紛失は一度もありません。何でも安いのではなくて、深圳や上海で作っているものを買うと安いです(日本や欧米から輸入しているものは当然高い)。つまり、中国の工場で部品として作られて欧米に出しているものが安いわけです。そのほかは ebay のほうがいいかもしれません。

深圳、上海、香港は地理的に日本に近いので、中国郵便であっても向こうから Shipping(発送した)のメールが来てから1週間ぐらいで届きます。これが欧米だと船便だと1か月ぐらいかかります(以前、英国から Raspberry Pi 初代を送って貰ったときは、こちらに到着する直前に RS コンポーネントから発売されていましたよ)。そういう点で、部品を買うのに日本は欧米に比べると優位な位置にあります。

はじめて買うときは、いきなりスマートフォンのような1万円強を買うのではなく、中華 Arduino 300円のようなもので試してみましょう。長いと2週間位かかることもあるので、自分が欲しい時期と到着する時期がずれるので、無駄買いしないように気を付けてください。

以下は、手元の組み込みボードの色々を。

LattePanda

http://www.lattepanda.com/ で購入できる Windows 10 が動く組み込みボードです。Search LattePanda- DFRobot で $89 で購入して、Windows 10 Pro へアップグレードしています。Arduino がボードで直結している状態で Firmata で制御します。まあ、そうなると普通に PC + Arduino の組み合わせで良いのでは?とは思うけど、この手の Windows 組み込みボードとしては1万円弱なので安いほうかと。

NanoPi

NanoPi 2 Fire は http://www.nanopi.org/ で購入ができます。Raspberry Pi 互換機で Linux を動かすこともできるし、Android 5.1 が動きます。Android のほうは Google Play が動くもので、ソースコードがからビルドもできます。NanoPi2  Fire で $22.99 です。

Android Things が出てきたので、NanoPi  の役割が…と思わなくもないのですが、積極的に Android のコードに対応しているところをみると、Android Things のほうも独自に対応していくんじゃないかなと思ってます。

Orange Pi

Raspberry Pi 互換機の老舗? Orange Pi です。互換機の Orange Pi PC は Rasbian も動くし Scratch も動きます。Orange Pi PC は Aliexpress だと $15 位で買えます。

Android 4.4 が動くので購入してみたのですが、ちょっと重くて使い物にはなりません。なので、普通に Raspberry Pi 互換機として利用するのがベターかと。

orange pi pc – Orangepi

orange pi zero – Orangepi

Orange Pi Zero は、小型で WiFi 付きなのですが、HDMI がないのでディスプレイに出すのにひと苦労します。TVOUT の出力はあるので、そのあたりは自作するパターンで。

https://pbs.twimg.com/media/C0KbsegUoAAkU_v.jpg

Onion Omega

Onion – Invention Platform for IoT は、組み込み Linux のボードで $19.99 です。Onion が中国だったかは覚えていないのですが、Kickstarter でワンセットを買いました。

自前で WiFi を持っているので、Python を入れてサーバーとして使うことができます。

そんな訳で、23日発の羽田発千歳行きが欠航になってしまったので、気晴らしがてらにざっとまとめですよ。

カテゴリー: 組み込みボード | 中華な組み込みボードを買おう&使おう はコメントを受け付けていません

Android Things 上で Xamarin.Android を動かして F# を使う

この記事は、F# Advent Calendar 2016 – Qiita の 17日目です。なんか、曜日を勘違いしていて担当が日曜日だと思っていたんですよね。ほぼ日手帳が月曜日はじまりのカレンダーを使っているものだから、カレンダーの右端は日曜日なのですよね。長年使っていて便利です…という宣伝はさておき、F# の話です。

Android Things が発表された

Android Things が先週 Google から発表されました。

image

もともとあった、Brillo の進化形ということ(私は Brillo 自体をよく知らない)なのですが、前身はさておき、Raspberry Pi 等で Android が動くという環境です。もともと、Android の足回りは Linux な訳ですから、Raspberry Pi のように Linux 互換の OS(Raspbianなど)が動く組み込みボードであれば動く可能性もあったし、いままでも Raspberry Pi 上で Android 4.4 を動かすとか、Orange Pi や NanoPi のような Raspberry Pi 互換機で Android 5.1 が動くというパターンもありました。実は、つい先日  Android 5.1 をソースコードからビルドして NanoPi 2 Fire で動かすまで。 | Moonmile Solutions Blog な形で、Android のソースコードからビルドして NanoPi で Android 5.1 を動かすところまでたどり着いたところです。

もともと、スマートフォンの動作環境として開発された Android ですから、スマートフォンだけにターゲットを絞ると、Android Things が出てきた意味がよくわからないと思うので、少し背景を解説しましょう。

Android Things が現れた背景

スティックコンピュータと Raspberry Pi のような組み込みボード(ここでは OS が動く組み込みボードを対象にします)の違いは、その拡張性にあります。拡張性とはいっても、デスクトップ PC のようにストレージを増やせるとかメモリを増やせるとかということではなくて(そういう点でも、スティックコンピュータは拡張性がありません)、GPIO などを使って機器制御ができるという「拡張性」になります。いわゆるLチカのようにON/OFFでLEDを光らせるだけでなく、液晶ボードの I2C 通信や、各種サーボの PWM 制御によるロボットの動作、各種センサーのデータ収集などに使えます。

かつて、データ制御やロボット制御は、PC に高価な GPIO ボード(確か50万円位したはず)を繋げて制御したときもあるのですが、最近だと、安価な Raspberry Pi などを使う(学習用の組み込みであれば5,000円程度です)ことが可能です。そう、ある意味で「壊れても痛くない」程度の金額になります(まあ、個人でやると痛いけど)。

なので、今だとある程度工夫すれば、PC + 組み込みボードという金額的にも場所的にも費用が掛かるものを、組み込みボードで小型化かつ安価にできるようになってきました。

Raspberry Pi の場合、Linux を乗せて動くので基本はターミナルで動かします。学習用としてはデスクトップPCの代わりとして使えるけど、ディスプレイ無しの安価な制御PCとしてのほうが有効に使えます。というのも、画面まわりが非力で(最近は高機能になりましたが、PC のグラフィックボードよりは非力です)画面のあれこれと、制御のあれこれをやろうとすると、結構 CPU が大変なことになってしまうのです。ここで、「住み分け」として、高価な UI は PC でやって、制御絡みは組み込みボードでやります。やってもよいのですが、単体で動かすとやっぱりなんらかのモニタ的な表示がないと辛いものがあります。電源がついたあとに動いているかどうかすらわからないという状態に陥りますね。

ここで、Raspbian 上で Qt などを使って UI を作ってもよいのですが(実際、そうやって作っている方も多いt思います)、UI を作るとなると Windows や Android のように既にノウハウのあるところの開発者がいたほうがいいですよね。

そういう発想のもとで、UI の性能自体は OS の性能はぐっと落ちるかもしれないけど、アプリケーションは Windows のように作るというのが Windows IoT Core の考え方です。Windows IoT Core は、PC の Windows 10 とはかなり使い方は違っていますが UWP アプリ(ストアアプリ)という点では同じように作ることができます。その代り、PC の Windows 10 にあるようなスタート画面や高機能アプリは一切ありません。

同じ発想は、Android の組み込みボードの世界にもあって(購入すると3万円位かかります)、組み込みボードに Android を乗せて UI の部分は Android のものを使うというものがあります。先の Orange Pi や Raspberry Pi に乗せた Android は、スマートフォンに乗せているものと同じなので、非力な組み込みボードの CPU ではひどく重いものです。CPU を早くするとボード自体が高価になるし、Android の使い勝手をよくしようと思うとスマートフォンと同じ程度のスペックが組み込みボードに要求されてしまいます。この点で、かなり「詰んだ」状態にはなっていました。

そこで、Android Things の再登場です。

  • 通常の Android よりも低スペックで動作する。
  • Android UI を通常通りに使える。

この両方を満たすために、Windows IoT Core と同じ方法を Google は取りました。いわゆるスマートフォンを起動したときのホーム画面等が一切ありません。その分、ストレージや CPU への負担が軽くなっています。

更に云うと、実質(と思われる)Android SDK v7 で動くようになっています。スマートフォン用の API がどこまで削られてか分かりませんが、少なくとも Xamarin.Forms でビルドしたアプリを Android Things に乗せても平気なぐらい「API が削られていない」ことがわかります。

https://pbs.twimg.com/media/CzzlwS-VEAEDa0A.jpg

つまり、Android Things は

  • ほぼ API が削られていない(と思われる)Android SDK v7 が動く
  • GPIO 等を動かす、com.google.android.things.* が jar で提供されている

という組み合わせになります。jar ファイルは androidthings-0.1-devpreview.jar のようです。Windows IoT Core でもそうですが、この別口のライブラリをプロジェクトに追加することで、組み込みボードの制御ができます。ちなみに Linux 系は /sys/class/gpio のファイルを開くだけなのでスクリプトでも結構簡単にできるんですよね。Android Things が何を使っているかわかりませんが(あとでコードを見るつもり)、似た感じだと思います。

ちなみに Android Things では adb shell の中身が充実しています。

https://pbs.twimg.com/media/CzruhYaUcAARHgt.jpg

perl や python のようなスクリプト系の言語がないのは残念なのですが(いずれ入れられると思う)、posix 互換だそうなので、それなりにコマンドと API が揃っています。

 

Android Things と Xamarin.Android の関係

.NET 界隈では Xamarin が流行っている訳ですから、(私的には)Android とはいえ Java でやるよりも C#/.NET でやろうという訳です。そうなると、Xamarin.Android を使って Android Things のアプリを作れるといいですよね。

というわけで、xamarin/xamarin-forms-samples: Sample apps built using the Xamarin.Forms framework から、Xamarin.Forms のサンプルをいくつかダウンロードして動かしてみると、動きます。きちんと mono の環境が入って、C# でプログラミングをすることができます。

GPIO がらみは com.google.android.things.* をラップしないといけないのですが、

jonpryor/SimpleAndroidThingsBinding
https://github.com/jonpryor/SimpleAndroidThingsBinding 

な形で、XML を使ってマッピングができるそうなので、これも後で試していきます。こうなると、Android Studio を使わなくても、Xamarin.Android/Forms の開発スタイルで、Android Things で機器制御のプログラムが組めるということになります。

Raspberry Pi 3 で動かしたところ、オンボードの WiFi を認識して繋げることができました。Bluetooth はまだ試していないのでがつながるでしょう。あと、カメラとかの定番も試していきます。各種のサンプルは https://github.com/androidthings で提供されています。

アプリケーションは、Google Play がないので、adb installl でインストールします。Xamarin.Forms の場合は署名がなくてインストールできなかったのですが、リリースビルドをして署名をすれば入るでしょう。

mono が動くということは F# も動きますね

mono が動くことが確認できれば、もれなく F# が動きますよね :)

非常に簡単だけどボタンクリックのサンプルだけを動かしてみました。

えっ? F# 成分はこれだけですか…いや、まあ、これだけです。ちゃんとしたものはそのうちに。

image

日曜日に、年末恒例の矢野顕子「さとがえるコンサート」に行ってきたのでその写真でも。青色 LED がまぶしすぎて目がチカチカしますよ。輝度をもう少し下げたほうがいいかもしれません。手ぶれしているし。

では、皆さまのよきクリスマスを祈りつつ。

カテゴリー: Android | Android Things 上で Xamarin.Android を動かして F# を使う はコメントを受け付けていません

Android 5.1 をソースコードからビルドして NanoPi 2 Fire で動かすまで。

NanoPi 2 Fire というのを買いました。

左から、Raspberry Pi, Orange Pi, NanoPi です。USB はひとつしかついていませんが、HDMIがあってディスプレイ出力ができます。

さっくりと Debian が動いたり

さっくりと Android 5.1 が動いたりします。

Android のほうは Google Play が入っているので、ストアから Android アプリを入れられるという優れものです。Orange Pi の Android には Google Play が入っていないので、こっちのほうがいいかなと。

NanoPi2 Fire
http://www.friendlyarm.com/index.php?route=product/product&product_id=96&search=nanopi+2+fire&description=true&category_id=0&sub_category=true

値段は、$22.99 なので、3,000円弱で変えます。たぶん、Scratch などもインストールすれば動くはずなので、Raspberry Pi 互換機として使うことができます。

だが、Android をビルドする

そんな訳で、Android 5.1 をソースコードからビルドすることにします。

手順自体は、

NanoPi 2 Fire – FriendlyARM WiKi
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire#Compile_Android

にあるので、これを参考にしてがんがんビルドをしていきます。私の場合、OSの入れ直しをしたり、コードを変えてみたりとあれこれやったので6日間掛かっていますが、おそらく1日ビルドをすれば終わるでしょう(苦笑)。

注意点としては、

  • Ubuntu 14.04 の 64bit 版を使う(現在の最新は 16.04 なので注意)
  • ディスク容量は160GB 程度必要
  • メモリは8GB 程度必要

というところです。Hyper-V の仮想環境でビルドをしたのですが、この程度のマシンパワーが必要になります。Ubuntu は最新の 16.04 などを使うと c++_static あたりでエラーになるので、14.04 を使います。これは Android 側の制約じゃないかと思うのですが…さだかではありません。

 

内部的にビルド時のフォルダが、/opt/FriendlyARM/s5p4418 固定になっているので、適当に ln -s してやります。

綺麗にビルドが通ると、/opt/FriendlyARM/s5p4418/android/out/target/product/nanopi2 フォルダに、

  • boot.img
  • cache.img
  • userdata.img
  • system.img

ができあがります(Compile Linux kernelの結果も混じっているかもしれません)。

micro SD カードに焼く

これを micro SD カードに焼くのですが、焼き方は、

NanoPi 2 Fire – FriendlyARM WiKi
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire#Under_Linux_Desktop

に書いてあります。ちょっとややこしいのが、sd-fuse_nanopi2 フォルダ内に android フォルダを作って、先の *.img を置いて動かす必要があります。

な感じで、ln -s しておくとよいでしょう。

あと、私の場合 Ubuntu 14.04 を Hyper-V 上で作ってしまったため、USB 経由で micro SD カードを認識できません(Hyper-V の場合はここが落とし穴ですね。ゲストOSが Windows の場合は、リモートデスクトップで接続することで USB 関係が使えるようになります)。色々考えたのですが、Raspberry Pi から、micro SD カードに Android を焼くことにしました。なるほど、Raspberry Pi ならば普通の Linux ですからね。

samba を使って Raspberry Pi から Hyper-V 上の Ubuntu のフォルダをマウントして、micro SD カードに焼きます。

そして、無事、自前でビルドした Android 5.1 を動かすことができました。ぱちぱちぱち。

次はどうするのか?

まあ、一度 Android をビルドしてみたかっただけというのも本音なのですが(昔は、ガラケーのOSとか仕事でビルドしてましたから)、ここまでできたら、次は自前のモジュールを入れて「オレオレAndroid」を作りたいですよね。NanoPi には GPIO がついているのでこれを操作するために、Python を入れるといいかなと考えています。Google Play から入れるものもあるのですが、GPIO を直接触れるのかわからないし(後で試しますが)、どうせならば直接アクセスできるように拡張してしまうのも手でしょう。ということで、これは後日に。

カテゴリー: Android | Android 5.1 をソースコードからビルドして NanoPi 2 Fire で動かすまで。 はコメントを受け付けていません

オレオレXamarin.Formsを作ってみよう

Xamarin(その2) Advent Calendar 2016 – Qiita の10日目の記事です。Xamarin に関する記事ということで、流行りの Xamarin.Forms を使ってみましょう…じゃなくて、ビルドしてみましょうという記事です。素直に nuget から NuGet Gallery | Xamarin.Forms 2.3.3.175 をダウンロードするならば、それでいいんですよ。でも、Forms のバグがなんだとか、機能が不足だからとか、ネイティブの機能を使うためにはなんたらのサービスを使ってとかいう前に、「OSS なんだから自分で追加すればええやん」という思想…で、できたらいいなーと思った訳です。ええ「感想」です。

以前、Xamarin.Forms 用のプレビューアをアルファ版で公開 | Moonmile Solutions Blog を作ったときに(これは途中で止めてしまいました。いちいち Xamarin.Forms のバージョンアップに付き合うのも大変過ぎる)思ってたのですが、内部で XAML をパースしている部分を弄ればこの手のビューは結構簡単にできます。当時の難点は、XAML をロードしたときに、内部的に x:Class で参照してる部分を探そうとしたり、無効なタグや属性を指定するとエラーを発生してしまうということでした。実は、WPF や UWP の XAML のパーサーも同じ仕組みで「内部的に何らかの制限」があることは薄々分かってはいるのですが、なんせパーサー自体がライブラリ内にあってコードが公開されていないのでなんとも…という状態だったのです。で、晴れて Xamarin.Forms が OSS になった ので、このあたりの調節もできそうという訳です(WPFやUWPのほうの XAML パーサーは公開されていないのですが、まあ、ひとつあれば十分です)。

そんな訳で、具体的にどのように活用するのかは脇に置いて、Xamarin.Forms のビルドを確認してみましょう。Xamarin.Formsのソースコードをビルドしてテストを実行してみた – Qiita の「buildします」のところを詳しくいきます。

コードをダウンロードする

github の https://github.com/xamarin/Xamarin.Forms からコードをダウンロードします。

image

git clone https://github.com/xamarin/Xamarin.Forms.git しても良いし zip でダウンロードした後に解凍してもよいでしょう。ブランチを変えて、master 以外のコードをダウンロードしても ok です。

手を加えてしまったコードは本家へプルリクしない限り(そして取り入れられない限り)あなただけのコードになります。なので、思う存分、改変してしまいましょう。まあ、改変してしまって動かなくなっても自己責任なのですが、実験的にあれこれと好きなようにやってみるのもよいかなと。

ビルドする

qwerty2501 さんも書いていますが、実はビルド時にエラーがでます。どうやら Maps あたりのビルドにあれこれと設定がいる模様なのですが、私が欲しいのは Xamarin.Forms.Xaml なので、これがうまくビルドできる位置だけを探っていきます。

image

いくつかのコードみていくと、サンプルコードらしきものが見えます。

  • /Control Gallery/Xamarin.Forms.ControlGallery.Android
  • /Pages Gallery/PageGallery.Droid

の2つです。「Control Gallery」のほうが、たくさんのサンプルが含まれていそうですが、残念ながら maps を含んでいるのでうまくビルドができません。もうひとつの「Pages Gallery」のほうは、Xamarin.Forms.Pages を作った簡単なものなので、ビルドが通ります。ここでは Android のほうだけビルドしていますが、iOS のほうもビルドできるでしょう。

Hyper-V のエミュレータで動かすと、こんな感じの画面がでてきます。

image

 

参照設定をみてみる

Xamarin.Forms が NuGet からダウンロードされていないことを確認するために、共有プロジェクトの PageGallery の参照設定を見てみましょう。

image

プロジェクト → ソリューション を見ると各種のプロジェクト自身が参照されていることがわかります。

きちんと自前の Xamarin.Forms.* の NuGet 設定をしてもよいのですが、ここで出来上がった PageGallery/bin/Debug/ 内の各種 DLL をコピーして使ってもよいでしょう。あるいは、どうせ自前なのですが、Xamarin.Forms のプロジェクト自体をコピーして使っても構いません。

ちなみに XAML パーサーは何処にあるのか?

XAML パーサーは、https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Xaml/XamlParser.cs の Xamarin.Forms.Xaml.XamlParser.ParseXaml() でパースできるようになっています。XmlReader を使って読み込むようにしてあるので、XDocument 渡しにするのは難しくないでしょう。これと XamlLoader を改変してやれば、動的に XAML を読み込みかつ内部での x:Class やバインド先の ViewModel を切り替えることもできると思います。

あと、ちょっと興味深いのが Xamarin.Forms.Xaml.Xamlg プロジェクトですね。所謂、*.xaml からコードビハイドの *.g.cs を出力するツールです。ビルド時に xamlg ツールを使ってコードビハイド用の *.g.cs ファイルを出力しているところです。C# の場合は、*.g.cs として用意されているのですが、F# の場合はこれが対応していないために *.g.fs のようなコードを出力できません。このため Xamarin.Forms で XAML を使うときは、コードで XAML を組み立てる必要があるのですが、ここを自前実装すると F# でも C# と同じように XAML ファイルを使えるようになります。まあ、ビルドプロセス(MSBuildに戻ったし)を変えないといけないので、結構大変かもしれませんが。

 

と、そんな訳で、具体的なコードは間に合わなかった(本当は、タップのコードを入れ込みたかったのだが時間がなかった)ので、ここでおしまいですが、まあ、オレオレ Xamarin.Forms ができそうな感じにはなったと思います。実際、オレオレな Xamarin.Forms を作るかどうかは別としても、こんな風にライブラリが動いているんだという参考にでも。

カテゴリー: Xamarin | オレオレXamarin.Formsを作ってみよう はコメントを受け付けていません

o-o-8-o-o .com と Vote for Trump! のリファラースパムに対処する

ここ数日、微妙にブログのアクセスが重たいのと、妙なリファラーが google アナリシスに「  motherboard.vice.com/read…spamming-google-analytics」と出て来るのに対処します。

o-o-8-o-o.comはリファラスパム!まとめて正規表現でフィルタ除外するよ! | AnalyzeFindOut~アクセス解析を調べる
http://analyze.siraberu.info/post-631/

定期的に流行っている?ロシアからのリファラースパムらしいのですが、統計よりも頻繁にアクセスする(200回/日位)ので、サイトから締め出します。

.htaccess に SetEnvIf を使って deny.

image

何故か言語のところにメッセージを書くという謎仕様なので、そのまま利用します。

これで暫く様子見を。

…と思ったが、拒否できてないっぽい。

image

あとで対策を。

カテゴリー: 開発 | o-o-8-o-o .com と Vote for Trump! のリファラースパムに対処する はコメントを受け付けていません

Xamarin.Android の開発とその先にあるもの

Android Advent Calendar 2016 の8日目になります。初めての人は初めまして、初めてでない人は、ずっと下のほうまで読み飛ばしてしまって大丈夫です。

Xamarin とは何か?

C# 界隈では鬱陶しいほど流行っている…のか流行っていないのかわかりませんが、Java のほうでもぼちぼちと Xamarin な人が入ってきたりしていると思いますが、端的に言えば、Android を C# で書こうというのが、Xamarin.Android です。ついでに言えば、iPhone/iPad のアプリを Objective-C や Swift じゃなくて C# で書こうというのが Xamarin.iOS で、Mac 上のアプリを C# で書こうってのが Xamarin.Mac です。あちこちで C# が出てきますが、実は F# で書くことができたりしますが、まあ、そんなマニアックなことをしなくても C# で .NET Framework を使ってアプリを書くことができます。

ここは Android 界隈に話を絞ると…

正直な話、Java で Android アプリを作るのは、Objective-C で iPhone アプリを作るよりも辛くはないと思うんですよね。スマートフォンのアプリを作る場合、それぞれのスマートフォンの仕様に従うので、Android の場合は Java が最適だとか、iOS の場合は…だとかは普通な話です。なので、いままで Java/Scala/Kotlin で Android をアプリを既に効率よく書けるのであれば、それはそれで十分だと思うのです。

Xamarin の場合は、Android/iOS そして XAML という XML形式で View を書いて(Android の axml と似たようなものです)Xamarin.Forms として共通化して書けるというメリットもあるのですが、まあそれも、Android だけを対象にするならば、特に Java から C# へ移行するというメリットはありません。

Xamarin.Android の欠点は?

どうせだから、欠点から先に並べておきましょう。

最新の Android の対応に 2,3か月かかる

iOS の場合は、事前にデベロッパーサイトに新しいバージョンの iOS が公開されます。メジャーバージョンアップのときには半年前に公開されることもあるので、そこで公開されるベータ版を使って iOS アプリのテストができます。Xamarin.iOS が iOS 内部のライブラリをポーティングしてテストする期間をそこに持つことができます。

しかし、Android の場合は事前公開がありません。Google からバージョンアップが表明されて、少しずつ各メーカーが対処するいう具合です。ここに Xamarin.Android の対応も巻き込まれるので、最新の発表から 2,3か月ほど遅れてしまいます。ここは、Java ネイティブで書いていたほうが即対応をすることが可能です。

Java の各ライブラリを個別にポーティングする必要がある

当たり前のことですが、Android の各種ライブラリは Javaで(*.jarで)提供されることが多いでしょう。あなたが使っている便利なライブラリや、あなたが作った効率的なライブラリを Xamarin.Android で使えるようにするには、C# で呼び出せるようにする必要があります。幸いにして、Xamarin.Android のコードのように属性を使って Java のライブラリを呼び出すようにできるのですが、Java から直接使うよりも手間が掛かることは確実です。

Java 特有のノウハウが使えない

Java も C# もオブジェクト指向言語ではありますが、それぞれのプログラム言語特有のノウハウがあります。私の場合、本格的に Android のプログラムを組んだことがありませんが(C# でならばあるんですが)Android の数々のコントロールは Java に対して組みやすいようにできていると思います。ListView へのアクセスとか、モデルオブジェクトの扱いとか、リスナーの扱いが Java っぽいですよね。そのあたりは、抽象的なデザインパターではなく「実装依存」にならざる得ないところがあります。そのあたりのノウハウを Xamarin.Android の世界に持って来ると Java –> C# なコンバートで混乱しますし、逆も同様です。そこは適材適所というところでしょう。

それを踏まえて Xamarin.Android を見ると

いくつかの欠点を踏まえて、Xamarin.Android + C# の組み合わせを見ると、「適所」な部分がみえてくるので、導入するときのポイントを示しましょう。

こなれた UI を使う場合

最新の Android ではなくて、4.4 のようなちょっと前の UI を使うときには、Xamarin.Android を使ってもよいでしょう。Android のアドベントカレンダーなので、C# な方はいない…とは思いますが、まあ、標準的な UI で社内アプリを作るようなときに C# –> Java で変換するよりも C# で書けるパターンを選ぶのもよいでしょう。勿論、社内ツールならば、引き継ぎなども考えて「誰かに任せられる言語」を選ぶことが大切です。社内で使われているプログラム言語が、Java なのか C# なのかという判断でよいと思います。

C#/.NET のノウハウを使う

例えば、MVVM パターンのような C#/.NET に端を発する技術やノウハウを使うときは Xamarin.Android を使って使うとよいでしょう。単に試してみるためでもいいと思います。私の場合、言語の出身上(?)、Java よりも C# のクラスライブラリのほうが知っているので、Xamarin.Android のほうが楽に開発ができます。ある程度、ライブラリなり試験が済んでしまえば、コード自体を Java と C# の相互変換してもよいし、クラスライブラリのまま呼び出してもよいでしょう。ちょっと、Java から C# を呼び出す方法は知らないのですが、先に示したように C# から Java の呼び出しは、Xamarin.Androidでロボホンを動かす(Java Binding Library利用) – Qiita が参考になると思います。

 

さて、ここまで来て話が飛びますが、ワタクシが Android をさして開発しないのに、Xamarin.Android であれこれやっている、理由のひとつがこれです。

左から、Raspberry Pi, Orange Pi, NanoPi です。いわゆる、組み込みボードと呼ばれるものなのですが、通常 Linux を入れて動かしますが、実は Android を入れて動かすこともできます。

NanoPi には、Android 5.1 を入れることができて、こんな風に HDMI を通して液晶ディスプレイに表示させることができます。

導入する Android の種類(主に中国産のAndroidになるので)にもよるのですが、NanoPi に入れられるものは Google Play も入っているので、ネットからアプリを入れることができます。

ここでは、有線LANで繋げていますが、無線LAN(WiFiドングルが必要)を付けることも可能なはずです(また試してはいない)。

ピンの部分は普通に GPIO なので、Lチカしたり、サーボモーターを動かしたり、各種センサーからデータを拾ったりもできますよね。

Android というと、スマートフォンの Android が筆頭にあがりますが、実はこのような組み込みボードの世界でも Android が使われているところがあります。中身は Linux なので、それなりに Raspberry Pi のようなアクセスが可能なのと、UI は Android のものが使えるのが利点です。まあ、そこで .NET な私としては Xamarin.Android のほうが使い勝手がいいというところなのです。

去年も Raspberry Pi に Android を入れて GPIO を弄ろうとしたのですが、なんかいまいち遅くてなんともならなかったのですが、NanoPi ぐらいならばなんとかなりそうです。幸いにして、Android のレポジトリからビルドする方法も NanoPi では用意されているので、コードから直接弄れそうな感じでもあります。

NanoPi の購入や解説は下記で

FriendlyARM-NanoPi 2 Fire
http://nanopi.io/nanopi2-fire.html

NanoPi 2 Fire – FriendlyARM WiKi
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire#Compile_Android

というわけで Xamarin.Android のその先へのお話でした。よいクリスマスを。

カテゴリー: Android, Xamarin | Xamarin.Android の開発とその先にあるもの はコメントを受け付けていません

ASP.NET MVC プログラミング入門の入門の補足

.NET ラボ勉強会の2016年11月で、「ASP.NET MVC プログラミング入門の入門」の発表をしてきたので、それの補足です。

動画

スライド
[slideshare id=69549826&doc=asp-161126152036]

最初に補足しておくと、スライドの「おまけ」のページの .NET Core の ARM32/64 版がない、というくだりは、core-setup/README.md at master · dotnet/core-setup の中に .NET 1.2 という形で残っています。「Windows arm32/64」という形なので、Windows IoT Core が対象なのか、ARM ベースの通常の Windows 10 が対象なのかは謎ですが(これは後で実験します)、少なくとも ARM ベースの .NET Core は 1.2 で出そうですね。ただ、Raspberry Pi の Raspbian で .NET Core がコンパイルできる&実行できることを欲しているので、もう少し突っ込んで見ていきたいところです。issue を観ている限りは、一進一退っぽいのだけど他に比べてサポートが薄いかなと。

で、なんで、ARM + Linux の組み合わせなのかというと、動画の中でもちらほらでますが、Android + .NET Core を期待するのと、Android + Mono が継続されるのか、と微妙なところがあるからです。今後の .NET Standard と、組み込み OS としての Android(Orange Pi とか)の中で、Mono ベースなのか、.NET Core ベースなのか、というところがあります。そのあたりは組み込み Linux も含まれたりするのですが、まあ、そこは Python を入れたりするので .NET は不要だったり…期待したり。

ちなみに、スライドの中に Xamarin が入っていたり、「ASP.NET MVC プログラミング入門」の書籍のほうに Xamarin が入っているのは、2つほど理由があります。

  • Web API のクライアントバリエーションとして Xamarin を使った。
  • View 概念を拡張すると、スマートフォン/デスクトップ/ブラウザ(View)+Web API(ロジック)の組み合わせができる

2年前だと10万円近くした Xamarin.Android/iOS ですが、現在は Xamarin 社が提携/被買収のおかげで無料で使えます。こうなると、以前、Xamarin 本を出したときよりもぐっと敷居が下がって(実は Starter という形で Xamarin.Android/iOS を使えないこともなかったのですが、小さなアプリしか作れないし、Xamarin.Forms はサイズ的に使えないし、遊び/試用版の域を出ませんでした)、使おうと思えば使えるところまで下がってきたわけです。

逆に言えば、10万円也(Android/iOS の同時開発するのであれば20万円也)の資金を回収する必要がなくなったので、ある意味で「Xamarin を使う覚悟」ってのはだいぶん減っています。お金を出すとそれを回収しようと思って勉強するけど、無料だったら使えなくてもまあいいか、って感じになりがちですよね。

私が Xamarin を勧める理由

Cordova じゃなくて、何故 Xamarin なのかと言えば、端的に C#/.NET Framework だったからです。Java や Objective-C/Swift じゃなくて、何故 C# なのかと言えば、2002年以来 .NET でやってきたからです。ただし、C# ができるとか、Java が得意とかいうだけなれば、Android は Java で、iOS は Objective-C/Swift で書けばよいのでしょうが(実際、Swiftの本も書きましたから)、TDD の観点からすると、サーバーからクライアントまで一貫して同じプログラム言語を使うのは、開発効率という点で高いメリットがあります。

既存のコードが流用できる

いくつかの本の執筆も含めて、手元には膨大な C# のサンプルコードがあります。同じぐらい VB.NET のコードもあるけど、調べて実験するためのコードは C# が多いので、手元のサンプルは C# のほうが多いのです。そうなると、別の言語に(PHPやPython、Javaも含めて)直すよりも、C# で作れたほうが手元のサンプルを活用できます。インターネット上の「私のネットワーク」も C# のほうが多いので、C# のほうが回答が出やすい状態になっています。

ロジックを取り出してテストする

手元の実験コードはできるだけ、ロジックをオブジェクト化してテストできるように努めています。デスクトップでテストしたものを、そのままサーバーに持って行ったり、Xamarin.Android/iOS を乗せたスマートフォンアプリに持って行ます。これは、サーバーとしてテストしたり、スマートフォン上でテストするのではなくて、一度デスクトップアプリでテストする≒試行錯誤のスピードが速い、という利点があります。このためには、それぞれの環境で動くプログラム言語を同一にしておくことと、それぞれの環境のライブラリが同じ或いは似たものであることが必要です。幸にして、.NET は、.NET Framework/Mono/.NET Coreという形で、一見ばらばらのように見えるものの「再コンパイルさえすれば」おなじコードを使うことが可能です(ネットワークなHTTP廻りとファイル廻りが異なりますが)。

聞く/尋ねる人が近くにいる

私の場合、自宅で仕事になるので尋ねる人がいないのですが、Xamarin を学ぶときにあなたの身の回りに C# をよく知っている人いれば、Xamarin にしましょう。逆に言えば、Java を知っている人(サーバー系であっても)が多いのであれば Java で Android を書いたほうがいいし、そもそも Objective-C や Swift で iPhone アプリを書いている会社であれば Swift のほうがよいでしょう。誰にも尋ねることができないのは、勉強がはかどらないだけでなく、仕事として詰まってしまったときに「誰も助けることができません」。この状態はかなりリスキーです。

ただし、発表でも話したように、Xamarin.Android/iOS/Forms を使うと、C# で同時にリリースすることが可能になります。ロジックに不具合があったり、何かを修正しないといけないときに、Java と Swift の両方を手直ししないといけないよりも、うまくロジックを抜き出しておけば C# だけで済みます。例え、それぞれの画面が別々のレイアウトになっていたとしても、C# で似たような作りにしておくことができます。

勿論、Xamarin/C# ではなくて、Java で統一的に書くことも可能です。あるいは JavaScript のほうを活用するために Cordova でもいいかもしれません。上記の3点の理由を満たせば、どの言語を使っても良いと思います。例えば、手元に豊富な Java ライブラリを持っているのであれば、Xamarin.Android を使って未知なる C# を学ぶ理由はあまりありません。

そんな訳で、ASP.NET MVC の話なのですが、C# にちょっと興味がある/環境的に恵まれているのであれば、Xamarin.Android/iOS/Forms に手を出しておくのは悪くないですよ、という話でした。

書き忘れたけど、新刊

[amazonjs asin=”4822298884″ locale=”JP” title=”ASP.NET MVCプログラミング入門 (マイクロソフト関連書)”]

著者サポートは、こちら http://www.moonmile.net/blog/article/mvc

 

カテゴリー: ASP.NET, Xamarin | ASP.NET MVC プログラミング入門の入門の補足 はコメントを受け付けていません

漫画「この世界の片隅に」に寄せて

映画のほうは見ていないので、こうの史代著「この世界の片隅に」を一読した感想を記しておこう。著者の名前は憶えていなかったのだけど、以前「夕凪の街」が話題になったときに、ちょっと避けたんだよね。絵柄的…ではなくて、原爆を扱って、それが話題になっていたところで避けてしまっていた。で、改めて、先日 Kindle で「この世界の片隅に」上中下の3巻を買って読み終えて経歴を調べると、広島市西区生まれで広大の人だった。しかも同い年だ。中高を広島市で育った私としては、本当の意味で「同時代」的な人らしい。

「夕凪の街」は、直接、広島の原爆を扱うけど、「この世界の片隅に」はちょっと離れた呉から原爆を扱っている。全体的には戦時中の生活を扱っているのだが、やっぱり呉から見た「新型爆弾が落ちたらしい」という言葉は、精一杯の言葉になる。

絵柄的には、近藤ようこや「ヨコハマ買い出し紀行」の芦奈野ひとしに似ている。情景を描くので、キャラクタ自体はおとなし目だけど、逆にそっちのほうが印象感じになる。水木しげるの「熊楠」も似た感じの描写になるよね。情景の書き込みに惹かれるものがある。おそらく、呉港に出て来る数々の軍艦が映画のほうでは主になっている(ような感じがツイッターではみられるんだけど)、漫画のほうでは、シルエットとして軍艦が描かれている。特徴を軍艦のシルエットは漫画の中にもあるけど「諜報」活動とみなされたりするし、いわゆる戦闘機の機影で敵味方を識別するのと同じように、遠くから見える船影で相手を識別する。そんな軍艦の大きさと、生活との隔たりがよく描かれていると思う。

焼夷弾の内容とか、戦時中のあれこれの習慣がディテールとして詳しく書かれている手法は、高橋孟の「海軍めしたき物語」を思い出させるし、道具のあれこれが描写されているのは妹尾河童や安野光雅がベースだろう。もちろん、はだしのゲンは織り込み済みだ。

戦時中の生活を比較的「楽しく」描くという点では、NHKの朝の連続テレビ小説の長谷川町子の話の「マー姉ちゃん」あたりじゃないかな。最近の連続テレビ小説は戦時中の話は飛ばしてしまうことが多いのだが、当時(40年前ぐらい)は、視聴者がまだ戦争を知っていた世代でもあって、戦争を結構身近に描いていた。ただ、戦争モノを直接見ると、戦時中の本当の想いがよみがえってしまうので、少し視点を変えていたりする。
それが、「この世界の~」でもあるように、特に鉄砲が出て来るわけでもなく、何度となく鳴る空襲警報だったりする。3巻のうちでも戦闘機からの機銃掃射は1回しかない。焼夷弾も2回しかない。1回は防げて、不発弾で主人公は右手を失うところまで描く。

繰り返すが、数々の戦時のディテール(戦闘機や爆弾も含めて)が詳しく描かれているのは、そのほうが「リアリティ」を持たせられるからだ。現実の話だから「リアル」で当たり前のような気がするだろうが、実は違う。例えば、「爆弾が落ちて数万人の一瞬にして死にました」というフレーズよりも 原子爆弾 – Wikipedia にあるように、重さが何キロで緯度経度がここで、広島県産業奨励館の上で爆発して、直接の死者が何万人で、間接的に被ばくした人が何万人で…というような「殺傷力」という形で書くとディテールが埋まってリアリティが出て来る。と同時に、ディテールとしての情報が多いが故に、読み手が「何かを選択する」という余裕が出て来るという影響がある。なので、この手の「情報過多」なところは、当時のリアルを知るために必要だったりする。そのあたりのリアリティが今回の映画にも必要なのかどうかは分からない。

今はよくわからないが、当時(35年ほど前)の広島の中高生は、同和教育と原爆教育がしっかり行われている。同和教育は、数年後位に日教組がらみで止めることになった覚えがあるが、さだかではない。何故、同和/部落と原爆の差別教育が並列で行われるのかという、これには意味がある。私の場合、実際の部落を知ったのは大宮の小学校の頃なのだけど、いわゆる本人に依存しない「差別」は、同和による差別も被爆による差別も同じ感情からでてきている。ちなみに、福島の差別も同じだったりする。私がまだ、中学生だった頃「結婚ができないから被爆手帳を持たない」という人は結構いた。「夕凪の街」に出て来るけど、親が被爆して二世代目でも結構、避けていたりする現象だった。

そのあたりの話は、「この世界の~」ではあまり出てこない。いや、最後に強烈な形で出て来る。広島で母親を蛆虫で喰われている子いて、子のない主人公が、右手を失ったままで家族ぐるみでその子を受け入れるシーンがラストになる。

まあ、広島で育つと、そのあたりは一生離れられないのかもしれません。良い意味で。

カテゴリー: 雑談 | 漫画「この世界の片隅に」に寄せて はコメントを受け付けていません

LattePanda に windows 10 Anniversary edition を入れるまで

Orange Pi Zero を弄っているうちに、LattePanda という組み込みボードを知りました。半年前に、Kickstarter に出ていて Windows が動く組み込みボードとして発表されていたのですが、Raspberry Pi 3 でもいいかなと思って買わずにいたものです。

が、大統領選があって、Connect(); 2016 を眺めているうちに、やっぱり欲しくなって勢いで買ってしまいました。Kickstarter のでは Windows 10 Home が pre-install されているのですが、 LattePanda 2G/32GB -The Most Powerful Win10 Dev Board – DFRobot で、Windows が入ってないバージョンが若干安く手に入るのでこれにしました。手元に、MSDN 絡みで Windows 10 Pro があるので、それを入れてリモートデスクトップにするからという算段です。

ちなみに Amazon でも Lattepanda で検索すると売っています。若干高い感じがするけど、大統領選後に円安になってしまったので、DFRobot で直で購入するのと差が縮まっています。

ちなみに DFRobot には、↓なワイヤレスキーボードがあって一緒に購入しました。こっちのほうは後で。

Windows 10 Home を再インストールする

買った LattePanda には Windows が入っていないので、まずは OS を入れます。Docs | LattePanda に手順が書いてあります。手元のものは、メモリが 2GB のものなので x86 version for 2G/32GB のほうをダウンロードして USB メモリに書き込みます。CPU は Intel Cherry Trail Z8300 Quad Core 1.8GHz で、2GB バージョンも 4GB バージョンも変わりません。なので、2GB バージョンでも x64 にしておきたいところなのですが、書き込みのイメージが x86 のみになっています。試しに x64 のほうをダウンロードして書き込もうとしたけどブートしなかったので、素直に x86 で動作させています。

  • USB メモリを FAT32 フォーマットして(大抵はこれでフォーマットされている)、名前を WINPE にしておく。
  • ダウンロードした zip ファイルを解凍して、USB メモリに書き込む(普通にコピーでよいです)。
  • USB メモリを LattePanda に差して電源を入れる。電源は 2A のものを使います。

https://pbs.twimg.com/media/Cxe6CvyVIAAJ_b9.jpg

起動できるようなると、こんな風に HDMI でモニタに出すことができます。この状態でも十分使えるのですが、リモートデスクトップが使えないので、Pro にバージョンアップをします。Home のままで使う場合は、Setting up a VNC server on the LattePanda using TightVNC を入れておくとよいでしょう。

まあ、察するところ、Windows 10 Home のライセンスはダウンロード版でも付与されている感じなんですよね。このあたりは問わないことにしておきます。

Windows 10 Pro にアップグレードする

Home から Pro へのアップグレードは、「ライセンスの変更」でプロダクトキーを Pro のものに切り替えるだけです。

image

LattePanda は、もとから Arduino IDE が入っているのですが、アップグレード時に消されてしまいます。これは後からインストールしなおせば ok です。組み込みの GPIO へは firmata で繋げるので COM3 で通信することになります。確か、特にドライバーを入れなくても動作したハズです。

もしドライバーが足りない場合は、 LattePandaTeam/LattePanda-Win10-Software にあるので、適宜インストールします。

Windows 10 Anniversary にアップグレードする

あれこれと UWP アプリで操作したいので、Win 10 Anniversary にバージョンアップします。

CPUが Atom なので時間が掛かりますが、無事アップデートができます。

この状態で、せっかくなので、.net core 1.1 をダウンロードしてインストール。dotnet コマンドで asp.net mvc アプリを使って動かすことができます。

ちなみに、ストレージは 32GB しかないので、Visual Studio 2015 を入れるのは諦めて Visual Studio Code だけにしています。ただし、micro SD のスロットがあるので、差しっぱなしにして動かせるようにしても ok です。

CPU 的には4コアになるので、こんな感じですね。メモリがぎりぎりですが、まあ、GPIO を扱う程度ならこれで十分です。画像廻りはどうなんでしょうね。まだ調べていません。

 

その次はどうするのか?

mini PC に比べると若干安い LattePanda ですが、Raspberry Pi に比べると倍ぐらいの値段になります。何かのサーバーにするならば、Linux + Raspberry Pi の組み合わせで十分なので、LattePanda としては Windows + GPIO で使わないとメリットが見出せませんね。ボード自体に Arduino が乗っかっている感じなので、C# から Firmata 経由で手軽にアクセスできる環境を作っておくと良いかもしれません。Windows IoT Core が Windows 10 のサブセットなのに対して、LattePanda はフルの Windows が動くので、WPF で作るとか、コマンドラインで実験するとかが楽にできます。ちょっと、このあたりは後で考察していこうかなと。

LIVA BAT-MINI ってのもある

実は、GPIO が使えて Windows 10 が動く組み込みボード…というかPC & GPIO の組み合わせには LIVA BAT-MINI http://liva.links.co.jp/ ってのがある。Amazon で買う ECS BAT-MINI ベアボーン GPIO搭載 ファンレス完全無音設計の組み込み向けパソコン基板 BAT-MINI2G-32G-GPIO こともできるので、結構手軽です。

Slide Image

スペック的には LattePanda とほぼ同じ。OS が入っているかどうか分からなかったのと、GPIO 廻りをどう触るのか書いてなかったので避けたのだけど、似た感じで Firmata で通すのかなと思ったりします。LattePanda を弄り倒したら、ちょっと借りてみた機種だったりします。というか貸してくれ…ってのを1か月後にでも。

カテゴリー: 組み込みボード | LattePanda に windows 10 Anniversary edition を入れるまで はコメントを受け付けていません