Androidのメモとか

ポキオの日記です。今日も遅延してない。

ポキオ基板Ver.2を作ってIoTをしてみるよ(その2)

今回は納期の話。

ポキオ基板

ポキオ基板Ver.2をSeeed Studioに発注

前回まで。

relativelayout.hatenablog.com

今回は、思い切ってSeeed Studioに発注したんです。一番配送が早いやつにしてみたんですが、どのくらい早いかと言われれば、かなり早かったです。

注文⇒発送

時系列で並べるとこんな感じ。

  • 2017/05/27 17:47 : 注文
  • 2017/05/28 21:54 : 基板の製造に取り掛かったとの連絡
  • 2017/06/02 19:14 : Shippedの連絡

早い!注文から大体1週間くらいで発送されました。

発送⇒到着

色々ProsConsがあるDHL Expressですが、こちらもわりと早かった印象。

  • 2017/06/02 16:54 : Shipment information received
  • 2017/06/05 18:21 : Uncontrollable Clearance Delay

ラッキング可能になるのはすごい早かったのですが、中国国内の通関までに数日かかりました。そして、謎の通関遅延発生。ちょっと暗雲が立ち込めます。

  • 2017/06/05 20:32 : Clearance processing complete at SHENZHEN - CHINA, PEOPLES REPUBLIC

え・・・Delayとは何だったのか。あっさり通関、そのあと深セン→香港経由で成田に到着。

  • 2017/06/06 09:08 : Transferred through TOKYO - NARITA - JAPAN

そして、そこから怒涛の早さで自宅へ配送完了。

  • 2017/06/06 13:37 : Delivered - Signed for by XXXXX

というわけで、発注の10日後には家に到着。すごいですね、安いし早い。思い立ったら、まず発注ということですね。

というわけで到着

A4程度の大きさのビニールバッグに入って届きました。

ポキオ基板

袋をあけると、Seeed Studioの袋が。

ポキオ基板

その中には、できたてホヤホヤのポキオ基板Ver.2が!仕上がりも悪くありません。基板の曲線部分も綺麗にカットされています。

ポキオ基板

さて、次回はこの基盤にパーツをはんだ付けしていきます。

relativelayout.hatenablog.com

Appendix

ラッキングの詳細は以下の通りです。ご査収ください。

Date Time Event Location
Jun 06, 2017 01:37 pm Delivered - Signed for by XXXXX : DHL Express KANAZAWA WARD, YOKOHAMA - JP
Jun 06, 2017 12:52 pm With delivery courier : DHL Express
Jun 06, 2017 12:06 pm Arrived at Delivery Facility in : DHL Express
Jun 06, 2017 11:32 am Departed Facility in TOKYO - JAPAN : DHL Express TOKYO - JAPAN
Jun 06, 2017 11:22 am Processed at TOKYO - JAPAN : DHL Express TOKYO - JAPAN
Jun 06, 2017 10:21 am Processed at TOKYO - JAPAN : DHL Express TOKYO - JAPAN
Jun 06, 2017 10:20 am Clearance processing complete at TOKYO - JAPAN : DHL Express TOKYO - JAPAN
Jun 06, 2017 10:08 am Arrived at Sort Facility TOKYO - JAPAN : DHL Express TOKYO - JAPAN
Jun 06, 2017 09:08 am Transferred through TOKYO - NARITA - JAPAN : DHL Express TOKYO - NARITA - JAPAN
Jun 06, 2017 09:03 am Customs status updated : DHL Express TOKYO - JAPAN
Jun 06, 2017 05:48 am Customs status updated : DHL Express TOKYO - JAPAN
Jun 06, 2017 03:25 am Departed Facility in HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 06, 2017 03:11 am Processed at HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 11:49 pm Clearance processing complete at HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 11:49 pm Processed at HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 11:42 pm Arrived at Sort Facility HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 09:25 pm Arrived at Sort Facility HONG KONG - HONG KONG : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 08:46 pm Customs status updated : DHL Express HONG KONG - HONG KONG
Jun 05, 2017 08:34 pm Departed Facility in SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 08:33 pm Processed at SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 08:32 pm Clearance processing complete at SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 06:21 pm Uncontrollable Clearance Delay : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 06:19 pm Arrived at Sort Facility SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 06:18 pm Departed Facility in SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 05:14 pm Processed at SHENZHEN - CHINA, PEOPLES REPUBLIC : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 05, 2017 03:13 pm Shipment picked up : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
Jun 02, 2017 04:54 pm Shipment information received : DHL Express SHENZHEN - CHINA, PEOPLES REPUBLIC
火曜日, 6月 06, 2017 取り扱いセンター 時間
配達完了: XXXXX KANAZAWA WARD, YOKOHAMA 13:37
配送中 YOKOHAMA - JAPAN 12:52
DHL施設へ到着 YOKOHAMA - JAPAN YOKOHAMA - JAPAN 12:06
DHL施設から出発 TOKYO - JAPAN TOKYO - JAPAN 11:32
DHL施設にて搬送処理中 TOKYO - JAPAN TOKYO - JAPAN 11:22
通関許可 TOKYO - JAPAN TOKYO - JAPAN 10:20
DHL施設へ到着 TOKYO - JAPAN TOKYO - JAPAN 10:08
転送中 NARITA - JAPAN NARITA - JAPAN 09:08
通関手続き情報の更新 TOKYO - JAPAN 09:03
DHL施設から出発 HONG KONG - HONG KONG HONG KONG - HONG KONG 03:25
DHL施設にて搬送処理中 HONG KONG - HONG KONG HONG KONG - HONG KONG 03:11
月曜日, 6月 05, 2017 取り扱いセンター 時間
通関許可 HONG KONG - HONG KONG HONG KONG - HONG KONG 23:49
DHL施設へ到着 HONG KONG - HONG KONG HONG KONG - HONG KONG 23:42
通関手続き情報の更新 HONG KONG - HONG KONG 20:46
DHL施設から出発 SHENZHEN - CHINA, PEOPLES REPUBLIC SHENZHEN - CHINA, PEOPLES REPUBLIC 20:34
DHL施設にて搬送処理中 SHENZHEN - CHINA, PEOPLES REPUBLIC SHENZHEN - CHINA, PEOPLES REPUBLIC 20:33
通関許可 SHENZHEN - CHINA, PEOPLES REPUBLIC SHENZHEN - CHINA, PEOPLES REPUBLIC 20:32
通関手続き中 SHENZHEN - CHINA, PEOPLES REPUBLIC 18:21
DHL施設へ到着 SHENZHEN - CHINA, PEOPLES REPUBLIC SHENZHEN - CHINA, PEOPLES REPUBLIC 18:19
荷物集荷 SHENZHEN - CHINA, PEOPLES REPUBLIC 15:13

ポキオ基板Ver.2を作ってIoTをしてみるよ(その1)

ちょっと間があいてしまいましたが、僕は元気です。

ポキオ基板

前回

ポキオ基板なるものを作ってみたわけです。

relativelayout.hatenablog.com

基板の発注自体は問題なかったのですが、実際にパーツを付けてみたら、うまく付かなかったり。まぁ、そもそも、電池とスイッチと抵抗とLEDを繋いだだけの稚拙な回路だったわけです。ただ、やっぱり次はIoT感を出したい、そう思うわけです。

せやかてポキオ

とはいえ、複雑な回路は難しそうだし、無理ゲーな感じ。個人的にはESP8266とかESP32を使った基板とかを作れれば良いんですが、流石に初心者にはハードルが高いわけです。そこで、悪魔の囁きが聞こえるわけです。

「ESPr Developerのシールドを作れば良いのでは」

はい、そうですね。そうしましょう。

ESP-WROOM-02開発ボード

ESP-WROOM-02開発ボード

  • スイッチサイエンス(Switch Science)
Amazon

今回作るもの

難しい回路はESPr Developerにまかせて、シールドには以下のことを任せてみようと思います。

  • USB直挿しできるように、USB A(オス)をつける
  • マイコン内蔵RGB LEDをつけて光らせたい
  • 京急っぽい要素を入れたい

まぁ、光ってなんぼなんで、光るだけで十分です。

ポキオ基板

回路(?)の概要はこんな感じ。

いざ、基板設計

今回もKiCadをつかって設計していきます。

ポキオ基板

回路図はこんな感じ。1x10のピンソケットに、USB Aと4つ足のLEDを繋いでます。マイコン内蔵LEDがプリセットになかったので、カソードコモンなLEDで代用してます。(つなぎ方を変えて、辻褄を合わせています)

ポキオ基板

で、配線図。こちらもテキトーに作っていきます。ESPr Developerのサイズに合わせて、ピンソケットを配置していきます。

ポキオ基板

ただ、USB A メスのフットプリントはあるものの、オスのフットプリントがなく困りました。しょうがないので、フットプリントエディタで、メスのフットプリントを改造して、オスに仕上げていきます。性転換です。

ポキオ基板

USB A オスのデータシートとニラメッコしながら、こんな感じでフットプリントを改造。ネーミングもUSB_A_OSU。立派な男の子になりました。こんな感じで、基板設計ができました。(後から気づいたんですが、ベタグラウンドをするのを忘れてました。てへぺろ。)

よし、基板発注

前回は、日和ってスイッチサイエンスさんのPCBサービスを利用して基板を作ってみました。今回は背伸びをして、中国の業者に直接発注してみます。

www.seeedstudio.com

どこに発注したかというと、皆さんご存知のSeeed StudioさんのPCBサービス「Fusion」です。いまなら、小さい基板10枚までなら$4.9!送料は別途かかりますが、かなり安いです。

ポキオ基板

今回は、一番早い配送のDHL Expressで発注してみました。基板自体は$5以下なのに、その3倍近い配送料・・・。まぁ、良いんです。デリバリーの早さは重要です。で、結局$20くらい。スイッチサイエンスさんより安く済みました。

続きはまた今度

長くなりそうなので、続きは改めて書きます。

relativelayout.hatenablog.com

relativelayout.hatenablog.com

de:code 2017 前夜祭 (Day 0)で喋ってきました

ちょっと遅くなりましたが、ご報告。

de:code 2017 前夜祭 (Day 0)?

http://event.shoeisha.jp/devsumi/20170522/

マイクロソフト イベント開催情報

de:code 2017の前夜祭です。そのままですね。セッションの一つにIoTLT枠がありまして、そこでLTをさせていただくことになり、参戦してまいりました。

場所はザ・プリンス パークタワー東京

de:code 2017 前夜祭 (Day 0) IoTLT

de:code 2017 前夜祭 (Day 0) IoTLT

いつも、「東京タワーパーク」とか「パーク東京タワー」とか「タワーパーク東京」とか、個人的に間違えることが多い「ザ・プリンス パークタワー東京」で開催。

de:code 2017 前夜祭 (Day 0) IoTLT

一応、登壇者という扱いになるらしく、控室が用意されていました。さすがに緊張しますね。

de:code 2017 前夜祭 (Day 0) IoTLT

スピーカーの証。

前夜祭スタート

いわゆるビアバッシュ感あふれる自由な会でした。

基調講演には、ちょまどさんを始め、Cerevoさんのドミネーターもあり、mplusplusさんの全身が光るダンサーとか、いろいろすごかった(小並感)

de:code 2017 前夜祭 (Day 0) IoTLT

いや、別に、提供される料理が美味しすぎて、食べることに集中していたわけではないですよ。🍺も無限に出てくるから、飲みまくってたわけではないですよ。まさかまさか(笑)

de:code 2017 前夜祭 (Day 0) IoTLT

IoTLTセッション開始!

まずは、のびすけさんからIoTLTの紹介。

de:code 2017 前夜祭 (Day 0) IoTLT

どうやら、IoTLTはConnpass上で最大のコミュニティになったようで!これはめでたい!そしてその最大コミュニティ代表としてLTできるのは嬉しい限りです。

de:code 2017 前夜祭 (Day 0) IoTLT

続いてちゃんとくさん。電気風呂のイメージが強いですが、色んなイベントを企ててらっしゃるすごい方。フッ軽な行動力をちょっと真似したいところです。

de:code 2017 前夜祭 (Day 0) IoTLT

次にしのはらさん。Mixed RealityとIoTの融合であるMR-IoTを提唱。夢が広がるカテゴリーです。ボクモホロレンズホシイヨ・・・。

ここでポキオ。 リバイバルLTということで、Nothing Newです、ご了承下さい・・・。

次回のIoTLTでは、新ネタを披露しますので、ご勘弁下さい(笑)

de:code 2017 前夜祭 (Day 0) IoTLT

そして、トリはギャル電さん!まおさん不在とのことで、なんときょうこさんとMC浮遊感さんのレア会でした。どんどん新しいファッションガジェットを作成していてすごいです・・・。浮遊感さんのGEEKなワードがあふれるラップにも鳥肌が!こんなラップをささっとやってしまう感じもすごい。

というわけで、イベント終了

お疲れ様でした!

de:code 2017 前夜祭 (Day 0) IoTLT

IoTLTとポキオを今後ともよろしくお願いします。

リクルートのAIを無料で使えるA3RTをつかってツイートにしつこくリプライしてくれるBOTを作ってみた

ぼっちでも寂しくない。

前回はGASでA3RTを触りました

relativelayout.hatenablog.com

折角なので何か作ろうと思い、TwitterBOTを作ってみました。具体的には、自分がつぶやいた内容に関して、しつこく合いの手を入れてくれるBOTです(笑)

いざ実装

とはいえ、ウェッブなエンジニアリングが苦手なので、今回もIFTTT様に頼って行きていこうと決めました。

A3RT GAS IFTTT

  1. つぶやく
  2. IFTTT経由でTwitterをトリガーにGASで作ったWebAPIを叩く
  3. GASからA3RTのTalk APIを叩いて、リプライ文言を作成
  4. IFTTT経由でリプライ専用アカウントからつぶやく

GASからTwetterを直接叩けばいいじゃんっていうツッコミはなしで。最初はこんな感じで実装してたのですが、IFTTTからGASにWebhookをなげるところが上手く行かなかったので、Google DriveのSpreadsheetを介して、Twetter⇒GASにツイート情報を渡しています・・・。

A3RT GAS IFTTT

うん、これは酷い。とりあえず動くことを確認したかったので、お許し下さい。

どんな感じに動くのか

クソコードは長くなるので、後ほど。

A3RT GAS IFTTT

「会社行きたくないな」ってつぶやくと、数分後に心配してくれるリプライをくれます(笑)

A3RT GAS IFTTT

たまに会話が噛み合わないこともありますが、ネットストーキングの如く、必ずリプライをくれます。

A3RT GAS IFTTT

気づくとこんな感じに。

クソコードはこちら

IFTTTでTwitter⇒Driveに情報を渡すと、リツイートやメンションも渡してしまうので、GASでそれらのツイートは無視するようにしています。下記のloop()を定期実行しています。

var url = "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk";
var apikey = "xxxxx";
var iftttUrl = "https://maker.ifttt.com/trigger/xxx/with/key/xxx";
var sheetId = "xxx";
var sheetName = "xxx";

function loop(){
  if(!isSheetDataAvailable()){
    Logger.log("no data");
    return;
  }
  
  var lastTweet = getSheetData();
  Logger.log(lastTweet);
  clearSheetData();
  
  if(lastTweet.lastIndexOf('RT', 0) == 0){
    Logger.log("ignoring retweet");
    return;
  }
  
  if(lastTweet.lastIndexOf('@', 0) == 0){
    Logger.log("ignoring mention");
    return;
  }
  
  var message = ask(lastTweet);
  Logger.log(message);
  
  triggerIfttt("@pokiiio " + message);
}

function ask(message){
  var payload =
      {
        "apikey" : apikey,
        "query" : message
      };
  
  var options =
      {
        "method" : "post",
        "payload" : payload
      };
  
  var response =  UrlFetchApp.fetch(url, options);  
  var result = JSON.parse(response.getContentText())["results"][0]["reply"];
  
  return result;
}

function isSheetDataAvailable(){
  var spreadsheet = SpreadsheetApp.openById(sheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
  var maxRow = sheet.getLastRow();
  
  return maxRow > 0;
}

function getSheetData(){
  var spreadsheet = SpreadsheetApp.openById(sheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
  var data = sheet.getSheetValues(1, 1, 1, sheet.getLastColumn()); 
  return data[0][0];
}

function clearSheetData(){
  var spreadsheet = SpreadsheetApp.openById(sheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
  sheet.clear();
}

function triggerIfttt(message){
  var payload =
      {
        "value1" : message
      };
  
  var options =
      {
        "method" : "post",
        "payload" : payload
      };
  
  UrlFetchApp.fetch(iftttUrl, options);
}

リクルートのAIを無料で使えるA3RTをGASから触ってみる

久々のGAS案件。

A3RTとは?

まぁ、このあたりを見てください。

a3rt.recruit-tech.co.jp

bita.jp

リクルートのAIであるA3RT、今回一般人にも無料で公開されたことで、夢が広がる結果となりました。

A3RT(アート)は「ANALYTICS & ARTIFICIAL INTELLIGENCE API VIA RECRUIT TECHNOLOGIES」の略称です。

公開されたのは、以下の6つのAPI

今回は、その中からTalk APIを使ってみました。

Talk APIとは

Talk APIはChatbotを作成するためのAPIです。 Recurrent Neural Network(LSTM)を用いた入力文からの応答文生成による日常会話応答機能を提供します。 Talk APIを活用したChatbotによって様々なアプリケーション上でユーザとの対話を自動化し、 どのようなタイミングにおいても即座にユーザからの問いかけに対して応答することができます。

友達がいない僕でも、話し相手になってくれそう。とりあえず使ってみようと思います。ただ使うのは芸がないので、GASからA3RTを叩いてみます。

API KEYさえあれば実装は簡単

とはいえ、APIを使うこと自体は本当に簡単。A3RTのページからAPI KEYを取得して、Endpoint URLにAPI KEYと単語をPOSTするだけ。レスポンスもJSONで返ってきます。クソコードはこんな感じ。メソッドを分けているのは、今後の伸びしろのため(笑)

var url = "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk";
var apikey = "xxxxx";

function myFunction() {
  ask("痩せたい");
}

function ask(message){
  var payload =
      {
        "apikey" : apikey,
        "query" : message
      };
  
  var options =
      {
        "method" : "post",
        "payload" : payload
      };
  
  var response =  UrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText())["results"][0]["reply"];
  Logger.log(result);
}

痩せたいとつぶやいてみます。

A3RT GAS

「今のままで十分魅力的ですよ」だってさ(笑)

こいつ、ヤルジャン(笑)

あっけなくAPIを使うことができした。 他のサービスと組み合わせれば、かなり夢が広がりそうです。

追記

「夢はなんですか?」「ありません」

「何歳ですか?」「トップシークレットです」

「会社に行きたくないです」「どうしたんですか?」

「旅に出たいです」「旅行はいいですね」

「一緒に温泉に行きませんか?」「ご一緒してみます」

「箱根はどうですか?」「あなたはよくするんですか?」

え・・・

KiCadを使って基板(ポキオ基板)を作ってみたんだけどちょっと失敗した

ポキオ基板の爆誕

ポキオ基板

以前参加した勉強会で刺激を受けた

relativelayout.hatenablog.com

思った以上に、基板を作る(設計する)ことは簡単。そして、設計する環境であったり、基板作成を発注できる業者も沢山あって、かなり安価でした。これはもう、基板を作るしか無いと思い、今回は基板を作ってみました。

まずはKiCadで基板の設計

とはいえ、回路とかちょっとよくわからないし、キルヒホッフの法則とか大学の頃やったっきりで、よくわからなかったので、電池とLEDとスイッチと抵抗を繋ぐだけでの、簡単なLチカ回路を設計してみました。

ポキオ基板

ただ、普通に作るだけだと芸がないので・・・

  • 配線で京浜急行の路線図をつくった
  • 品川駅がLED、三崎口駅がスイッチにした
  • 羽田空港ボタン電池、我らが金沢文庫駅には抵抗を配置した
  • 大師線は本線と直通運転することはあまりないので、配線が途切れている(裏のレイヤーを介して電気的につながっている)
  • 裏面にはポキオ感を全面に出していきたい(名前と、Twitter垢、Blog URLを描いた)

こんな感じで、無駄にこだわってみました。

ポキオ基板

3D表示の図。ポキオ感ある。

スイッチサイエンスさんに基板発注

中国の業者に直接発注すれば安く済むものの、初めての基板発注だったので、チキってスイッチサイエンスさんに依頼しました。

ポキオ基板

諸々込で2500円位。赤い基板も無料で指定できて、無駄に10枚、同じ基板を作成してくれます。

ポキオ基板

基板のデータをアップロードすると、プレビュー表示してくれるんですが、なんか欠けて表示されてます・・・大丈夫かな・・・。(結果的には問題なく基板が出来上がりました)

約2週間で到着

4月2日に注文、ものが届いたのが4月18日。大体2週間。

ポキオ基板

スイッチサイエンスさんのオサレな箱で到着。ネコポスでの発送でした。

ポキオ基板

中を開けると、真っ赤な基板が!テンションアガる!

パーツを実装していきます

ポキオ基板

基板上の印字もちゃんと書かれています。基板の四隅のカーブも綺麗です。

ポキオ基板

で、まぁテキトーにパーツを半田付けしてみたんですが・・・

ポキオ基板

なぜか電池ボックスの足と、基板の穴の位置がずれていて、ちゃんとハマりませんでした・・・。むりやり足を曲げて半田付けします(笑)

ポキオ基板

スイッチを押すと・・・ピカーン!とりあえず、動作は問題なさそう!

というわけで

初めての基板作成でしたが、

  • 発注する前に、パーツを買っておく
  • 発注する前に、設計した基板をプリントアウトして、パーツがちゃんとハマるか確認する
  • 納期はそれなりにかかるので、覚悟しておく
  • 中国に直接発注すればもっと安くできる(スイッチサイエンスさんも、SeesdStudioに発注していた模様)

このあたりが、今回の反省点。 ポキオ基板Ver2にも乞うご期待(笑)

いまさらだけどKotlinでAndroidアプリを書いてみる

社内外のAndroidエンジニアが絶賛しているKotlin。このビッグウェーブに乗り遅れないために、ちょっと触ってみました。

参考

kotlinlang.org

本家サイトを参照しました。

環境構築

First, if using Android Studio, you’ll need to install the Kotlin plugin. Go to File | Settings | Plugins | Install JetBrains plugin… and then search for and install Kotlin. You’ll need to restart the IDE after this completes.

Android Kotlin

まずは、Kotlinのプラグインをインストール。ちょっと時間がかかる。インストールしたらAndroid Studioを再起動する。

Android Kotlin

起動完了。

コーディング開始

It’s extremely easy to start using Kotlin for Android development!

はい。

First let’s create a new project.

とりあえず、プロジェクトを作ります。

Open MainActivity.java file. Then invoke action Convert Java File to Kotlin File.

MainActivity.javaをKotlinに変換します。すると、MainActivity.ktに変換されます。

Android Kotlin

kotlin convertで検索すると、簡単にアクセスできます。ワンクリックで変換可能。

Android Kotlin

こんにちは、Kotlin。

Android Kotlin

エラー

なぜかビルド時にエラー。

Android Kotlin

Error:Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.0.7

こちらは、Kotlinのバージョンを1.1.1にしたら解決。

Android Kotlin

無事にビルトができました。

ちょっと書き足してみる

ボタンが押されたらTextViewの文字が変わるというクソ実装。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onResume() {
        super.onResume()

        val button = findViewById(R.id.button) as Button
        val textView = findViewById(R.id.textview) as TextView

        button.setOnClickListener { textView.setText("Button is clicked!") }
    }
}

Javaに比べて、かなりシンプルに書けます。

Android Kotlin

無事にビルドも通り、動作も問題なさそうです。

サマリ

かなりJavaとは違った文法ですが、Kotlinは安心と信頼のJetBrains製。Android Studioとの親和性は問題なさそうです。コーディングもかなりシンプルになり、一度慣れてしまえば病みつきになりそうです。Swiftとの親和性もあるとのことなので、いざと慣ればiOSのプログラミングにも対応できそう・・・!?

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。