月別アーカイブ: 2015年12月

WPF でコントロールをドラッグする

以前、WPF でコントロールのドラッグコードを書いたのですが、業務的に少し書き直してみます。WPFでコントロールをドラッグ(1) では、マウスの down/up/move のイベントを直接つけていますが、コントロールが増えたときには面倒ですね…というか、動的にイベントを追加すればよいのですが。ふと、[WPF]枠なしでリサイズ&ドラッグ移動可能なウィンドウを作る に行き当たると、WindowChrome クラス を使うと枠なしのウィンドウが作れて、MouseLeftButtonDown イベント内に DragMove イベントを呼び出せばよいようです。この方式だと簡単ですね。 というわけで、マウスダウンのイベントだけあらかじめ付けておいて、マウスの移動とアップイベントは動的に追加します。また、クラスの継承ではなくて拡張を使って実装します。 利用するときは、次のように sender … 続きを読む

カテゴリー: C#, WPF | コメントする

Windows IoT Core と MVVM の関係

先月の .NETラボで Windows IoT Core のデモをやりましたが、そこで使ったソースコードを公開します。 moonmile/WinIoT https://github.com/moonmile/WinIoT/tree/master/HelloSample HelloServo のサンプルは Raspberry Pi では動作しない(他では動作している?)のでなんとも言えませんが、他のコードはほどよく Hello 的に使えるものです。当日はコードの解説はせず、概要と動作だけだったので、ちょっとコードのほうも解説しておきます。 環境を整える 木澤さんの I/O ネタにも突っ込みを入れたのですが、現在 Winodws IoT の開発環境づくりは結構な困難を伴います。有償(とされる)Enterprize 版の場合もこのような状況なのかはわかりませんが、少なくとも開発者が自由に使える無 … 続きを読む

カテゴリー: C#, RaspberryPi | コメントする

ソフトウェア開発者がハードウェア/IoTをやる意味

12月の .NET ラボ勉強会では「これから始める Windows IoT Core」ということで発表してきました。 その中で、さらっと流していきましたが「ソフトウェア開発者がIoTをやる意味」のところをもう少し掘り下げて解説しておきます。 垣根を超えるために 私がプログラミングを始めたのは30年以上前ですが、既にソフトウェア開発というジャンルは確立されていました。まだ N88Basic の頃だったり、MS-DOS や DR-DOS だったり、したものの直接「ハードウェア」に触るためには、ハードウェアにアクセスするための馬鹿高いインターフェースボードが必要でした。逆に言えば、ハードウェアとソフトウェアの垣根があって、その馬鹿高いインターフェースを買わない限り直接ハードを触ることはなかったのです。当然、一方では組込みシステムの開発者(当時はアセンブラ)が居たわけで、基板設計とあわせてハードの … 続きを読む

カテゴリー: 開発 | コメントする

大規模プロジェクトで MVVM を導入するときの注意

先日の JXUG の MVVM の補足 を書いたので、どうせだからもうちょっと突っ込んだ話題を残しておきます。Xamarin.Forms などを使う場合は、そんなに多くの人は関わらないでしょう。勉強会でもちらっと話しましたが、ひとりで MVVM すべてを作ったり、数名で MVVM を分け合ったりするのがほとんです。 せっかく V-VM-M と分かれているのだから、ある程度規模が大きくなれば分担しないといけません。最初に2つのパターンが考えられて、 縦割りにして、画面ごとに MVVM を一貫して作る。 横割りにして、V-VM-M を別々の人に割り当てる。 ことが考えられます。理想的には View をデザイナが受け持ち、VM をプログラマが、M をデータベーススペシャリストが担当するのが良いのですが、人数的な問題や規模的な問題、開発者のスキルのばらつき、遠地なのか近地なのか、同じ会社なのか別会 … 続きを読む

カテゴリー: 開発 | コメントする

JXUG で話した MVVM の活用の解説を

JXUGC #9 Xamarin.Forms Mvvm 実装方法 Teachathon – connpass http://jxug.connpass.com/event/22840/ にて、田淵さんコードに「マサカリ」を投げまくって来ました。実は、ピアレビューという手法があって、できるだけきめ細かくコードをレビューしていくという手法があります。本来ならばインスペクションの形式を使うのですが、「人を攻撃する」のではなくて、コードのみをバシバシと叩いて向上させる方法ですね。コードを個人の成果物ではなくて、共同の成果物として仕立てあげることが最終目標です。 ひとまず、MVVM とは何ぞ?なり、Xamarin.Forms とは?という話はすっ飛ばして直接コードから入ったのは良かったと思います。ペアプロとか、M-VM-M の分業体制なんかはあんな感じで進めるとうまくいくでしょう。 私の … 続きを読む

カテゴリー: Xamarin | コメントする

Windows IoT Core ver.10.0.10586 のデバッグを有効にする

土曜日の .NET ラボ勉強会のために、やっとこさ Windows IoT Core の新しいバージョン 10586 を入れて Visual Studio 2015 からデバッグ実行しようと思ったのだけど「できない」。なぜか?と思いつつ探しつつ、結構ややこしい状態になっていたのでメモ書きしておきます。 必要な環境 Windows IoT – Console App Sample http://ms-iot.github.io/content/en-US/win10/samples/ConsoleApp.htm を見ると、Windows 10 の 10586 と Visual Studio 20156 Update 1 と Windows IoT Core の 10586 を揃えないといけないようです。結果的には揃えてバージョンが違ったときにはどうなるのかわかりませんが、揃えてお … 続きを読む

カテゴリー: Win IoT | 2件のコメント

LEGO Mindstorms EV3+MonoBrick+F# で倒立振子ロボット

F# Advent Calendar 2015 – connpass の 12日目です。 中身的には 倒立振子ロボットを MonoBrick で作成する(F#編) | Moonmile Solutions Blog の延長線上で、何故 F#(関数型言語)でロボット制御をやろうとするのか?ってのをつらつらと書いていきます。 C# 版は、EV3 + MonoBrick + C# なスライドを参照して貰うということで、計算のところを少し突っ込んで行きます。 物理方程式を解く 実は、制御工学を習ったことが無かったので知らなかったのですが、倒立振子ロボットのように「状態の変化に対して少しずつ対応していく」という方式は単純な線形の式で表せます。線形と非線形の違いは、直線近似とそれ以外の複雑な変化を解くという違いにもなりますが、ある意味で物理現象のような「とある時刻 t の状態から、少し異な … 続きを読む

カテゴリー: F# | コメントする

Raspberry Pi で Xamarin.Forms を動かそう(Advent編)

この記事は、Xamarin Advent Calendar 2015 の 4日目の記事です。以前、ざっと書き流していたのですが、もうちょっと詳しく書いていきます。 Xamarin が動作するプラットフォームで、相当異色な感じの Android on Raspberry Pi なので、読み物的にお楽しみください。 Raspberry Pi を用意する そもそも、なぜ Raspberry Pi で Android なんて動かすのか…は、さておき(苦笑)、Raspberry Pi を用意します。Android のインストールに BerryBoot というインストーラー ディストリビューションを使うのですが、バイナリを見る限り最新の RasPi 2 でも、それ以前のものでも大丈夫なようです。 動作確認は、Raspberry Pi 2 と5inch ディスプレイで確認しています。Raspberry … 続きを読む

カテゴリー: Android, RaspberryPi, Xamarin | コメントする

EV3 + MonoBrick + C# で倒立振子ロボットを動かそう、とプロジェクト管理の話

11月の.NETラボ勉強会で発表した倒立振子ロボットの補足です。 EV3 + MonoBrick + C#http://www.slideshare.net/moonmile/ev3-monobrick-c 実は、制御工学の話からプロジェクト管理とかアジャイルとかテスト技法に繋げてみたかったのですが、話し忘れました。私自身は工学部出身なのですが、制御工学は習わずじまいだったんですよね。電磁気学とか量子力学のところは通っているので座標変換まわりは大丈夫なのですが、一番の驚きは時間軸の t の項を式に加えるというところです。 以下は雑多な話として、かつ既に制御工学/品質工学の専門の方には当たり前のことかもしませんが、ちょっと比較として面白かったのでメモ的に残しておきます。 制御工学はハンドリングの技術 ハンドリング、フィードバックは、アジャイルプロセスやプロジェクト管理の世界ではよく聞かれる用 … 続きを読む

カテゴリー: 開発 | コメントする