【Spring 4.0 対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (2)

記事目次 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (1) 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (2) 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (3) 今回使用するソース https://github.com/nnasaki/spring-rest/tree/1 1回目の続きです。こんな感じのをつくります。 f:id:nnasaki:20150710100020p:plain どんな動きをするか見てみよう ソースは Github に置きました。。ソースを落としてきて、 ./gradlew bootRun すれば次のような感じでサーバーが立ち上がると思います。 f:id:nnasaki:20150710100110p:plain http://localhost:8080/customer に対して { "password": "test_password" }' を POSTしますとユーザーが作られます。 kobito.1403786256.892886.png http://localhost:8080/customer/1 に対して GET すると、次のようなレスポンスが返却されます。 ...

June 26, 2014 · nnasaki

【Spring 4.0 対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (1)

記事目次 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (1) 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (2) 【Spring 4.0.5対応】Spring Boot と Spring MVC と Spring Data JPA を使って Web API を作成する (3) お仕事では Java を使う機会が多くて、今までは Struts が多かったんだけど、昨今の脆弱性云々でさすがにまずいだろということで、調査を兼ねて Spring を触ってます。家で素振りせずにお仕事でいきなり投入もまずいしね。 やりたいことはタイトルの通り、Web API の作成で、DB の操作に Spring Data JPA を使ってみたいと思います。 この記事を書いた動機はいまいさんに煽られたからです。 @nnasaki ブログ、エントリ薄いよ!なにやってんのッ!!— いまいまさのぶ (@masanobuimai) 2014, 6月 24 というのは、半ば冗談のような本当のような感じがしますが、改めてこの記事を書いた動機は http://spring.io/ のドキュメントが MVC と JPA でトピックが独立していて、組み合わせたイメージがわかりにくかったのと、最新の Spring 4 の日本語ドキュメントが少なかったので書いてみました。 ...

June 25, 2014 · nnasaki

Objective-Cからswiftに書き直すときの対処まとめ

Microsoft Azure Mobile Servicesのサンプルアプリをswiftで書き直して、Pull Request を行いました。 残念ながらこの Pull Request は取り込まれなかった(私が行った二日後ぐらいに、別のPull Requestで同等の機能を中の人が実装したから。「ちょっ、おまwwwww」っていう感じだけど。)のですが、そのときにいろいろとノウハウが貯まったので対処をまとめました。 dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib というエラーメッセージが出てアプリが起動しない 手始めにmain.mを削除してとQSAppDelegate.swiftに置き換えたらこれが出てハマりました。 Xcodeを再起動したら直りました。 ‘AnyObject[]’ does not have a member named ‘mutableCopy’ NSArrayをmutableCopyしてNSMutableArrayに入れようとしたらエラー。キャストではなく、NSMutableArrayのコンストラクタで返すようにしたらうまくいったっぽい。 // 修正前 var items = results.mutableCopy() as NSMutableArray // 修正後 var items = NSMutableArray(array:results) Ambiguous use of ‘NSNotFound’ iPhone5sでビルドしていたときは良かったけど、iPhone5やiPhone4sでビルドしたらなぜか上記エラーでビルドが通らなくなった。多分、#ifでプラットフォームごとに読み込むヘッダーを変えているからだと思われる。Foundation.NSNotFoundとすることで解消した。 // 修正前 if (index != NSNotFound) { //... } // 修正後 if (index != Foundation.NSNotFound) { //... } ブロックのメソッド定義と呼び出し方 これは慣れるとそうでもないんだけど、慣れるまでわけわからなかった。 空のブロックの場合 空の場合はそんなに違いないですかね。 objective-c // 定義 typedef void (^QSCompletionBlock) (); - (void)refreshDataOnSuccess:(QSCompletionBlock)completion; // 呼び出し方 [self.todoService refreshDataOnSuccess:^ { if (self.useRefreshControl == YES) { [self.refreshControl endRefreshing]; } [self.tableView reloadData]; }]; swift // 定義 func refreshDataOnSuccess(completion:()->Void) // 呼び出し方 todoService.refreshDataOnSuccess({() in if (self.useRefreshControl == true) { self.refreshControl.endRefreshing() } self.tableView.reloadData() }) 引数が一つあるブロックの場合 swiftでのポイントは呼び出し時のブロックに型を指定しないことですかね。 swift での NSUInteger は UInt ではなく、Int で良いみたいです。UInt も用意されているようだけど。 ...

June 16, 2014 · nnasaki

Azure API ManagementとAzure モバイルサービスを組み合わせて使ってみた

kobito.1402416220.009483.png Azure Remote Appがやっと使えるようになったけど、構成中のまま進まないので、あまり使われて無さそうなAPI Managementを試してみた。 API Managementは自分が作ったWeb APIを管理するために使う。Twitter APIとかでよくある1分間に5回まで、1日100回までとかいったクォータを管理することができるのと、APIのドキュメントを自動生成してくれる。 考えられるシチュエーションとしては、とあるWebサービスなりスマホアプリを作成したら、マッシュアップのため開発者向けAPIを提供することになった。でも開発者用のAPIキーを管理するのはめんどくさいし、特定の開発者がリソースを占有するのも問題だ。削除のAPIを開発者に公開したくない。 そんなときに使えるサービスなのかなと思う。 ダッシュボードはこんな感じでまぁまぁ見やすい感じ。 kobito.1402416521.782845.png モバイルサービスのAPIの追加 モバイルサービスのToDoItemテーブルを操作してみたいと思います。モバイルサービスは別途サービスを作成して、ToDoItemテーブルを作成しておきます。 API Managementにて、ADD API を選びます。 kobito.1402417097.819989.png タイトル、モバイルサービスのURL、API Managementのサフィックスをそれぞれ次のようにいれます。 kobito.1402417234.289642.png 一覧に表示されるので、TODOITEMSをクリックして編集します。 kobito.1402417262.804404.png 「Operation」タブを選択し、「ADD OPERATION」をクリック。API Managementからモバイルサービスに対して行う操作を登録します。 kobito.1402417327.451279.png 次のようにHTTP verb等に値をいれます。 kobito.1402417417.421747.png Parametersは無くてもいいですが、とりあえずfilterだけ設定できるようにしてみます。パラメーターに設定できる値は他にもあります。Query records operationを参照してください。 kobito.1402417666.691807.png 設定が終わったらSaveをクリックして保存します。 モバイルサービスAPIキーの設定 API ManagementからモバイルサービスのAPI呼び出しを行う際に、APIキーが必要です。(モバイルサービス側の構成で認証不要にしていれば必要無い) APIキーの設定はリクエストヘッダーにX-ZUMO-APPLICATIONを設定します。API Managementにてリクエストヘッダーを設定してAPIキーを入力するには、Policiesを編集します。(最初わからなくて出来ないかと思った) kobito.1402417980.266534.png Policy ScopeのAPIでtodoitemsを選択して、Policy definition の<inbound />の間に次の値を入れてRecallulate...ボタンを押して保存します。 <set-header name="X-ZUMO-APPLICATION" exists-action="append"> <value>YOU APLICATION KEY</value> <!--for multiple headers with the same name add additional value elements--> </set-header> kobito.1402418161.956726.png 開発者ポータルを確認してみる 以上の操作をしてできあがった開発者向けのポータルが https://nnasaki.portal.azure-api.net です。 ...

June 11, 2014 · nnasaki

de:codeで見るべきオススメ動画4つ #decode14

f:id:nnasaki:20140607204208p:plain いつのまにかキーノート以外に、セッションの動画が公開されていました。.NETとかマイクロソフトに興味なくても、エヴァンジェリストの方々はトレーニングされているのでレベルが高いです。スピーカーとしても勉強になります。 自分もまだ全部見てないんですが、実際にセッションを見て印象に残っていた個人的にオススメなのを4つあげます。 マイクロソフトの今の概要をサクッと知りたいならテクニカルキーノート Technical Keynote Developers build the Future | de:code | Channel 9 セッション中に4人のエヴァンジェリストの方々が登場し、マイクロソフトの今の技術の概要を約1時間で知ることができます。数百人の聴衆の前で心拍数が一切上がらない、井上さんのアイアンハートに注目です(違 プレゼンはおもてなし。見る人聞く人に楽しさと驚きを。SQL Serverに興味が無くても見るべきジニアス流 ジニアス流! SQL Server 2014 アプリ開発の極意 | de:code | Channel 9 個人的にキーノートより断然イチオシがジニアス平井さんのセッションです。とにかく見せ方がうまい。聞いてて飽きないです。あっというまの50分だと思います。 SQL Serverはどうでもいい(暴言)のでセッションは是非見てください。本当にこういうセッションが出来るようになりたい。 圧倒的といわしめたデモの素晴らしさ。iOS/Androidアプリ開発者は必見のXamarinセッション。 iOS/Android アプリを C#/.NET で開発 - Xamarin で実現するクロスプラットフォーム対応 – | de:code | Channel 9 会場で実際のセッションは見られなかったんですが、動画を見て改めてすごいと感じました。50分のなかで、クロスプラットフォーム開発、Xamarin Razor、MVVM Crossをデモを交えて紹介できるのは本当にスゴイ。 デモ中のソリューションがAndroidApplication14ってなっているのは、de:code14に合わせたのか13回練習したのかは謎ですw PCもAndroid, iOS, PowerPoint用に3つ用意してますね。しゃべっている間にデモ環境を用意。Androidのデモの画面の説明をしている間にiOSのデモを準備。本当にすごいです。 自分もPC2台用意すべきかといろいろ考えさせられるセッションでした。 .NET の今を知りたいデベロッパー向け。非.NET技術者にも見て欲しい、この 10 年をキャッチアップ 開発者のための技術選択と「いま」 この 10 年をキャッチアップ! .NET 開発者のための技術選択と「いま」 | de:code | Channel 9 .NETの技術がクライアントからWEBまで幅広く紹介されています。特に.NETは昔○○だったから嫌いなんだっていう人に見て欲しい。今は昔と比べてだいぶ良くなってます。確かに1.0、1.1は酷かったから。 以上4つですが、これから他のも見て良いのがあればまた紹介したいと思います。

June 7, 2014 · nnasaki

仮想マシンを日本リージョンで使ったら課金が発生した

Visual Studio Professional で MSDN を持っています。 MSDNの特典で Microsoft Azure がある程度タダで動かせます。Visual Studio 14 CTPが出て、Visual Studio 2013と共存不可ということから Azure 仮想マシンで試していました。 そうしたところ、何故か課金が発生して「ファ?」となったのでサポートに問い合わせてみた結果、仕様通りとのことで、詳しく書きます。 MSDNの特典は次の二通りある。私は現行プランを利用していた。 現行プラン:Azure MSDN — Visual Studio Professional http://azure.microsoft.com/ja-jp/offers/ms-azr-0010p 新プラン :Visual Studio Professional with MSDN http://azure.microsoft.com/ja-jp/offers/ms-azr-0059p 現行プランの場合、日本リージョンの仮想マシンは対象外。なので課金が発生した。 詳細は Microsoft Azure サポート チーム ブログ:Azure 日本データセンターについて のよくある質問に記載されている。 Q.現在、旧 MSDN プランを使用しています。日本データセンター上で仮想マシンを作成すると、0 円の使用制限にひっかかります。旧 MSDN プランの毎月無料で利用できる特典分に日本データセンター上で作成した仮想マシンは含まれないのでしょうか。 A.はい、以下の旧 MSDN プランにおいては、日本データセンター上に作成する仮想マシンの稼働時間は含まれません。 旧プラン Azure MSDN — Visual Studio Professional Azure MSDN - Visual Studio Premium Azure MSDN - Visual Studio Ultimate 引き続き MSDN 特典の無料枠を利用して日本データセンター上の Azure サービスを利用するには、新しい MSDN プランに変更する必要があります。 変更作業は Azure サポートにて承っていますので、変更をご要望の際は、Azure サポート サービスまでご連絡ください。 ということで、余り旧プランを使ってる人はいないと思うけど、日本リージョンを使う人は新プランに移行しましょう。

June 6, 2014 · nnasaki

de:code Day2 に参加した #decode14

de:code 公式サイト togetterまとめ Day1(一日目)の記事 → de:code Day1 に参加した de:code 二日目。技術セッション漬け。 ちょっと朝は調べ物してて遅刻したんだけど、この日も内容の濃いセッションばっかりだった。 全体を通してのまとめ 大分長くなりましたので、結論を先に書くと本当に楽しい二日間でした。 Microsoftの今後の方向性として、モバイルファースト・クラウドファースト。オープンソース。オープンソースについてはTypeScript等で徐々に浸透してきていますが、悪い印象を変えるには10年ぐらいかかるかなぁと思います。 今まではMicrosoft主導でいろいろな技術が導入されましたが、今後はコミュニティ主導に変わりつつあります。私も一開発者として、応援していきたいと思います。 また、今回はいろんな人と出会えたのが本当によかったです。特に同じ地方から参加したGrapeCityの皆様には大変お世話になりました。ありがとうございました。 では各セッションの内容は次に続きます。 ジニアス流。プレゼンには楽しみを。 ジニアスセッション。途中から参加したけどわかりやすい。トピックがそれぞれ独立してるからか。初期の前提知識を学習する必要無いんだな。 #decode14— Masaki Yamamoto (@nnasaki) 2014, 5月 30 SQL Server 2014は大して興味はなかったんだけど、ジニアス平井さんのセッションは是非見た方がよいということで見たら本当に良かった。SQL ServerのインメモリDBで性能100倍とか基本的なポイントは押さえつつ、所々のデモアプリで文字を書いたり地球をミラーボールにしたり遊び心にあふれていた。 最後はアプリで1分間に何回タップできるか競争。AzureとSQL Serverの構成で秒間数万リクエストまで耐えられるそうな。 自分もこんなふうに楽しませるセッションが出来ると良いなぁと感じた。 Microsoft Azure や IaaSの自動化はコンテキストをそろえる 次に、Azure IaaS 自動構成ツール Chef, Puppet, PowerShell DSC。自動化は大変人気があって、満席でした。みんな苦労しているのかな。 仮想マシン自体を作る(外側)はAzure Automation を使用する。作った後(内側)はChef, Puppet, PowerShell DSCを使う。混同しやすいので注意 #decode14 #RoomD— Masaki Yamamoto (@nnasaki) 2014, 5月 30 ということでコンテキストをまず合わせることが重要。 若干駆け足で範囲が広かったので、細部まではあまり理解できなかったけど概要はなんとなくつかめた感じ。Chefはちょろちょろ使ってるけど、ChefServerは立ち上げず、knife soloを使っているのであまりピンと来なかったところもある。 Azure 仮想マシンでChefを試す場合は、Extensionが用意されている。LinuxのExtensionはGUIが無いので、Powershell等を使用して追加する。 #decode14 #RoomD— Masaki Yamamoto (@nnasaki) 2014, 5月 30 Chef で IIS をインストールするときは、PowerShellのスクリプトを実行するというとってもクソなことをしている。 #decode14 #RoomD— Masaki Yamamoto (@nnasaki) 2014, 5月 30 Puppet か Chef のどちらかというと、Puppet 推し。独自DSLとか回りくどくてめんどくさくて心折れるけど、乗り越えると楽しい世界がある。 #decode14 #RoomD— Masaki Yamamoto (@nnasaki) 2014, 5月 30 ...

May 31, 2014 · nnasaki

de:code Day1 に参加した #decode14

de:code | 日本マイクロソフトの開発者/アーキテクト向けイベント - Microsoft Events & Seminars Togetterまとめ 個人の趣味で参加するにはちょっと高すぎる¥106,920(税込)(早期割引)。 セッションの撮影・録音は一切禁止だったので、写真はちょっと少なめです。 キーノート キーノートは6月中に動画で公開されるそうです。 私の主観でまとめてみました。 de:codeは毎年開催する! TechEdが無くなり、de:codeも今回だけかなぁと思ったら キーノート で樋口さんが毎年やりますと宣言。 Microsoft の新しいビジョンは4つ。Mobile, Cloud, Usage, Device(?)。 Mobile, Cloudは言わずもがな。じゃぁ、Usageはなんだっていうと、いままでは Windows になにか機能を付ければ買ってもらえたけど、その機能って実際使われていないよね。そうじゃなくて、みんなに使ってもらう機能を作っていきたいとのこと。みんなに買ってもらいたくなる製品を作っていきたい。 ごめん、4つめは確かDeveiceだったと思うんだけど忘れたw 学習教材としてタブレットとWindows Phoneの配布! タブレットはある程度予想してました。ですが、Windows Phoneについては、キーノートで「新発表はない」と明言した後の、まさかのプレゼントだったのでビックリ。機種は複数あったようで、1320でした。ちょっと大きめだったので、小ぶりのPhoneの方が良かったなーというのは欲張りかw IOT=IOYT (Internet of YOUR Things) IOTについて、マイクロソフトではより身近に感じてもらうように、YOURを加えて Internet of Your Things としている。 Project Siena タブレットアプリを作るタブレットアプリケーション レイアウトはタブレットアプリケーションでWinFormsっぽくぽちぽち置いて、データを選んでいくとあっというまにアプリケーションが出来る。フィルタリングとか関連づけはExcelの関数みたいな感じで行うことが可能。 データにはいつもの以外にRESTが使えるのべんりっぽい。ODataとかじゃなくて良かった。 Visual Studioとブラウザが連動して修正が可能 IntelliJのLiveEditと同じように、ブラウザ(Chromeでデモしていたが、IEでもFirefoxでも良い)で修正した内容が即VisualStudioのソースに反映される。拡張機能はいらなくて、内部でサーバーが立ち上がっており、SignalRで動いているっぽい。 修正したサイトはvisualstudio.comにソースをプッシュして、自動ビルド・テストが走り、Azure WebSiteへデプロイ。すごく便利ですね。 .NET Micro Framework と c# で組み込み開発 デモはラジコンのようなトラックをWindows Azureにセンサ情報を送りつつ、リモート制御、タブレットをリモコンとして使用して動かしていた。 Visual Stuidoを使用して、センサーやジャイロなどのハードウェアをGUIで設計が可能。gadgeteerというSDKも使っているとのこと。GUIで回路を設計して、GUIの名前が変数名となり、c#でコーディングが可能。 LEGO Mindstomrs EV3もIntelのGalileoボードも.NET Micro Framework と c# でコーディングが可能になるみたい。 プレゼントはタブレットよりこっちのトラックのほうが欲しかったなw Mobile First, Cloud First。だけど、セキュリティも重要だ。 セキュリティを統括する認証基盤。個人的に仕事でもちょこちょこでてくるので、興味深かった。オンプレミスとクラウドの認証連携。Microsoftの認証基盤といえばActive Directoryで、Azureと連携するとオンプレミスのIDとパスワードでクラウドと連携して使える。 さらにデバイスの制限、2 要素認証も出来る。さらにさらにsalesforce等の他アプリケーションにシングルサインオンも可能。これはすばらしいなぁ。 ...

May 29, 2014 · nnasaki

Microsoft Azure Web SiteでWordPress を5分でデプロイする話しをしてきた

今日は仙台・青葉まつりというのがあるのに、何故かITイベントがたくさんあった。 泥臭い受託開発を語り合う(DevLOVE関西×DevLOVE仙台コラボ企画) - DevLOVE仙台 | Doorkeeper イベント案内 | 2014-05-17 (土) JAWSUG仙台・会津・山形・沖縄!四大会場 地球最大の決戦 with JAZUG仙台 - 東北デベロッパーズコミュニティ FUSE15 - ゲーム開発イベント(Game Jam / ハッカソン) | Peatix 私はDevLOVEとJAZUG仙台両方の運営スタッフなので、ちょっと欲張って両方でることにしました。DevLOVE仙台は16時ぐらいまで一通りスタッフ業をした後にJAZUG仙台に参加しました。 ちょっとLT枠というか、時間が余っているようなのでたまにはMobile Servicesではなく、Web Site で 簡単にWordPressを立ち上げられて、1000req/sなサイト作れるよという話しをしてきました。 Azureの管理ポータルでWordPressをインストールして、プラグイン何個かいれて、インスタンス数をちょいちょいいじったぐらいで、サイトの負荷テストはCATMDESさんを使いまして、以下の結果です。 f:id:nnasaki:20140518003904p:plain 1000req/sってどれくらいかというと、ワールドサテライトに紹介されたときぐらいなので、かなりの処理速度ではないでしょうか?(クラウドワークさんがいらしてくれていたのに、ランサーズさんの事例ですみません) WBSで紹介された場合、そのアクセスの増加ペースは想像以上に瞬間的です。 大体紹介がはじまって、1-2分の間に、いつもは20req/sくらいのアクセスが、800req/sくらいにぐぐっと伸びました。その後、コーナー終盤までくると、1000req/sくらいまでピークのアクセスがきます。 EC2とS3をうまく使い分けてワールドビジネスサテライト砲を確実に乗り切る方法 | Cerevo TechBlog ちょっとしたキャンペーンサイトとか、ポータルサイトはWebSiteにWordPressをインストールすればあっという間に出来てしまいますね。恐ろしい時代です。 これをSIerに発注すると何人月の見積もりになるやらw

May 18, 2014 · nnasaki

最近気になっている技術ネタ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