くうと徒然なるままに

ゆるふわ を志向している なごやかです。

Visual Studio ユーザーのための Android Studio 設定・プラグイン。人権を得ましょう!

序章

Android Studio は非常に使いやすい IDE です。しかし、普段 Visual Studio をいじっている自分からすると少し足りない部分があります。ということで、そこを改善した生きたいと思います。

Plugin

Kotlin Plugin

Kotlin は Java と比較して人権があります。ということで Android Studio 用のプラグインを入れていきます。

f:id:kuxumarin:20170908184142p:plain

Code Grance

Visual Studio 2015 から導入されたコードのプレビューを見ながら スクロールできるあれです。

f:id:kuxumarin:20170908185359p:plain

f:id:kuxumarin:20170908184544p:plain

設定

自動 import したい

Visual Studio でも最新版なら using の整理をしてくれます。それを Android Studio でも。

https://i.imgur.com/VRbGZSy.png

タブでインデント

インデントをタブで行う事は賛否両論あります。しかし、どちらかといわずとも好きです。

https://i.imgur.com/AGk1i9i.png

マウスを乗せるとクイックドキュメントが表示されるように

https://i.imgur.com/XPxXzJi.png

未保存のファイルにアスタリスクをつける

https://i.imgur.com/4XMQnXr.png

LogCat の画面を見やすくする

https://i.imgur.com/3YJJskU.png

入力補完でメソッドに必要な引数情報をすぐに表示する

https://i.imgur.com/x7lOtoY.png

入力補完するときに、大文字・小文字の区別をなくす

https://i.imgur.com/ZIFV5cI.png

空白スペースが見えるようにする

https://i.imgur.com/0YfLg11.png

第三回学生LTで 学生はIT系勉強会に参加するといいよーという LTしてきました。

学生LTとは、東京圏の学生があつまりLTをするイベントです。現在はおおざっぱに50人規模です。焼きそばメロンパンくんとこうへいさんが主宰をしていて、自分はそこを手伝っている感じです。

イベントページ

student-lt.connpass.com

ノージャンルな学生対象な学生主催のL大会を定期的に開催しているのはこれぐらいかなと思ってます。

一応、自分は裏方として準備はしていたのですが、当日は用事がかぶってしまい、あまり参加できませんでした。。。

学生がIT勉強会に参加するといい理由

スライドに書いてありますが、、、

  • 最新な技術を知れる
  • 就職すると幸せになれる会社・不幸になれる会社情報を手に入れれる
  • 学生ってだけでちやほやされる

重要なのは、IT業界で就職して幸せになれそうな会社と不幸せになりそうな会社をなんとなくわかれるところです。 勉強会に参加した社会人がTwitterで「仕事つらい」「月曜日だ、会社行きたくない」等つぶやいているのですが、その情報を得ることができるのは非常に有利な点かと。 あと、技術力の強いひとが集まってる会社を見つけれる。

まぁ、勉強会とか言っても意識高い系のは興味ないのでよくわからないですが。。。

資料

1drv.ms

Azure Functions を VSTS で CI/CD する, Build and Deploy

Azure Functions な開発をしていて、 VSTS で CI/CD なことできないかなーとか思ってて試したら意外に簡単にできたので、シェアします。

VSTS で Build タスクを作る

asp.net core (.net framework) なビルド定義を選択します。 VSTSGithub などにおいてある Azure Functions の含まれている .sln を選択します。

f:id:kuxumarin:20170830235847p:plain

Azure Functions へデプロイする

Azure Functions は Azure App Services に含まれているものなので、 デプロイするときは、 App Service deploy を選択すればおkです。

Azure subscription や App Service を良さげに選択してください。

重要なのは、 Package or Folder のところを以下の文字列にセットしてください。

$(build.artifactstagingdirectory)/**/*.zip

参考になった Web Site

blogs.msdn.microsoft.com

TwiCasDotNet 0.4.2 をリリースしました。 破壊的な変更が多々含まれます。

ツイキャスAPIを使うときに役立ちそうなライブラリの TwiCasDotNet の Ver 0.4.2 をリリースしました。

かなり破壊的な変更を含んでいます。

nuget ページ

www.nuget.org

主な機能

  • 2つの認証形態に対応した 認証用URL生成
  • サーバーレスな認証をするときのコールバック解析
  • 主なAPIに対するリクエスト・レスポンスの送信・解析

ソースコード

以下のリポジトリで公開しています。

github.com

内容

ツイキャスへ現在インターンシップでいっていて、インターン期間中に C# から ツイキャスAPIをたたく機会があったのですが、その時に書いたコードをライブラリとして公開していいか聞いたら大丈夫っぽい返事が返ってきていたので、公開します。

最後に

プルリクエストや issue 大歓迎です。

Xamarin.Android で URLのクエリパラメーターの値を取得する

Android と同じように簡単に取得できました。

コード

var URL = "https://yahoo.co.jp?key=kuxu";
var queryKey = "key";
var queryValue = Android.Net.Uri.Parse(URL).GetQueryParameter(queryKey);
Toast.MakeText(this, $"{URL} のクエリは {queryValue}", ToastLength.Long).Show();

実行例

f:id:kuxumarin:20170829230049j:plain

Android-Kotlin で ユーザーに画像を一枚選択させてその画像の場所を取得したい

はじまり

Android のアプリを作成していて、 ユーザーに画像を一枚選択してもらい、その画像に対してあれこれしたい。みたいな時があるかと思います。そんなときのための記事です。

プログラムの流れの解説

  1. 開きたい画像を選択させる Intent を飛ばす
  2. ユーザーは開きたい画像を選択する
  3. 選択され、 アプリに返ってきた Intent から必要な情報の取り出し・変換をする

コード

MainActivity.kt

UploadImage.setOnClickListener {
    val intent: Intent = Intent(Intent.ACTION_GET_CONTENT).apply {
        type = "image/*"
        addCategory(Intent.CATEGORY_OPENABLE)
    }
    startActivityForResult(intent, 6542)
    Toast.makeText(this, "Open Garally", Toast.LENGTH_LONG).show()
}

---

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == 6542) {
        if (resultCode != Activity.RESULT_OK) {
            return
        }
        val imageData = data?.data ?: return
        val imageURL: String =
                if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
                    val docID = DocumentsContract.getDocumentId(imageData)
                    val strSplittedDocId = docID.split(":")
                    val strId = strSplittedDocId[strSplittedDocId.size - 1]
                    val cursor = contentResolver.query(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            arrayOf(MediaStore.MediaColumns.DATA),
                            "_id=?",
                            arrayOf<String>(strId),
                            null
                    )
                    cursor.moveToFirst()
                    cursor.getString(0)
                } else {
                    val projection = arrayOf(MediaStore.MediaColumns.DATA, MediaStor
                    val corsor = contentResolver.query(imageData, projection, null, 
                    if (!corsor.moveToFirst()) return
                    val imageURL = corsor.getString(0) ?: ""
                    corsor.close()
                    imageURL
                }
        Toast.makeText(this,"URL; " + imageURL?:"",Toast.LENGTH_LONG)
    }
}

Xamarin.iOS で SF Safari View Controller を使う

使った理由

Web View よりも ユーザーの体験をよくできるかと思い 標準の WebView ではなく、 SF Safari View Controlelr を導入しました。

SF Safari view controller について

この記事にたどり着いている方は、すでに知っているかもしれませんが。。。

mushikago.com

実行例

ログインしなくても、最初からTwitter のユーザー画面が表示されているのがわかるかと思います。 (つまり、Safari と ログイン情報が共有されている)

youtu.be

コード

var url = "https://twitter.com/fumiya_kume";
var safariViewController = new SFSafariViewController(new NSUrl(url));
PresentViewController(safariViewController,true,() => {});