Developer's Code

プログラム開発支援ブログ

Developer's Code

会社でこっそりツイートしよう!!

 

 

はじめに

C# CoreTweet APIを用いたWPFアプリケーションを公開(Ver.1.0)します。

 

概要

会社でもこっそりツイートしようをコンセプトにWPFのアプリケーションを作成しました。

Windowsデスクトップアプリケーション)

下記よりTweetSuite.exeをダウンロードしご利用ください。

WPFのアプリケーションですが、DLLはバイナリとして埋め込んであるため、TweetSuite.exe単体で動作します。

 

TweetSuiteのダウンロード

github.com

 

ユーザーインターフェース(兼取扱説明書)

タスクトレイ

TweetSuite.exeを実行すると、タスクトレイに格納されます。

f:id:tomomo_s:20170723042001j:plain

 右クリックメニューは、以下の通りです。

  • 表示 <説明:認証画面 or メッセージ画面が表示されます>
  • 終了 <説明:アプリケーションを終了します>

 

認証画面

タスクトレイから「表示」を実行すると、下記認証画面※が表示されます。

※認証画面が表示される条件は、以下の通り

  • 初めてログインする場合
  • ログアウトした場合
  • 設定を保存していない場合

f:id:tomomo_s:20170723042236j:plain

 

認証用のトークンは、下記ブログのトークン(4種)を用います。

replystudio.hatenadiary.jp

設定を保存する 

設定を保存するにチェックを入れて、鍵アイコン(認証)をクリックすると、設定を保存してTwitterにログインします。

 

鍵アイコン

Twitterにログインします。

 

メッセージ画面

 認証に成功すると、下記メッセージ入力画面が表示されます。

f:id:tomomo_s:20170723050211j:plain

  1. ログアウトアイコン(ボタン)
  2. ツイートする内容(メッセージ)
  3. 画像アイコン(ボタン) 
  4. 送信アイコン(ボタン)

ログアウトアイコン

ログアウトアイコンをクリックすると、ログアウトし「認証画面」へ遷移します。

 

ツイートする内容

ツイートする内容を記述します。

 

画像アイコン

ツイート時、添付する画像を選択します。(複数可能)

 

送信アイコン

ツイート内容を送信します。

※送信アイコンっぽくないのは、わざとです(笑)

 

注意事項

アプリケーションの最小化について

最小化し、元のサイズに戻す場合は、最小化のタスクバーより、右クリックで、「元のサイズに戻す」を実施してください。

f:id:tomomo_s:20170723051738j:plain

 

 

制限事項

動作環境

※現在以下の環境でのみしか動作確認しておりません。

 

最大文字数

本アプリケーションにおいて、最大文字数を入力した場合の動作確認をしていません。

Twitterには140文字以上の投稿は出来ないはず。。。

 

画像選択

ツイート画像として、選択した画像は、削除ができません。

※間違えた場合は、アプリケーションを終了し、再度アプリケーションを実施してください。

 

今後の課題

  • 最大文字数の確認を追加予定
  • 若干エラー処理の考慮ができていない部分があるため、修正予定
  • 画像選択したものを、削除できるようにする予定
  • TextBoxおよびRichTextBoxにウォーターマークを追加予定
  • ツールチップを特につけていないため、わかるように追加予定

 

 

 

CoreTweet APIを用いたアプリケーション作成 ~認証編

はじめに

C# CoreTweet APIを用いた認証までを以下に示します。

 

概要

CoreTweet APIを用いた認証について解説します。

  

アプリケーションの登録

サードパーティ製の自作アプリケーションなので、下記サイトよりアプリケーション登録をします。

apps.twitter.com

※アプリケーション登録する前に、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"コードを取得する必要があります。

  • Consumer Key (API Key)
  • Consumer Secret (API Secret)
CoreTweet API

OAuth.Authorize("Consumer Key", "Consumer Secret"); 

 

発行したトークン(2種)を利用したOAuth2.0認証

Application Managementより設定した下記2つのトークンにて、Twitterアプリケーションより、Read権限※が付与可能です。

※設定上Read and Write権限は付与出来ますが、ツイートするなど書き込みは不可です。

なお、Web ブラウザで"PIN"コードを取得する必要もなくAPIで代用可能です。

  • Consumer Key (API Key)
  • Consumer Secret (API Secret)

 

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アプリケーションは以下に配置します。

 

github.com

 

注意点

なお、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を使用しようと思ったら、iOSAndroidは、ビルド通るのに、UWPでは失敗してしまう。下記のエラーとなります。

※基本的な名前空間は、インストール時にデフォルトで追加しておいてほしいのですが…

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0234 型または名前空間の名前 'Thread' が名前空間 'System.Threading' に存在しません (アセンブリ参照があることを確認してください)。 

 

名前空間

名前空間は、以下を指定します。

using System.Threading.Thread;

 

System.Threading.Thread

ソリューションから、[ソリューション] ⇒[ソリューションのNuGetパッケージの管理]を開き、パッケージを追加します。

 

[参照]タブの検索ワードより、「System.Threading.Thread」と入力します。

参照候補が検索結果にでるので、「System.Threading.Thread」を選択します。

f:id:tomomo_s:20170621231100j:plain

選択しインストールすれば完了です!!

ヾ(*´∀`*)ノ

 

...

...

...

 

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー パッケージの復元に失敗しました。'<プロジェクト名>.UWP' のパッケージの変更をロールバックします。 0

 

小一時間悩み、やむを得ず調べた結果…

neosmart.net

 

そうですか、Windows 10 UWPでは使用不可で、iOSAndroidのみですか…

(-ω-;)ウーン

 

本題の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

 まず、下記サイトよりアカウントを作成します。

azure.microsoft.com

設定は、主に以下の流れとなります。

  •  Microsotアカウントでログイン
  • 自分の登録情報を設定(氏名、メールアドレス等)
  • 携帯電話登録(SNS認証で使用する)
  • クレジットカード登録

 これは、クレジットカードをもっていない人は、門前払いとなりますね…

 

 

ポータルサイト

Azureにログインするとポータルサイト(ダッシュボード)の画面が表示されます。

今回は、Translator Text APIを使用したいので、ダッシュボードの左上「新規」を選択します。

f:id:tomomo_s:20170618220320j:plain

 

検索で「Translator Text API」と入力すると、候補に出てくるので選択し右下の「作成」を押下します。

※Translator Speech APIも後で使おうかなとサイト見てみると、どこにも無料の文字がないんですが…有料なのかな…

f:id:tomomo_s:20170618220914j:plain

 

名前、リソースグループ、サブスクリプション名等を入力し作成すると、デプロイが開始されます。

下記は、名前「TextTransSampleDemo」として作成したデプロイ後の画面となります。

f:id:tomomo_s:20170618221425j:plain

 

デプロイが完了したら、主にAPI使用するに当たり必要な項目は以下の通りです。

  • キー
  • クイックスタート

 

 [キー]

 Translator Text APIの認証キー

キー1とキー2がありますが、主にキー1を使用すればいいと思います。

アプリケーションを作成し認証を行う場合は、本キーが必要となる。

f:id:tomomo_s:20170618224944j:plain

 

[クイックスタート]

APIのリファレンスやサンプルコードがあります。

f:id:tomomo_s:20170618225004j:plain

 

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」を選択します。

f:id:tomomo_s:20170618163023j:plain

 

選択しインストールすれば完了です!!

ヾ(*´∀`*)ノ

 

と思うじゃないですか?

 

Xamarinのマルチプラットフォームの場合、これだけだとUWP側が問題ないですが、iOSAndroidでは、さらに設定が必要です。

 

[Android]

Androidのソリューションから、「参照」から「参照の追加」を選択し、以下のように、「System.Net.Http」にチェックを入れてライブラリを追加する必要があります。

f:id:tomomo_s:20170618163610j:plain

 

[iOS]

Android同様に iOSのソリューションから、「参照」から「参照の追加」を選択し、以下のように、「System.Net.Http」にチェックを入れてライブラリを追加する必要があります。

f:id:tomomo_s:20170618163908j:plain

 

UWPの場合は、元々Microsoft.Net.Http」というくらいなので、参照が自動で入ってくれます。

 

まとめ

 HttpClientを使用するには、「System.Net.Http参照の追加」および、Microsoft.Net.Httpのインストールを行う必要があります。