SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)

「SPREAD for Windows Forms 7.0J」の新機能に迫る

グレープシティのフラグシップコンポーネントがWindows 8/Visual Studio 2012に対応

  • X ポスト
  • このエントリーをはてなブックマークに追加

データの作成

 SPREADによる画面作成を行う前に、画面に表示するデータを取得するコードを記述しましょう。今回は、SPREAD for WPFのときに作ったサンプルアプリケーションと同じものを作成してみます。そのためにまずはWPF版のサンプルと同様にModelsフォルダ、ViewModelsフォルダ、Viewsフォルダを作成し、MainPage.vbをViewsフォルダに移動します。

coneco.netを利用するための準備

 WPFでも使った、検索用APIがJSONで公開されているconeco.comを利用します。利用に際しては、利用者登録をしてAPIキーを取得しておく必要があります。サンプルコードではこの部分でコンパイルエラーがでるようにしてありますので、取得して行末のセミコロン(;)を削除して対応してください。

 APIキーは、次のような手順で取得できますので、そのAPIキーを指定してアクセスする必要があります。

  1. https://www.coneco.net/api/にアクセスして、メールアドレスとパスワードを設定
  2. 本登録用URLのお知らせメールに書かれたAPIキー取得用URLをクリック
  3. APIキー発行完了のお知らせメールにある「あなたのAPIキー」をプログラムにセット

参照設定の追加

 次に、coneco.netのAPIを使うために参照設定を追加します。

図4 参照設定の追加
図4 参照設定の追加

 ソリューションエクスプローラーでプロジェクト名を右クリックして、[参照の追加]メニューでダイアログを表示し、System.Net.HttpとSystem.Runtime.Serializationを追加します。

Modelsフォルダに配置するコード

商品検索結果の形式

 coneco.comの製品検索結果は、JSON形式で返却できます。返却されてくるJSON形式に合わせたクラス定義は、次のようになります。

リスト1 製品検索結果の定義(ResultContext.vbから抜粋)
Public Class ResultContext
    <System.Runtime.Serialization.DataContract()> _
    Public Class TResult
        <System.Runtime.Serialization.DataMember()> _
        Public Property Item As List(Of TItem)
    End Class

    <System.Runtime.Serialization.DataContract()> _
    Public Class TItem
        <System.Runtime.Serialization.DataMember()> _
        Public Property ComId As String
                  :
                 (略)
                  :
        <System.Runtime.Serialization.DataMember()> _
        Public Property Specifications As List(Of TSpecifications)
    End Class

    <System.Runtime.Serialization.DataContract()> _
    Public Class TSpecifications
        <System.Runtime.Serialization.DataMember()> _
        Public Property Id As String
        <System.Runtime.Serialization.DataMember()> _
        Public Property Title As String
        <System.Runtime.Serialization.DataMember()> _
        Public Property Spec As String
    End Class
End Class

APIの呼び出し

 商品検索APIは、次のようなURLにアクセスして行います。

http://api.coneco.net/cws/v1/SearchProducts_json?apikey=xxxx&categoryId=10120&sort=ranking

 キーワード検索を行うときは、このURLの後ろに『&freeword=キーワード』のパラメタを付与します。

 このようにして組み立てたURLを指定し、GetStringAsyncを実行してJSON形式のデータを受信します。

リスト2 製品検索結果の定義(ConecoModel.vbから抜粋)
Public Class ConecoContext
    Public Property Ranking As String
    Public Property ComId As String
    Public Property Name As String
    Public Property Manufacturer As String
    Public Property LowestPrice As String
    Public Property HighestPrice As String
    Public Property CPU As String
    Public Property Disk As String
    Public Property Memory As String
    Public Property Display As String
    Public Property ImageUrl As String
    Public Property Img As Image
End Class

Public Class ConecoModel
    Implements INotifyPropertyChanged

    Public Property Items As New List(Of ConecoContext)
            :
           (略)
            :
    Private Sub GetItemContext(ByVal result As String)
        Using Stream As New MemoryStream(System.Text.Encoding.UTF8.GetBytes(result))
            Dim serializer As New DataContractJsonSerializer(GetType(ResultContext.TResult))
            Dim jsonDataValue As ResultContext.TResult =
                CType(serializer.ReadObject(Stream), ResultContext.TResult)
            Me.Items =
                (From item In jsonDataValue.Item
                Where item.SellerCount > 0
                Order By CType(IIf(item.CategoryRanking.Length = 0,
                                    Integer.MaxValue,
                                    item.CategoryRanking), Integer)
                Select New ConecoContext With {
                             :
                          (中略)
                             :
                }).ToList
        End Using
    End Sub
            :
           (略)
            :
End Class

 このコードにより、Itemsプロパティに画面表示に必要なデータがセットできます。

次のページ
連結用クラスの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6993 2016/03/29 17:40

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング