会社でこっそりツイートしよう!!
はじめに
C# CoreTweet APIを用いたWPFアプリケーションを公開(Ver.1.0)します。
概要
会社でもこっそりツイートしようをコンセプトにWPFのアプリケーションを作成しました。
(Windowsデスクトップアプリケーション)
下記よりTweetSuite.exeをダウンロードしご利用ください。
※WPFのアプリケーションですが、DLLはバイナリとして埋め込んであるため、TweetSuite.exe単体で動作します。
TweetSuiteのダウンロード
ユーザーインターフェース(兼取扱説明書)
タスクトレイ
TweetSuite.exeを実行すると、タスクトレイに格納されます。
右クリックメニューは、以下の通りです。
- 表示 <説明:認証画面 or メッセージ画面が表示されます>
- 終了 <説明:アプリケーションを終了します>
認証画面
タスクトレイから「表示」を実行すると、下記認証画面※が表示されます。
※認証画面が表示される条件は、以下の通り
- 初めてログインする場合
- ログアウトした場合
- 設定を保存していない場合
認証用のトークンは、下記ブログのトークン(4種)を用います。
設定を保存する
設定を保存するにチェックを入れて、鍵アイコン(認証)をクリックすると、設定を保存してTwitterにログインします。
鍵アイコン
Twitterにログインします。
メッセージ画面
認証に成功すると、下記メッセージ入力画面が表示されます。
- ログアウトアイコン(ボタン)
- ツイートする内容(メッセージ)
- 画像アイコン(ボタン)
- 送信アイコン(ボタン)
ログアウトアイコン
ログアウトアイコンをクリックすると、ログアウトし「認証画面」へ遷移します。
ツイートする内容
ツイートする内容を記述します。
画像アイコン
ツイート時、添付する画像を選択します。(複数可能)
送信アイコン
ツイート内容を送信します。
※送信アイコンっぽくないのは、わざとです(笑)
注意事項
アプリケーションの最小化について
最小化し、元のサイズに戻す場合は、最小化のタスクバーより、右クリックで、「元のサイズに戻す」を実施してください。
制限事項
動作環境
※現在以下の環境でのみしか動作確認しておりません。
- Windows 10 Creaters Update x64
最大文字数
本アプリケーションにおいて、最大文字数を入力した場合の動作確認をしていません。
※Twitterには140文字以上の投稿は出来ないはず。。。
画像選択
ツイート画像として、選択した画像は、削除ができません。
※間違えた場合は、アプリケーションを終了し、再度アプリケーションを実施してください。
今後の課題
- 最大文字数の確認を追加予定
- 若干エラー処理の考慮ができていない部分があるため、修正予定
- 画像選択したものを、削除できるようにする予定
- TextBoxおよびRichTextBoxにウォーターマークを追加予定
- ツールチップを特につけていないため、わかるように追加予定
CoreTweet APIを用いたアプリケーション作成 ~認証編
はじめに
C# CoreTweet APIを用いた認証までを以下に示します。
概要
CoreTweet APIを用いた認証について解説します。
アプリケーションの登録
サードパーティ製の自作アプリケーションなので、下記サイトよりアプリケーション登録をします。
※アプリケーション登録する前に、Twitterにログインして「電話番号」を登録する必要がありますのでご注意。
Create an application画面にて下記が必須になります。
- Name
- Description
- Website
Name:アプリケーション名(※特に作成するexe名と一緒にする必要はありません)
Description:アプリケーションの説明
Website:自分のTwitterやブログのURLなど
認証
CoreTweetを用いてTwitter認証を行う方法は、下記3通り。
- 発行したトークン(4種)を利用したTokens認証(Tokens.Create)
- 発行したトークン(2種)を利用したOAuth認証(OAuth.Authorize)
- 発行したトークン(2種)を利用したOAuth2.0認証(OAuth2.GetToken)
発行したトークン(4種)を利用したTokens認証
Application Managementより設定した下記4つのトークンにて、Twitterアプリケーションより、Read and Write権限が付与可能です。
CoreTweet API
OAuth.Authorize("Consumer Key", "Consumer Secret", "Access Token", "Access Token Secret");
発行したトークン(2種)を利用したOAuth認証
Application Managementより設定した下記2つのトークンにて、Twitterアプリケーションより、Read and Write権限が付与可能です。
ただし、この方法の場合、OAuthSession.AuthorizeUriを呼び出し、Web ブラウザで"PIN"コードを取得する必要があります。
CoreTweet API
OAuth.Authorize("Consumer Key", "Consumer Secret");
発行したトークン(2種)を利用したOAuth2.0認証
Application Managementより設定した下記2つのトークンにて、Twitterアプリケーションより、Read権限※が付与可能です。
※設定上Read and Write権限は付与出来ますが、ツイートするなど書き込みは不可です。
なお、Web ブラウザで"PIN"コードを取得する必要もなくAPIで代用可能です。
CoreTweet API
OAuth2.GetToken("Consumer Key", "Consumer Secret");
おわりに
現在、シンプルツイートのアプリケーションをWPFで作成中。
完成したら、公開しようと思います。コンセプトは、”会社でこっそりツイート”
Azure Translator Text API ~実装編
はじめに
AzureのTranslator Text APIを使用した実装(コーディング)までを以下に示します。
概要
Microsoft Translator テキスト API のサンプルを流用し、Xamarin.Formsを用いた実装にします。
実装
基本は、Azure - [クイックスタート]のサンプルコードを流用します。
Xamarin.Forms向けにはサンプルコードがないため、Xamarinから起動するように変更します。
主な変更点は以下の通りです。
- WebResponseクラス
- HttpWebRequestクラス
- Pickerクラス
WebResponseクラス
WebResponseクラスの使用は、async / awaitの非同期処理が必要なため、一部変更
WebRequest.GetResponseAsync メソッド (System.Net)
HttpWebRequestクラス
HttpWebRequestクラスの使用は、async / awaitの非同期処理が必要なため、一部変更
Pickerクラス
ComboBoxは、Xamarin.Formsでは使用不可のため、Pickerで代用
GitHub
Azure Translator Text API for Xamarinアプリケーションは以下に配置します。
注意点
なお、MainPage.xaml.csの下記のAzureの認証キーは、ご自身でデプロイしているAzure認証キーを使用する必要があります。
private const string TEXT_TRANSLATION_API_SUBSCRIPTION_KEY = "ENTER_YOUR_CLIENT_SECRET";
async / await 非同期処理を使おう
はじめに
本日は、async & awaitを使用した非同期について以下に示します。
※ Xamarin.Forms
概要
最近の提供APIは、非同期処理必須で扱うことが必須で困ります(笑)
そんな訳で、今回はasync & awaitについて簡単に説明していきます。
非同期処理が主流になってきているのは、タッチ操作が当たり前になってきたからでしょうか。タッチ操作にて、待ち時間が発生すると体感上ストレスを感じます。だ・か・らこそ、同期ではなく、非同期処理なのでしょうね。
主な非同期処理
非同期処理において、Web アクセスやファイル処理に関わるAPIを使用するものであれば、ほぼ十中八九非同期概念が必須です。
async / await
async awaitの概念は、奥が深いので、他のブログやドキュメントを参考にした方がいいと思います。
簡単に非同期処理を書くための方法としては、以下の2点のどちらかを使用することで可能です。
- 関数定義によるasync宣言
- 関数内にてラムダ式によるasync宣言
関数定義によるasync宣言
関数定義によるasync宣言のパターン以下
void型(戻り値なし)のasync / await
private async void AscyncMetohd()
{await ...
}
Task型のasync / await
※Task型もreturnで戻り値を指定しなくてよい
private async Task AscyncMetohd()
{
await ...
}
Task<T>型のasync / await
private async Task<int> AscyncMetohd()
{int nCount = 5;
await ...return nCount;
}
関数内にてラムダ式によるasync宣言
関数内にてラムダ式によるasync宣言のパターン以下
筆者は、ほぼこの形式で書きます(笑)
関数には、async宣言を入れずに、関数内にて、Taskによるラムダ式(=>)による書き方で非同期を実装します。
void AscyncMetohd()
{
var task = Task.Run(async () =>{
await ...
});}
余談
async / awaitの知識だけではなく、非同期を扱うならばTaskの概念も必要になると思います。
XamarinでSystem.Threading.Threadを利用!!できません ~UWP編
はじめに
Xamari.Formsで、System.Threading.Threadを使用する方法を以下に示します。
※VSのバージョンによって変わるかもしれませんが、筆者はVisual Studio 2017 を使用
概要
System.Threading.Threadを使用しようと思ったら、iOSとAndroidは、ビルド通るのに、UWPでは失敗してしまう。下記のエラーとなります。
※基本的な名前空間は、インストール時にデフォルトで追加しておいてほしいのですが…
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0234 型または名前空間の名前 'Thread' が名前空間 'System.Threading' に存在しません (アセンブリ参照があることを確認してください)。
名前空間
名前空間は、以下を指定します。
using System.Threading.Thread;
System.Threading.Thread
ソリューションから、[ソリューション] ⇒[ソリューションのNuGetパッケージの管理]を開き、パッケージを追加します。
[参照]タブの検索ワードより、「System.Threading.Thread」と入力します。
参照候補が検索結果にでるので、「System.Threading.Thread」を選択します。
選択しインストールすれば完了です!!
ヾ(*´∀`*)ノ
...
...
...
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー パッケージの復元に失敗しました。'<プロジェクト名>.UWP' のパッケージの変更をロールバックします。 0
小一時間悩み、やむを得ず調べた結果…
そうですか、Windows 10 UWPでは使用不可で、iOSとAndroidのみですか…
(-ω-;)ウーン
本題のAzure Translator Textのサンプル作成したいのに、変なところで時間を取られてしまう…
今日は、ここまで!!( ´Д`)ノ~バイバイ
Azure Translator Text API ~デプロイ編
はじめに
AzureのTranslator Text APIを使用するためのAzure登録手順までを以下に示します。
概要
Microsoft Translator テキスト API は、クラウドベースの自動翻訳(機械翻訳) サービスで、世界の GDP の 95% 以上に対応する多数の言語をサポートしています。Translator を利用して、多言語のサポートが必要なアプリケーション、Web サイト、ツールなどのさまざまなソリューションを構築できます。
Translator API - Microsoft Translator
1 日当たり数語から数十億語まで対応できるスケーラビリティ
200 万字までの少量であれば無料、大量の翻訳および企業のお客様には割引あり
Microsoft やパートナーのソリューションに統合されたクラウド サービスにより市場投入までの期間を短縮可能
Azureのサービスは課金制が多く、会社で扱う分にはいいけれども、個人だとちょっと…躊躇しますよね。
200万文字までの少量であれば無料!!ということで、登録しましたAzureアカウント。
※MSDNのアカウントは使わず、あえて個人のアカウントで登録しました(笑)
Microsoft Azure
まず、下記サイトよりアカウントを作成します。
設定は、主に以下の流れとなります。
- Microsotアカウントでログイン
- 自分の登録情報を設定(氏名、メールアドレス等)
- 携帯電話登録(SNS認証で使用する)
- クレジットカード登録
これは、クレジットカードをもっていない人は、門前払いとなりますね…
ポータルサイト
Azureにログインするとポータルサイト(ダッシュボード)の画面が表示されます。
今回は、Translator Text APIを使用したいので、ダッシュボードの左上「新規」を選択します。
検索で「Translator Text API」と入力すると、候補に出てくるので選択し右下の「作成」を押下します。
※Translator Speech APIも後で使おうかなとサイト見てみると、どこにも無料の文字がないんですが…有料なのかな…
名前、リソースグループ、サブスクリプション名等を入力し作成すると、デプロイが開始されます。
下記は、名前「TextTransSampleDemo」として作成したデプロイ後の画面となります。
デプロイが完了したら、主にAPI使用するに当たり必要な項目は以下の通りです。
- キー
- クイックスタート
[キー]
Translator Text APIの認証キー
キー1とキー2がありますが、主にキー1を使用すればいいと思います。
アプリケーションを作成し認証を行う場合は、本キーが必要となる。
[クイックスタート]
APIのリファレンスやサンプルコードがあります。
AzureのTranslator Text APIを使用するまでは、以上の手順となります。
次回は実際にプログラム上からコールしてみようと思います。
XamarinでHttpClientを利用する方法について
はじめに
Xamari.Formsで、HttpClientフレームワークを使用する方法を以下に示します。
※VSのバージョンによって変わるかもしれませんが、筆者はVisual Studio 2017 を使用
概要
HttpClient APIを使用しようと思ったら、インテリセンスに名前空間が出て来ない…
使用出来ないならば、追加しよう(笑)
ということで、今回は、HttpClient APIを追加する手順となります。
名前空間
名前空間は、以下を指定し使用しますが、HttpClient はそのまま使用出来ません。
using System.Net.Http;
Microsoft.Net.Http
ソリューションから、[ソリューション] ⇒[ソリューションのNuGetパッケージの管理]を開き、パッケージを追加します。
[参照]タブの検索ワードより、「HttpClient」と入力します。
参照候補が検索結果にでるので、「Microsoft.Net.Http」を選択します。
選択しインストールすれば完了です!!
ヾ(*´∀`*)ノ
…
…
と思うじゃないですか?
Xamarinのマルチプラットフォームの場合、これだけだとUWP側が問題ないですが、iOSとAndroidでは、さらに設定が必要です。
[Android]
Androidのソリューションから、「参照」から「参照の追加」を選択し、以下のように、「System.Net.Http」にチェックを入れてライブラリを追加する必要があります。
[iOS]
Android同様に iOSのソリューションから、「参照」から「参照の追加」を選択し、以下のように、「System.Net.Http」にチェックを入れてライブラリを追加する必要があります。
UWPの場合は、元々「Microsoft.Net.Http」というくらいなので、参照が自動で入ってくれます。
まとめ
HttpClientを使用するには、「System.Net.Http参照の追加」および、Microsoft.Net.Httpのインストールを行う必要があります。