Project Rider EAP で Xamarin を書けるか。

Project Rider といえば、JetBrains が開発中のIDEです。内部にはReSharperが入っているということもあり、大きく期待されています。

f:id:iseebi:20160508090917p:plain

まだ EAP (Early Access Preview) なので、いろいろ動かない部分があるのですが、我々 Xamarin ユーザーとしては Xamarin の開発に使えるかどうかが最大の興味でしょう。

Xamarin のプロジェクトをロードしたときのエラーメッセージから、なんとなくいける気がしたので試してみました。

続きを読む

AWS SES+Lambda で作る、ドメインまるっとメール転送

僕は各種サービスに登録するメールアドレスを基本的に Gmail(旧 Google Apps) のエイリアスですべて変えているのですが、困ったことにエイリアスマッピング指定に使う + がはじかれるサービスがとにかく多くて困っています。

f:id:iseebi:20160505123607p:plain
▲正しく入力しているのに「正しく入力してください」と出て、そのたびにイライラしてしまいます。

また、登録上は通るけど、実際に使おうとすると不具合が起こるサービスもあります。*1

いままでは、その度に Google Apps の管理コンソールに行ってエイリアスを登録してきたのですが、アカウントに登録できるエイリアスの上限に行ってしまい、グループを作ってそこにエイリアスを追加していく羽目にもなっています。

スマートフォン上で登録したいタイミングも結構出てきたりして、そろそろ実用上耐えられないなと思っていたところ、AWS の SES が送信だけでなく受信もでき、Lambda でメールを処理させることができるということを最近知りました。

今回やりたかったのは、アカウント名を無視して、サブドメイン部分をアカウントとして転送する、つまりこういう形にしたかったのです。

any@hoge.mail.example.com → hoge@example.com

AWS Lambda SES Email Forwarder というものもあり、簡単に設定できそうだったので試してみました。

設定方法

今回は、us-west-2 (オレゴン) リージョンに設定してみました。

*1:FM802 RADIPASS などは、アカウントの登録は + が通るが、実際のアンケートフォームが + を通さないのでいちいち変更しないといけない。

続きを読む

Xamarin 用の Injection フレームワーク Saitama を使ってみた

NuGet のフィードを眺めていたら、Saitama.Android というフレームワークが更新されたという情報が流れてきました。

どういう経緯でこの名前がついたのかわかりませんが、日本人的にはすぐにこの AA を思い浮かべるでしょう。*1

f:id:iseebi:20160406064936g:plain

名前はともかく、紹介記事を読んでみると、MvvmCross がつらいけど MvvmCross のインジェクションっぽいのが欲しくて作ったみたいなことが書いてあって気になったので試してみました。

*1:その後 @atsushieno さんに指摘いただいたのですが、ワンパンマンのほうじゃないかとのこと。そういえばあっちもサイタマだった…。

続きを読む

3Dプリンタを買いました

f:id:iseebi:20160305204729j:plain

思い立って3Dプリンタを買いました。

自転車マウンタとか、ベッド用タブレットアームとか色々買ってきたのですが、せっかくこれ引っ掛けるところがあるんだったら色々ドッキングしたいなーと思っていて、DMM.makeの出力サービスとかでいい感じにできるかなと思ったのですが、トライアンドエラーで何度もやり直しができないので、自信がない。

やはり手元にあったほうがいいと思って3Dプリンタ欲しいと思ってはいたのですが、10万オーバーの世界だよなあと思いつつも調べたら、6万くらいで買えて、使いやすそうなダヴィンチという製品群があることを知りました。いろいろ検討して、ダヴィンチ1.0A という機種を買うことにしました。

ダヴィンチ 1.0A

ダヴィンチはXYZプリンティングという会社の製品群で、熱溶解フィラメント製法という、材料を細い線にしてリールにしたフィラメントというものを溶かして積み重ねてモデルを作ります。

1.0Aはこの会社の中の製品としてはエントリーユーザー向けの機種にあたります。最大で 20cm 四方のモデルを出力できます。

3Dプリンター ダヴィンチ 1.0 A

3Dプリンター ダヴィンチ 1.0 A

エントリーユーザー向けとしてはダヴィンチJr.という機種もありますが、こちらは安い代わりに出力できるサイズが 15cm 四方となります。

3Dプリンター ダヴィンチ Jr. 1.0

3Dプリンター ダヴィンチ Jr. 1.0

もう少しコンパクトだと思ってたら結構大きい箱で届いてびっくりしました。玄関塞いじゃって、独り身の1K部屋に入れるためには一度家具を動かす必要がありました。

f:id:iseebi:20160305094800j:plain

付属品はこんな感じ。モデルをステージからはがすためのへら、プリントヘッド掃除用のブラシなどがついています。あと出力する上で大事なスティックのりがついています。あとなぜかプラスチックの板がついてて何に使うんだろう…と思ったら、持ち上げる時に使うハンドルの穴を塞ぐためのパーツでした。

f:id:iseebi:20160305201728j:plain

モデルの作成

f:id:iseebi:20160320210724p:plain

学校は機械系と情報系を組み合わせた感じの学科だったこともあり、CAD を中心に勉強してたので、簡単な使い方は知っていました。いまでも IT エンジニアには Illustrator よりもわかりやすいんじゃないかな、と思います。

学生当時は 2D は AutoCAD、3D は Rhinoceros や Pro/ENGINEER を使っていましたが、いまは 123D Design という非商用無料の 3D CAD ソフトがありましたので、これを使うことにしました。2D 系の操作にショートカットがあまり定義されていなくて操作性の部分は微妙だなと思ったのですが、そこそこ直感的に使えてこれから始める人にはいいと思います。

また、僕はジョイントを持っているものに対して違うものをひっつけたかったので、測定用にノギスも買い、これで測りながら 123D に落としていきました。

作成したモデルは STL という形式に出力すれば、ダヴィンチの出力アプリである XYZware に読み込ませることができます。

モデルの出力

f:id:iseebi:20160320211548p:plain

XYZware で STL ファイルをロードするとモデルが現れるので、ステージのどの部分に出力するかを指定することができます。

プリントボタンを押すと、パラメータの設定画面が出て、ここでモデルの出力時の調整ができます。

プリントボタンを押すと、所要時間とフィラメントの消費量の見積もりが表示されるので、それでよければプリントを開始します。

プリント前にモデルが出力される箇所にスティックのりを塗ります。これをしておかないと、モデルを出したときにステージにフィラメントが固定されず出力が失敗します。また、モデルが出る部分だけではなく、向かってステージ右手前側にテストプリントが行われるため、ここにも塗っておく必要があります。

f:id:iseebi:20160320211921j:plain

プリントが始まるとエクストルーダー(プリントヘッド)は 210 度、ステージは 90 度に熱せられます。ステージの余熱に時間がかかり、実際に出力が始まるまでは 5 分程度かかります。

モデル出力後は冷却され、ステージが終わって完了となります。モデルをはがした後は、濡らした布でスティックのりを拭き取って、乾拭きして終わり、という感じになります。

作ったもの

この 2 週ほどで作ったものです。

モバイルバッテリーマウンター

最近 iPhone 6 Plus のバッテリーがもたなくなっていて、3時間で20%とかになってしまうのですが、バッテリー交換するにも画面左下欠けてておそらくここも直さないと交換してもらえないと思うし、今年買い替えることを考えると無駄な出費だと思っていました。

サンワダイレクトの 800-BYPDA2BK という自転車マウントはiPhone側に専用のケースをつけるタイプとなっています。

http://www.amazon.co.jp/dp/B00SUY7T1Qwww.amazon.co.jp

ここの固定部分にダンボーバッテリーを固定するプレートを作りました。しっかりケース固定にしてもいいかなと思ったんですが、めんどくさいと思ったので輪ゴム固定。

タブレットアームのiPhoneジョイント

先ほどの自転車マウントケースのジョイントパーツを使って、iPad を接続するアームに iPhone をマウントできるようにするジョイントを作りました。

http://www.amazon.co.jp/dp/B00NHKW9UYwww.amazon.co.jp

Venue 8 Pro 用のスタンド

ThingverseXYZプリンティング公式サイトのギャラリーなど、3D モデル共有のサイトから無料でダウンロードできるモデルがたくさんあり、そのまま出力したり独自の拡張を加えることができます。これはこちらのモデルをそのまま出力しただけですが、とってもぴったりでよかったです。

Xamarin と Gadgeteer と SignalR で色を伝えるデモ

f:id:iseebi:20160313102216j:plain

先日のDevelopers Summit 2016 Japan Xamarin User Group コミュニティブースと第3回フェンリルデベロッパーズセミナー セッション「モバイル/クラウド/IoT…C# の新たな活躍の場」でご紹介したデモのソースコードを公開しました。

GitHub - iseebi/ColorWithDevice: Connection demo with Xamarin / .NET Gadgetter / SignalR

どんなデモ?

このような動きをします。

  • Gadgeteer と iOS/Android アプリを Bluetooth で接続します。
  • ジョイスティックの向きに合わせて LED の色が変わります
  • その色を Bluetooth Low Energy で接続された iOS/Android に送られ、画面上に同じ色が表示されます。
  • Gadgetter につながっていないアプリにも、SignalR を通じて同じ色が表示されます。
続きを読む

Storage Container を削除できない

Azure で VM の削除の順番によっては、ストレージに対するリースが残ったままになって消せなくなってしまう。 中に入っている VHDHow to break the locked lease of blob storage in Microsoft Azure (PowerShell) で消すことができる(これも大概変な動きするけど…)。

しかしながら、VHD を入れていた Storage Container のリースが解除されない。しかも当該のリースを break する APISDK に入っていなさそうだった。

そこで、Azure SDK for Ruby をインストールしたマシンで、irb を使って以下のように対応した。

$ irb 
irb> require 'azure'
irb> Azure.config.storage_account_name = "<<storage_account_name>>"
irb> Azure.config.storage_access_key = "<<storage_access_key>>"
irb> azure_blob_service = Azure::Blob::BlobService.new
irb> headers = azure_blob_service.service_properties_headers
irb> headers['x-ms-lease-action'] = 'break'
irb> url = "https://<<storage_account_name>>.blob.core.windows.net/<<storage_container_name>>?comp=lease&restype=container"
irb> r = azure_blob_service.call(:put, url, headers)

これで Storage Container も消せるはず。

Xamarin でネイティブオブジェクトを使う際に最近気をつけていること

Xamarin でネイティブクラス(UIViewやActivity)のオブジェクトを使った際、気をつけて使わないとクラッシュの元になったりします。

今回は最近はまって気をつけていることをご紹介します。

続きを読む