SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
すまべんLite@関⻄西 #04
Xamarin 2.0 で Android 開発⼊入⾨門シリーズ #4
伊勢  シン
2013/10/08(Tue) @Fenrir Inc. ⼤大阪本社
シリーズの⽬目標
•  Android アプリ開発の、現代の勘所を押さえる
– 画⾯面作成:Fragment、レイアウトXML
– リソースの⼊入れ⽅方
– リークの原因になりやすいコンテキストの取り扱い
– その他もろもろ
•  Xamarin 2.0を使ってC#を⽣生かした開発
– Java苦⼿手なあなたも⼤大丈夫
•  最終回では他PFとのソースコード共有を⽬目指す
想定の対象者
•  これまで他のプラットフォームでそれなりに開発してて、
Androidアプリの開発をやってみたい⼈人
•  Javaに苦⼿手意識識があってAndroid開発に踏み出せ
なかった⼈人
•  本当のはじめての⼈人は、周りに聞きながら。
•  僕も Android はちゃんと理理解できているわけじゃない
ので、勉強しながらです。
–  ぼく本来は  iOS アプリエンジニアですし。
•  みんなでわかるまで話し合いながらじっくりやる、
「Lite」なシリーズを⽬目指しましょう。
ターゲットプラットフォーム
•  Xamarin 2.0
– Xamarin Studio
– Android SDK
•  Android 4.0
– 最新の環境でやってみるというのが今回の⽬目的の⼀一
つなので。
– ⾼高速エミュレーター  (HAXM) は⼊入れておきたい。
•  さもなくば実機
•  これまでのAndoridエミュレータは遅すぎる
スケジュール
•  全56回でじっくりまったりを予定
– #1 Activity/Fragmentのライフサイクル
– #2 画⾯面レイアウトとリソース管理理
– #3 画⾯面遷移・インテント
– #4  通信処理理・Twitter タイムラインビューワの開発
– #5  もっと Android らしいアプリに(Service/Alarm)
– #6 MvvmCross  を使ったコードの共有化
•  ざっくりこんな感じでしか考えてないので、
進み⽅方次第で前後する可能性があります。
Xamarin 2.0でAndroid開発⼊入⾨門 #4
Twitterタイムラインビューワの開発
async/await を使った⾮非同期処理理
前回のおさらい
•  Activity 間の遷移は Intent。
– 明⽰示的と暗黙的があります
•  Activity の中で Fragment を遷移させるのは、
FragmentManager を使う
今⽇日の⽬目標
•  Twitterタイムラインビューワをつくる
– ReactiveOAuth を使った
Twitter へのアクセス
– ListView のつかいかた
•  ひな形ダウンロードしてください
– http://sdrv.ms/GEezUe
どういう実装にするか
•  Reloadボタンを押したとき、
– 認証されていなければ認証画⾯面に移動して認証する。
– 認証画⾯面はWebViewでログイン画⾯面を表⽰示、
•  ログインすると、PINが表⽰示される
– 表⽰示されたPINを⼊入⼒力力して、認証をとる
– 認証されていれば、タイムラインをロードして表⽰示する。
ひな形の確認
•  MainActivity, MainFragment
MainContainer.axml Main.axml
–  前回、Fragment で遷移させたの構造
–  Main.axml の中は  ListView があります
ListView は⼀一覧を表⽰示する要素です
•  Tweet.axml
–  リストに表⽰示する各項⽬目のレイアウト
•  AuthenticateFragment
Authenticate.axml
–  認証画⾯面の Fragment
–  WebView (ブラウザ) をおいています
•  Configulation
–  設定値を書き込むクラスです
•  AsyncOAuth.Android
–  AsyncOAuth を
Xamarin.Android Libraryにもってきたもの。
※必要な参照設定もすでにいれてあります。
MainFragment
•  3つのインナークラスが定義されています。
– Tweet, User
•  Twitter のツイートを表すオブジェクト。
•  JsonDataContractSerializer で直接パースできるように
DataContract 属性をつけてあります。
– TweetListAdapter : BaseAdapter<Tweet>
•  Adapter は、各種リストを  ListView に表⽰示するための中
間実装。
•  ListView は Adapter から⽣生成された View を再利利⽤用し
ている。
•  OnActivityCreated で  ListView に  
TweetListAdapter をセットしています。
Adapter の要:GetView
•  convertView に再利利⽤用できるビューが⼊入っている
なければ Layout から作り出す。
public override View GetView (int position, View convertView, "
ViewGroup parent)"
{"
    // 既存のViewがあるかどうか確認する"
    View view = convertView;"
    if (view == null) {"
        view = this.activity.LayoutInflater.Inflate "
(Resource.Layout.Tweet, null);"
    }"
    var userTextView = view.FindViewById<TextView> "
(Resource.Id.UserTextView);"
    var messageTextView = view.FindViewById<TextView> "
(Resource.Id.MessageTextView);"
"
    userTextView.Text = tweets [position].User.ScreenName;"
    messageTextView.Text = tweets [position].Message;"
"
    return view;"
}
Configulation クラス:設定値
•  Consumer Key/Consumer Secret を⼊入れましょう
•  設定値の保存には  SharedPreference を使います。
–  読み込み
–  書き込み
public static string ConsumerKey = “”;"
public static string ConsumerSecret = “”;
var prefs = PreferenceManager.GetDefaultSharedPreferences "
(context);"
var val = prefs.GetString ("AccessTokenKey", string.Empty);
var prefs = PreferenceManager.GetDefaultSharedPreferences(context)
;"
var editor = prefs.Edit ();"
editor.PutString ("AccessTokenKey", accessToken);"
editor.Commit ();
AsyncOAuthの初期化処理理
•  ハッシュ計算関数を登録する必要があります。
•  MainActivity の  OnCreate に書いてしまいま
しょう。
protected override void OnCreate (Bundle bundle)"
        {"
    base.OnCreate (bundle);"
"
    // initialize computehash function"
    OAuthUtility.ComputeHash = (key, buffer) => { "
using (var hmac = new HMACSHA1(key)) { "
return hmac.ComputeHash (buffer); "
} "
};
認証画⾯面への遷移を作る
•  MainFragment の Reload押したときに、認証されていなければ
認証画⾯面(AuthenticateFragment)へ遷移
–  OnCreateView の  button.Click のイベントハンドラを書き⾜足します。
button.Click += async (sender, e) => {"
    var token = Configulation.GetAccessTokenKey(this.Activity);"
    if (token == null) {"
        var transaction = FragmentManager.BeginTransaction();"
        transaction.Replace(Resource.Id.fragment_container, "
new AuthenticateFragment());"
        transaction.AddToBackStack(null);"
     transaction.Commit();"
    }"
};
認証ページの表⽰示処理理
•  認証画⾯面はWebViewでログイン画⾯面を表⽰示
•  認証に使⽤用するフィールド変数を定義します
private OAuthAuthorizer authorizer ;"
private RequestToken requestToken;
認証ページの表⽰示処理理
•  AuthenticateFragment の  OnStart に
RequestToken をとり、ページを表⽰示する処理理を書きます。
public override async void OnStart ()"
{"
    base.OnStart ();"
"
    // create authorizer"
    authorizer = new OAuthAuthorizer(Configulation.ConsumerKey, "
Configulation.ConsumerSecret);"
"
    // get request token"
    var tokenResponse = await authorizer.GetRequestToken"
("https://api.twitter.com/oauth/request_token");"
    requestToken = tokenResponse.Token;"
"
    var pinRequestUrl = authorizer.BuildAuthorizeUrl"
("https://api.twitter.com/oauth/authorize", requestToken);"
"
    webView.LoadUrl (pinRequestUrl);"
}
認証ページの表⽰示処理理
•  AuthenticateFragment の  OnStart に
RequestToken をとり、ページを表⽰示する処理理を書きます。
public override async void OnStart ()"
{"
    base.OnStart ();"
"
    // create authorizer"
    authorizer = new OAuthAuthorizer(Configulation.ConsumerKey, "
Configulation.ConsumerSecret);"
"
    // get request token"
    var tokenResponse = await authorizer.GetRequestToken"
("https://api.twitter.com/oauth/request_token");"
    requestToken = tokenResponse.Token;"
"
    var pinRequestUrl = authorizer.BuildAuthorizeUrl"
("https://api.twitter.com/oauth/authorize", requestToken);"
"
    webView.LoadUrl (pinRequestUrl);"
}
async にする
認証クラスを作る
リクエストトークンを取得
認証ページへのURLを
作る
WebViewで表⽰示
そもそも  async/await とは
•  C# に新しく⼊入った⾮非同期処理理を便便利利に書ける仕様
•  対応している⾮非同期処理理を await つきで呼び出すと、
その⾮非同期処理理を実⾏行行した後に処理理が続⾏行行する
–  await を書いたところでコンパイラがメソッドを分割したりして
いい感じにしてくれている。
•  await を使うメソッドは、
async キーワードをつける必要がある。
認証処理理
•  PINコードを⼊入⼒力力して、ボタンを押したら、
AccessToken を取得し、設定値に保存する。
button.Click += async (sender, e) => {"
    var pinCode = pinEditText.Text;"
    var accessTokenResponse = await authorizer.GetAccessToken("
"https://api.twitter.com/oauth/access_token","
                                         requestToken, pinCode);"
"
    // save access token."
    var accessToken = accessTokenResponse.Token;"
    Console.WriteLine("Key:" + accessToken.Key);"
    Console.WriteLine("Secret:" + accessToken.Secret);"
    Configulation.SetAccessTokenKey(Activity, accessToken.Key);"
    Configulation.SetAccessTokenSecret(Activity, accessToken.Secret);"
                "
    Toast.MakeText(Activity, Resource.String.authenticated, "
ToastLength.Short).Show();"
"
    FragmentManager.PopBackStack();"
};
認証処理理
•  PINコードを⼊入⼒力力して、ボタンを押したら、
AccessToken を取得し、設定値に保存する。
button.Click += async (sender, e) => {"
    var pinCode = pinEditText.Text;"
    var accessTokenResponse = await authorizer.GetAccessToken("
"https://api.twitter.com/oauth/access_token","
                                         requestToken, pinCode);"
"
    // save access token."
    var accessToken = accessTokenResponse.Token;"
    Console.WriteLine("Key:" + accessToken.Key);"
    Console.WriteLine("Secret:" + accessToken.Secret);"
    Configulation.SetAccessTokenKey(Activity, accessToken.Key);"
    Configulation.SetAccessTokenSecret(Activity, accessToken.Secret);"
                "
    Toast.MakeText(Activity, Resource.String.authenticated, "
ToastLength.Short).Show();"
"
    FragmentManager.PopBackStack();"
};
async にする
テキスト⼊入⼒力力の値をとる
PINコードを使って
AccessToken取得
AccessToken を保存
元の画⾯面に戻る
ここまでで認証がとれるようになったはず
•  試してみましょう。
タイムラインを取得する
•  Reloadボタンを押したとき、
– 認証されていれば、タイムラインをロードして表⽰示する。
button.Click += async (sender, e) => {"
    var token = Configulation.GetAccessTokenKey(this.Activity);"
    if (token == null) {"
        // さっき書いた、認証画⾯面に遷移する処理理"
    }"
    else {"
        var accessToken = new AccessToken("
Configulation.GetAccessTokenKey(Activity),"
             Configulation.GetAccessTokenSecret(Activity));"
        var client = OAuthUtility.CreateOAuthClient("
Configulation.ConsumerKey, Configulation.ConsumerSecret, "
                                                     accessToken);"
        var json = await client.GetStringAsync("
"http://api.twitter.com/1.1/statuses/home_timeline.json"); "
        Console.WriteLine(json);"
    }"
};
タイムラインを取得する
•  Reloadボタンを押したとき、
– 認証されていれば、タイムラインをロードして表⽰示する。
button.Click += async (sender, e) => {"
    var token = Configulation.GetAccessTokenKey(this.Activity);"
    if (token == null) {"
        // さっき書いた、認証画⾯面に遷移する処理理"
    }"
    else {"
        var accessToken = new AccessToken("
Configulation.GetAccessTokenKey(Activity),"
             Configulation.GetAccessTokenSecret(Activity));"
        var client = OAuthUtility.CreateOAuthClient("
Configulation.ConsumerKey, Configulation.ConsumerSecret, "
                                                     accessToken);"
        var json = await client.GetStringAsync("
"http://api.twitter.com/1.1/statuses/home_timeline.json"); "
        Console.WriteLine(json);"
    }"
};
設定からToken作成
Client作成
⽂文字列列で取得して
いったんコンソールに書いてみる
タイムラインの取得 – 確認
•  この状態で実⾏行行すると、アプリケーション出⼒力力パッ
ドに出ている
しあげ: パースして表⽰示する
•  結果取得を String から Stream に変更更し、
DataContractSerializer でパースする
var client = OAuthUtility.CreateOAuthClient("
Configulation.ConsumerKey, Configulation.ConsumerSecret, "
accessToken);"
"
var stream = await client.GetStreamAsync("
"http://api.twitter.com/1.1/statuses/home_timeline.json"); "
var serializer = new DataContractJsonSerializer(typeof(List<Tweet>));"
var result = serializer.ReadObject(stream) as List<Tweet>;"
"
this.tweets.Clear();"
this.tweets.AddRange(result);"
"
(listView.Adapter as TweetListAdapter).NotifyDataSetChanged();
しあげ: パースして表⽰示する
•  結果取得を String から Stream に変更更し、
DataContractSerializer でパースする
var client = OAuthUtility.CreateOAuthClient("
Configulation.ConsumerKey, Configulation.ConsumerSecret, "
accessToken);"
"
var stream = await client.GetStreamAsync("
"http://api.twitter.com/1.1/statuses/home_timeline.json"); "
var serializer = new DataContractJsonSerializer(typeof(List<Tweet>));"
var result = serializer.ReadObject(stream) as List<Tweet>;"
"
this.tweets.Clear();"
this.tweets.AddRange(result);"
"
(listView.Adapter as TweetListAdapter).NotifyDataSetChanged();
結果をStreamでとる
DataContractSerializer で
パースする
Listの内容を⼊入れかえ
Adapterの更更新通知
完成です!
まとめ
•  Xamarin なら既存の C# のライブラリも使える
– 有料料版にすれば、
それぞれのプラットフォームのネイティブライブラリも使え
る
•  async/await を使えば、
Android でも⾮非同期処理理が簡単
(参考) 既存のC#ライブラリを持ってくる
•  ソースが公開されていて、プラットフォーム⾮非依存で
書かれているものならXamarinにもってこれる
–  PCLの範囲くらいだったらだいたいいける
•  ⼿手順
–  Android Library Project を追加
–  既存ライブラリのソースをプロジェクトに追加
–  ビルドして⾜足りてない参照をがんばって⾜足していく

Weitere ähnliche Inhalte

Ähnlich wie すまべんLite@関西#4

US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development Tomoaki Imai
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方Yoshito Tabuchi
 
10分で分かるxamarin
10分で分かるxamarin10分で分かるxamarin
10分で分かるxamarinYoshito Tabuchi
 
Xamarin.Android ハンズオン
Xamarin.Android ハンズオンXamarin.Android ハンズオン
Xamarin.Android ハンズオンm ishizaki
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Yoshito Tabuchi
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Yoshito Tabuchi
 
JXUGC 13 東京 はじめに
JXUGC 13 東京 はじめにJXUGC 13 東京 はじめに
JXUGC 13 東京 はじめにYoshito Tabuchi
 
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCrossCross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCrossShin Ise
 
Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発m ishizaki
 
Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部m ishizaki
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントMasuda Tomoaki
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法Yoshito Tabuchi
 
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話Takuya Kikuchi
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptxhkharu0803
 
自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!とさ はるき
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法Yoshito Tabuchi
 
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~de:code 2017
 
Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!m ishizaki
 
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08孝文 田村
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話Yoshito Tabuchi
 

Ähnlich wie すまべんLite@関西#4 (20)

US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方
 
10分で分かるxamarin
10分で分かるxamarin10分で分かるxamarin
10分で分かるxamarin
 
Xamarin.Android ハンズオン
Xamarin.Android ハンズオンXamarin.Android ハンズオン
Xamarin.Android ハンズオン
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
 
JXUGC 13 東京 はじめに
JXUGC 13 東京 はじめにJXUGC 13 東京 はじめに
JXUGC 13 東京 はじめに
 
Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCrossCross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
 
Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発Xamarin で始めるクロスプラットフォーム開発
Xamarin で始めるクロスプラットフォーム開発
 
Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部Xamarin ハンズオン Android の部
Xamarin ハンズオン Android の部
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
 
自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!
 
Xamarin概要と活用方法
Xamarin概要と活用方法Xamarin概要と活用方法
Xamarin概要と活用方法
 
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
[MW08] de:code イベントアプリの作り方 ~ Xamarin.Forms で開発しています ~
 
Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!
 
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08
 
ちょっとエモい話
ちょっとエモい話ちょっとエモい話
ちょっとエモい話
 

Mehr von Shin Ise

いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5Shin Ise
 
すまべんLite@関西#2
すまべんLite@関西#2すまべんLite@関西#2
すまべんLite@関西#2Shin Ise
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10Shin Ise
 
音声APIを使ってみる
音声APIを使ってみる音声APIを使ってみる
音声APIを使ってみるShin Ise
 
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low EnergyデバイスCoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low EnergyデバイスShin Ise
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」Shin Ise
 
GridViewのつかいかた
GridViewのつかいかたGridViewのつかいかた
GridViewのつかいかたShin Ise
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2Shin Ise
 
MediaLibrary で あそぼう
MediaLibrary で あそぼうMediaLibrary で あそぼう
MediaLibrary で あそぼうShin Ise
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive ExtensionsShin Ise
 
本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone ToolkitShin Ise
 
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイントSocketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイントShin Ise
 
iOSのVoiceOver対応開発
iOSのVoiceOver対応開発iOSのVoiceOver対応開発
iOSのVoiceOver対応開発Shin Ise
 
Galaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバーGalaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバーShin Ise
 
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作る
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作るハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作る
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作るShin Ise
 
Windows Phone 7 に向けてクラウドを準備
Windows Phone 7 に向けてクラウドを準備Windows Phone 7 に向けてクラウドを準備
Windows Phone 7 に向けてクラウドを準備Shin Ise
 
Windows Phone 7 + iTunes
Windows Phone 7 + iTunesWindows Phone 7 + iTunes
Windows Phone 7 + iTunesShin Ise
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchShin Ise
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!Shin Ise
 
Windows Mobile用パッケージマネージャ Giraffe の紹介
Windows Mobile用パッケージマネージャ Giraffe の紹介Windows Mobile用パッケージマネージャ Giraffe の紹介
Windows Mobile用パッケージマネージャ Giraffe の紹介Shin Ise
 

Mehr von Shin Ise (20)

いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5
 
すまべんLite@関西#2
すまべんLite@関西#2すまべんLite@関西#2
すまべんLite@関西#2
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10
 
音声APIを使ってみる
音声APIを使ってみる音声APIを使ってみる
音声APIを使ってみる
 
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low EnergyデバイスCoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low Energyデバイス
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
 
GridViewのつかいかた
GridViewのつかいかたGridViewのつかいかた
GridViewのつかいかた
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2
 
MediaLibrary で あそぼう
MediaLibrary で あそぼうMediaLibrary で あそぼう
MediaLibrary で あそぼう
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit
 
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイントSocketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
 
iOSのVoiceOver対応開発
iOSのVoiceOver対応開発iOSのVoiceOver対応開発
iOSのVoiceOver対応開発
 
Galaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバーGalaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバー
 
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作る
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作るハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作る
ハブインテグレーションでWindows Phone 7の世界に溶け込むアプリを作る
 
Windows Phone 7 に向けてクラウドを準備
Windows Phone 7 に向けてクラウドを準備Windows Phone 7 に向けてクラウドを準備
Windows Phone 7 に向けてクラウドを準備
 
Windows Phone 7 + iTunes
Windows Phone 7 + iTunesWindows Phone 7 + iTunes
Windows Phone 7 + iTunes
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!
 
Windows Mobile用パッケージマネージャ Giraffe の紹介
Windows Mobile用パッケージマネージャ Giraffe の紹介Windows Mobile用パッケージマネージャ Giraffe の紹介
Windows Mobile用パッケージマネージャ Giraffe の紹介
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

すまべんLite@関西#4