最近気になっている技術ネタ20連発 (主に #azure #xamarin)

最初は100連発にしようとおもったけど力尽きた。 Pocket にいろいろ入れてたら1000個超えてたので、ちょっとまとめ。見た段階でスターつけるなり、タグ付けるなりしないとダメだなぁ。ある程度まとまったらカテゴリわけて個別の記事にしようかな。 君はPower Assertを知っているか #potatotips // Speaker Deck JavaScriptのことかと思ったらAndroid向けだった レトロラムダはどれ程モダンか // Speaker Deck Java6 でもラムダでかけるらしいよ! Announcing ASP.NET Session State Provider for Redis Preview Release - .NET Web Development and Tools Blog - Site Home - MSDN Blogs MS 謹製 Redisのセッションプロバイダーがキター! しかもクラウドのMicrosoft Azure Redis Cache (Preview)とオンプレミスの両対応とな? Microsoft Azure Redis Cache (Preview) は早く日本リージョンで稼働させてほすぃ Azure API Management and Azure Mobile Services - giventocode タイトルの通り、Azure API Management と モバイルサービスの合わせ技 Azure API Management は早くにほん(ry Azure API Management を使うと、ユーザーごとのクォータ管理とか細かい制御が出来るという理解でよろしいだろうか? ...

May 16, 2014 · nnasaki

「現場」で頑張りすぎないたった一つの理由

f:id:nnasaki:20131220033106g:plain この投稿は DevLOVE Advent Calendar 2013 12月20日の記事です。 前日は tchikuba さんでした。 タイトルはホッテントリメーカーから作りました。皆さんとてもエネルギッシュで前向きな記事が多い中、ちょっと息抜きな感じで見ていただければと思います。 自己紹介 DevLOVE仙台 のスタッフをしています。仕事はいわゆる SIer です。c# が好きです。でも、 VB.NET ばくはつしろと思ってます。最近は Windows Azure モバイル・サービス をみんなに勧めてまして、BuildInsider にて iOSアプリを5分で作ろう! という記事を書いています。 何故、頑張りすぎないか? 「現場」のため。自分のため。健康のためです。あれ、理由が3つあるけど気にしない。 例えば、がんばるあなたがプロジェクトを殺す という話があります。みんなに頼りにされている彼。彼無しでは「現場」が回らない。もちろん彼もそう認識している。でも彼は体調を壊してしまう。「現場」も壊れてしまう。すぐに読めますので一度読んでみてください。 **これが怪談なのは、誰も悪意を持っていないところだ。彼はプロジェクトを助けるために働き、皆もそれに感謝した。結果、プロジェクトが破綻に近づいた。 また、DevLove仙台では次のスライドにて、ソフトウェア開発データ白書を元に、開発の91%は受託開発でレガシーであるという話をしました。 Devlove仙台20130309 レガシープロジェクト脱出大作戦 ** from Yamamoto Masaki このスライドで言いたかったことは、どうしようも無い「現場」からは逃げるしかない。ということです。逃げ出すために前振りとして、勉強やアウトプットするべきと書きました。 その「現場」はあなたの300人月を捧げる価値があるか? @papanda さんの言葉によく出てくるのが「一生涯ソフトウェア開発たかだか300人月」です。人生はとても短い。 もちろん、「現場」から逃げるだけが正解じゃ無いと思います。私はパッションが重要だと考えています。 たとえば、「ファイナルファンタジーXIV:新生エオルゼア」。これが何故「新生」かというと旧版があまりにも酷く作り直したから*1。旧版は簡単に言うと企画は日本でやって、オフショア開発したらつまらないゲームが出来上がり、大コケしてしまった結果、旧版のプロデューサーは更迭されてしまいました。 その後、今のプロデューサーに変更後、彼のパッションによってオフショア開発のプログラムは全面的に書き換えられ、まったくの別物である「新生」となりました。先日リリースされて150万アカウントを超す大ヒットとなりました。 このようにパッションあふれる「現場」のメンバー、もしくはリーダーとなれるのであれば、逃げたりせず踏ん張りどころだと思います。 逆に、もし、あなたの「現場」にそのようなパッションは存在せず、ただただ現状を呪う言葉しか出てこないのであれば、その「現場」から逃げることは選択肢の一つとして選んで良いと思います。 まとめ 「一生涯ソフトウェア開発たかだか300人月」です。大事なことなので2回言いました。 今の「現場」で頑張りすぎていませんか?情熱を注げない「現場」に対して孤軍奮闘していないでしょうか?行動経済学に保有効果というものがあります。 保有効果とは、自分が所有するものに高い価値を感じ、手放すことに抵抗を感じさせる効果のことです。 人間は一度手にしたものは手放しにくい生き物です*2。あなたが壊れてしまう前に「現場」から逃げ出すことも考えてみてください。 と、つらつらと偉そうに書いてみましたが、これは自戒でもありますw 頼りにされるとやっぱり頑張っちゃうよね。でもほどほどにね。今日は金曜日だし忘年会でも行って、ストレス発散しましょう。 明日は kurobara さんです。よろしくお願いします。 *1:旧版については、ニコニコ大百科:ファイナルファンタジーXIV(旧版)に詳しく載っています。 *2:ウォーターサーバーとかレンタルモップが1週間無料とかやっているのは、この保有効果を狙っているから。無料期間が終了し、引き取りに来られると手放したくないと思ってしまい、そのまま継続してしまうことがある。

December 20, 2013 · nnasaki

Windows Azure モバイル・サービスでパフォーマンス監視なら NewRelic がオススメ

この投稿は Windows Azure Advent Calendar 2013 の19日目の記事です。 前日は shosuz さんの Windows Azure Mobile Services 高度な設定について でした。 Windows Azure モバイル・サービス はその名の通り、モバイルアプリケーションを開発するにあたって非常に便利なサービスです。 稚拙ながら BuildInsider にて iOSアプリを5分で作ろう! という記事を書いています。 本当に5分で作れます。先日JAZUG仙台にて実演しました。無料で試せますので、是非皆様試していただければと思います。 さて、今回はモバイル・サービスのパフォーマンス監視ということで、New Relic を紹介したいと思います。 New Relic とは レスポンスタイム 等の統計を収集して、New Relic のサイトにて見やすく表示してくれるサービスです。モバイル・サービスだけでは無く、.NET アプリケーション や、Ruby, Node.js 等の様々な言語に対応しています。 インストール方法 Use New Relic to monitor Mobile Servicesを参考に設定していきます。残念ながら今は英語のみのようですので、見出しに沿って補足していきます。 Windows Azure ストア から New Relic を契約する(Sign up for New Relic using the Windows Azure Store) Windows Azure ポータル から Windows Azure ストア を表示し、 New Relic を追加します。 f:id:nnasaki:20131217034155p:plain f:id:nnasaki:20131217034407p:plain f:id:nnasaki:20131217034722p:plain f:id:nnasaki:20131217035054p:plain アドオンに表示されるようになります。 ...

December 19, 2013 · nnasaki

ソフトウェアテストシンポジウム 2013 東北 JaSST'13 Tohoku に参加しました #jassttohoku

しまった写真取り忘れてた。 Togetter まとめ JaSSTソフトウェアテストシンポジウム-JaSST'13 Tohoku どの方もとても良い講演でした。 ライブテスティングって何だろうと思ったら実況中継みたいな感じなんですね。名キャスティングで楽しめました。 ツイートしましたが、LTで発表していただいた方々もLTじゃなくて1セッションとして今度聞いてみたいです。本当に。 来年も開催されるということなので、次は登壇する側になれるようネタを仕込んでおきたいなぁと思います。TDD とかとか。 以下、今日知ったことをまとめておきます。 Astah* で状態遷移モデルから自動で試験項目を作れる 品質スイートプラグイン 残念ながら Professional 以上でしか利用できないようなので、今使うことは出来ないかな… 1024パターンのテストを9パターンにする 原因結果グラフ。たとえば音楽再生時に着信して一時停止した場合に使用する。本当に5年前知っていればよかった。 CEGTest - 原因結果グラフからテスト条件を作成するツール テストについて経営層・マネージャに3つ抑えておいてほしいことは3つ テストは欠陥があることしか示せない。バグ0を強要するお客様とはおつきあいを考えて欲しい。 全数テストは不可能。「いいから全部やれ」は勘弁。テスト技法を用いてテスト数を間引くこと。指示する人は全部のサイズを理解していないことが多いので確認すること テストは条件次第。「有人宇宙ロケット」「プロモーション限定スマフォアプリ」ではドメインが違う Selenium と Jenkins で自動化 Selenium IDE で記録したテストは、Jenkins で自動化できて、IE等でも実行できる。前に IDE で記録したテストを WebDriver で書き直そうとしたけどナンセンスっぽい。 メトリクスは一つの指標に過ぎない たとえば信頼度成長曲線だけ見ても、テストがクソなのかソフトが良いのか判断がつかない。同じプロジェクト・同じ人であれば、過去の実績から判断がつくが、ソフトウェア開発で同じ条件になることは考えづらい。 じゃぁ、どうするかというと判断材料の一つであって、それだけ信じてもしょうが無い。自分たちが何をどうやってなんでテストしたかが重要。お客様に説明できるか?

June 1, 2013 · nnasaki

BOM 付き UTF-8 から BOM を取りたい

Windows Azure Mobile Services から Android のサンプルアプリをダウンロードして IntelliJ でビルドしようとすると以下エラーが出た。 `java: \65279は不正な文字です ` BOM 付き UTF-8 だと起こるということが分かったので、BOM を削除しようとすると意外といい方法が無い。(vim -b で開いて削除するとか。手作業が多い) 今回行った作業をまとめておく。 BOM 付きかどうかの確認方法 file コマンドを使用するのが一番手っ取り早い。以下のように with BOM で出力される。 `$ file * ToDoActivity.java: UTF-8 Unicode (with BOM) Java program text, with CRLF line terminators ToDoItem.java: UTF-8 Unicode (with BOM) C++ program text, with CRLF line terminators ToDoItemAdapter.java: UTF-8 Unicode (with BOM) Java program text, with CRLF line terminators ` BOM の削除 (Ruby 編) Ruby のワンライナーで解決出来ないか試してみた。 file コマンドの結果で ASCII って表示されているけど、元のファイルが日本語含まれていないからで、問題なさそうだった。 ...

May 3, 2013 · nnasaki

デシジョンテーブルを使用してテストしてみよう #TddAdventJp

この記事はTDD Advent Calendar jp: 2012 : ATND の6日目です。 前日(5日目)は @a_suenami さんの 受託開発でTDDを導入するということ でした。 デシジョンテーブルを使ってテストしたい! 仙台で行われている、仙台ソフトウェアテスト勉強会とデシジョンテーブルとSpockで試すTDD(ネタ) - pocketberserkerの爆走にインスパイアされ、テスト技法としてデシジョンテーブルを書いた後に、具体的にどのようにテストの自動化を行うか考えてみました。 今回は(も?)FizzBuzzをお題としたいと思います。 デシジョンテーブルとは? デシジョン・テーブルを活用するを参照してください。以下引用します。 デシジョン・テーブル(ディシジョン・テーブル)は decision table、 つまりそのまま訳せば「決定表」です。 様々な事情・条件を考慮して、 何かを「決める」ときに、 それを表形式で表現する方法です。 SpecFlowを使用する id:pocketberserker さんは Groovy で実践していらっしゃいますが、私は c# でデシジョンテーブルを表現できないか試行錯誤してみました。テーブルの表現は Ruby on Rails の受け入れテストでよく使用される Cucumber でできそうです。 c# では Cucumber は残念ながら使用できませんが、同じDSL(Gherkin)を使用できる SpecFlow というツールで代用ができそうです。 環境設定 以下の環境で試しています。 Windows 8 Visual Studio 2012 Professional (Expressは拡張が入らないので非推奨) c# また、Visual Studio の「拡張機能と更新プログラム」から次の拡張をインストールしてください SpecFlow 実践 Project Setup | SpecFlow とだいたい同じように進めますが NUnit ではなく MSTest を使用し、さらに Chaining Assertion を使用します。xUnit 系とは少々異なる記述となりますが、単純に好みの問題です。 SpecFlowプロジェクトの作成 Visual Studio にて c# のクラスライブラリを新規作成します。名前は「FizzBuzz.Specs」とします f:id:nnasaki:20121201015902j:plain Class1.cs は不要なので削除します ...

December 6, 2012 · nnasaki

ソフトウェアテスト勉強会に行って来た

f:id:nnasaki:20121116215807j:plain ソフトウェアテスト勉強会~やってみよう!デシジョンテーブル&状態遷移~ - TDC - ニュース - 東北デベロッパーズコミュニティ 写真 は21歳誕生日を祝っての21個のイカリングスカイタワー写真です。 テスト勉強会は0回以降参加していなかったので、ようやく参加できた。講師は@nemorineさん。 デシジョンテーブルと状態遷移は結合テストと思い出したくない強化テスト(結合テスト以降でバグがいっぱいあるとやる)で作ったなーと懐かしながらやっていた。 ジョジョネタがところどころ出てきましたが、残念ながら不発ッ!学生もチラホラいるので、ついてこれなかったかしら。 デシジョンテーブルと状態遷移図(表)はJSTQBテスト技術者資格認定-シラバス(学習事項)・用語集-では「〜という役割である」という説明だけで、作成の仕方までは解説されていないので、実際に手を動かして作るのはとても参考になった。 いくつか覚えていることを箇条書きメモ。 デシジョンテーブル 入力条件(縦軸)は同値分析を行い、2のべき乗で増えていく条件を出来るだけ減らすこと。 条件指定部(横軸)の組み合わせも同様に圧縮できる。設計時には便利だが、テスト時はやり過ぎると試験項目漏れとなるので注意。 真偽値は綺麗に書く。バラバラに書くと網羅しているかパッと見分かりづらいから。 コツは入力条件が3つなら2**3 = 8通りとなるので、一番目の入力条件はYYYYNNNN、2番目の入力条件はYYNNYYNN、3番目はYNYNYNYNとして機械的に書く。 三番目の機械的に書くのは表にするとこんな感じ。Yを半分ずつに減らし(分割し)て書いていくのがポイント。自分は知らなかったので、おーなるほどーと思った。 入力条件 条件指定部 クーポン YYYYNNNN 平日 YYNNYYNN 学生 YNYNYNYN 状態遷移テスト 状態遷移図で条件漏れは発見しにくい。理解をしやすくするものとして、図を元に表を作ると良い。 UML の状態遷移図を使用しても良い 状態が遷移する間、初期状態からイベントをいくつか経由して初期状態に戻った時、イベントの同時実行等に注意する。 勉強会後の懇親会はほぼ全員参加で14人も集まった。 なんと昨日誕生日と明日誕生日というニアピンな人が二人もいたので、低音なハッピバースデーで祝った。 生搾りパイナップル絞りサワーが大人気で、うまかったけど、酵素のせいか飲めば飲むほど酔いが覚めるという意見もあり。 c#erいないすかね、という話をしたら「僕は.NETが嫌いなんでc++でゴリゴリですね」という強者もいて、なかなかc#使いには肩身が狭い世の中です。 次回は12月15日(土)にゲストを招いてテスト技法の勉強会を予定しているそうで、HAYST法を使ったりするようです。私は残念ながら既に先約があって行けません(とても行きたい!)が、皆さんは予定をあけておくと良いと思います!

November 17, 2012 · nnasaki

ASP.NET MVC4 で css の自動縮小をすると css に記載した画像が読み込まれなくなることがある

例えば以下のような構成の場合。 `Content | | [jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-1.1.1.[css](http://d.hatena.ne.jp/keyword/css) | +---images | [ajax](http://d.hatena.ne.jp/keyword/ajax)-loader.gif ` BundleMobileConfigに以下のように定義されています。 ` bundles.Add(new StyleBundle("~/Content/jquerymobile/[css](http://d.hatena.ne.jp/keyword/css)").Include("~/Content/[jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-{version}.[css](http://d.hatena.ne.jp/keyword/css)")) ` 上記 css には以下のように定義されている。 `url(images/[ajax](http://d.hatena.ne.jp/keyword/ajax)-loader.gif) ` するとデバッグ時は良いがBundleTable.EnableOptimizations = trueを指定して縮小させると画像のURLが以下のようになり読み込めないとエラーになる。 `[http://localhost:1509/Content/jquerymobile/images/ajax-loader.gif](http://localhost:1509/Content/jquerymobile/images/ajax-loader.gif) ` 理由はBundleの定義でjquerymobileをフォルダのように記載してしまっているため、cssのURLが以下のようになるから。 `[http://localhost:1509/Content/jquerymobile/css?v=pFGS97cnbEIzXqbDbNmSv2vLBmv9zHVSGkyxN7zB0Qc1](http://localhost:1509/Content/jquerymobile/css?v=pFGS97cnbEIzXqbDbNmSv2vLBmv9zHVSGkyxN7zB0Qc1) ` 解決策は / ではなく . にすればよい。 ` bundles.Add(new StyleBundle("~/Content/jquerymobile.[css](http://d.hatena.ne.jp/keyword/css)").Include("~/Content/[jquery](http://d.hatena.ne.jp/keyword/jquery).mobile-{version}.[css](http://d.hatena.ne.jp/keyword/css)")) ` このように BundleCollection に css を加えるときは勝手にフォルダを追加しないようにすること ちなみに自動縮小っていうのは、ASP.NET MVC4 の新機能で javascript と css の改行コードを削って容量を小さくしてくれる機能です。普段のデバッグ時は無効になっていて、有効になる条件は2つ Web.config の compilation 要素が false の場合 Global.asax の Application_Start() で BundleTable.EnableOptimizations = true と設定した時 デバッグ時に無効になっているので、IIS にいざデプロイした時に「あれ画像が表示されねー」って悩むかもしれません。 上記の例で上げたのは jQuery.Mobile.MVC という割とメジャーな NuGet パッケージを使用すると発生する問題なので修正したいんですが、CodePlex や github 見てもプロジェクトが見つからないのでメモ書きするぐらいしか無いという状況。

September 8, 2012 · nnasaki

Macbook Pro Retina ディスプレイモデル に WIndows 8 Release Preview をインストールする

Parallels Desktop に入れるつもりだったんだけど、問題があって入れられない。KB Parallelsなので BootCamp に入れるために外付けDVDとUSBメモリを買った。最初はBootCampでWindows 8 Release Previewをインストールしてみた | bootcamp de Windows on Mac ~ MacでWindowsを動かそう~をみてUSBメモリからやろうとしたんだけど、どうしてもうまくいかない。次に面倒だったけど、Retina MacBook ProにWindows 8インストール成功、しかも簡単だったをみてDVDにWindows8を焼いて、インストールしようとしたけど、「インストーラディスクが見つかりませんでした」と出てしまいダメ。焼き方が悪かったかと思い、Mac OS X でディスクイメージファイルから CD や DVD を作成するで焼き直したら先に進んで、再起動した。けれどもUSBメモリをさしっぱなしにしてたらUSBメモリからブートできないといわれて、抜いて試したらやっぱりブートできない。 もういちど、BootCampアシスタントをやり直して、USBメモリを抜いておいたら無事にインストールが始まった。 今度はシリアルキーを入れる画面で、メモってなかったので先に進まずもう一度やり直すことにした。 やっとインストールが終わって、WIndows8 が起動した。 ドライバ周りでエラーが出ていたので、 BootCamp アシスタントで最新のサポートファイルをUSBメモリにコピーして、Windows8 でインストールした。 すると、解像度が2880になって文字のサイズが150%となり、Retina な Windows 8 になった。 でも、このままだとデュアルディスプレイで使用しているディスプレイが1920ぐらいまでなので、文字が大きすぎるため、Macは1680ぐらいまでの解像度に落として文字を普通にした。スコアを確認したらまずまずいい感じ。 f:id:nnasaki:20120708140259p:plain メモリも1.6Gと思ったより消費が少ない。 f:id:nnasaki:20120708140727p:plain Parallels が対応すれば BootCamp のパーティションを Lion から起動できるようになるので、しばらくはこのまま使い込んでみたいと思う。

July 8, 2012 · nnasaki

Felica カードリーダーが認識しなくて焦った

確定申告のために Felicaカードリーダー RC-S330 を引っ張り出して、Mac Book Air に付けた。Parallels Desktop の Windows XP にドライバをインストールしたんだけれども、デバイスマネージャで見るとドライバが読み込めないと出ているので、何回かドライバを削除したり繋げ直したけどよくならず。 ぐぐってみたら、Windows XP Lite で不要なサービスとして Smart Card Service を削っていたのが悪かったらしく、下記の通りでした。(サーバーが応答しなかったので、グーグルのキャッシュのリンクを貼っておきます) SONYのRC-S330(Felica Port PaSoRi RCS956 USB)を認識しない デバイスマネージャで見ると「Felica Port PaSoRi RCS956 USB」と表示されるが、アイコンに黄色ビックリが付いてドライバの読み込みにコード39で失敗している。 (「このハードウェアのデバイス ドライバを読み込むことができません。ドライバが壊れているか、ドライバがない可能性があります。 (コード 39)」) XPの CDの中の [I386](http://d.hatena.ne.jp/keyword/I386)\SMCLIB.SY_ を EXPAND SMCLIB.SY_ SMCLIB.SYS して %WINDIR%\system32\drivers にコピーする。 これで出来るーと思ったら、Smart Card Service が復活しておらず、まだ動かず・・・。 いろいろ調べてまだDLLが足りないのと、サービスの再インストールが必要なようで、How to reinstall the Smart Card service on Windows XPを実行してようやく動くようになったー。なんだかんだで1時間近くかかったなぁ。元はといえば Lion に対応していない e-tax のせい!

February 26, 2012 · nnasaki