AWS SUMMIT Tokyo 2017 Day 2 基調講演

image

Amazon.com CTOのWerer Vogelsが登場。

セールスのイベントではなく教育のイベントです。AWSだけではなく、AWSを10年つかっているユーザー様からも学んでほしいと思います。ぜひ

image

登録者は2万人以上です。

image

セッション数、ゲストスピーカー、スポンサーブースがあります。

続きを読む “AWS SUMMIT Tokyo 2017 Day 2 基調講演” >

『eureka Meetup #01 -Android DroidKaigi再演-』の参加メモ

eureka Meetup #01 -Android DroidKaigi再演-』に参加してきました。
その時に興味のあった内容を備忘録的にメモしています。
ハッシュタグは、「#eureka-meetup」です。

  • 事業成長にフォーカスする開発組織 by 金子 慎太郎
  • トークアプリで絵文字を実装した話 by 二川 隆浩
  • Error Handling in RxJava by 海藤 優弥

事業成長にフォーカスする開発組織 by 金子 慎太郎

まずは会社的な歴史と概要とCTOの概要。

  • PairsとCupplesを開発しているが、特にPairsに注力している
  • 前CTO元CEOから継いで、CTOになって半年。
  • 自社サービスする、VC入れないを方針に広告事業でキャッシュをためて、受託開発をしてナレッジをためて、そしてPairsをリリース。3年後に完全に受託開発から撤退した。
  • 2016年に会員数500万人

開発組織はどうやっていくのかというお話。

  • 事業成長とブレンドイメージの向上を技術を通して支援・加速させるのがエンジニア戦略
  • プロダクトを早く届けることに注力している。早く注力するために技術負債の低減を進めてスピード感を維持している
  • 古いOSを使用しているユーザーにも配慮したアプリ開発をしている
  • UI/UX大切。マネタイズがトガりすぎると結局金儲けアプリかと思われる。不正ユーザー(業者)をいかに取り除くか。

Androidアプリ:トークアプリで絵文字を実装した話 by 二川 隆浩

@futabooo
サーバーサイドはPHPからGolangにフルリニュアルしました。
フロントはTypeScriptとAngularJS。
Androidは、Kotlin・DataBinding・ButterKnife・Picasso・RxKotlin・Retrofit2・OkHttp3を使っています。

アプリ独自絵文字を最初は用意してなかったが、「自分が送った通りの絵文字が表示されない」という問い合わせを受けた。
しっかりとコミュニケーションできるようにアプリ独自絵文字を追加することを決意。
どうやるのかは他社アプリの独自絵文字を研究しました。

他社のアプリで実装されていた機能には次のようなものがあった。

  • 絵文字を表示できる
  • 絵文字のコピー&ペーストができる
  • アプリ外にペーストすると代替テキストで表示される
  • 絵文字1つだけの時はスタンプになる

String message = "こんにちは{{sticon(1,10)}}今日はいい天気ですね{{sticon(2,20)}}"
「{{sticon(1,10)}}」というような記法で独自アイコンを表示する。

裏の実装は、正規表現で頑張る感じ。Stringの拡張は、SpannableStringで実施。

コピーアンドペーストは、
コピーすると、アプリの方では「こんにちは{{sticon(1,10)}}」を保持して、クリップボードでは代替文字列「こんにちは(sunny)」をコピーする。
ペーストは、クリップボードの文字列とアプリの文字列を比較して対応する。

実装してみたら、大量の絵文字を表示するとスクロールがカクついたのでキャッシュで対応することにした。
最初はLruCacheを使って解決。
絵文字のコピペをすると文字れが切れる問題が発生した。
絵文字をコピーすると「{」しかコピーされなかったので、「{{sticon(1,10)}}」までコピーするように実装した。

Error Handling in RxJava by 海藤 優弥

@yuyakaido
スライド

RxJava(Reactive Extension for Java)のエラーハンドリングはCatchとRetryの2種類。
Retrofitで共通処理を仕込むのにコピペを減らすためにCallAdapterインターフェイスを継承して、
RxJavaCallAdapterWrapperを実装してaddCallAdapterFactoryで呼び出して対応。

C# で踏み台サーバー経由で RDS for MySQLに接続する方法

概要

ローカル開発マシンから、C#を使用してSSHでBastion(踏み台)サーバーに接続し、ポートフォワードしてRDS for MySQLに接続してデータを取得する方法について説明します。
ポートフォワードの部分の設定が理解できなくて設定に迷って手間取ったのでした。
ポートフォワード元と先に何を設定すべきか。。。

設定手順

  1. Visual Studio で「プロジェクト」 → 「Nugetパッケージの管理」を選択する。
  2. 「mysql.data」と「ssh.net」をインストールする。
    • image.png
    • image.png
  3. SSHでAWSのBastionサーバー(踏み台)に接続し、ポートフォワードでRDS fro MySQL に接続する。
var pkFile = new PrivateKeyFile(@"E:\aws.pem", "");
var connBuilder = new MySqlConnectionStringBuilder
{
    AllowBatch = true,
    Server = "127.0.0.1",
    Port = 3306,
    UserID = "hoge",
    Password = "foo",
    Database = "fuga"
};
using (var client = new SshClient("54.65.***.***", 22, "ec2-user", pkFile))
{
    client.Connect();
    var forward = new ForwardedPortLocal("127.0.0.1", 3306, "rds-mysql.****.ap-northeast-1.rds.amazonaws.com", 3306);
    client.AddForwardedPort(forward);
    forward.Start();
    using (var connection = new MySqlConnection(connBuilder.ConnectionString))
    {
        connection.Open();
        using (var com = new MySqlCommand("SELECT * FROM t_user limit 1", connection))
        {
            com.CommandType = CommandType.Text;
            var ds = new DataSet();
            var da = new MySqlDataAdapter(com);
            da.Fill(ds);
            foreach (DataRow drow in ds.Tables[0].Rows)
            {
                Debug.WriteLine("From MySql: " + drow[1].ToString());
            }
        }
        forward.Stop();
    }
}

re:dashのalertをSlackに通知する

re:dashでalertを設定し、その通知先としてSlackを設定することができます。

必要なもの

  • re:dashのadmin権限
    (これが無いと通知先設定ができないので、ない場合は管理者に依頼)

alert先の設定

1. Setttingページで、New Alert Destination ボタンをクリックします。
続きを読む “re:dashのalertをSlackに通知する” >

APIの開発サイクルを早めるサービス:apiary

APIを使用した開発をする場合、APIのインターフェイスを定義する。

  1. その定義にそってAPI開発チームが開発。
  2. フロントアプリの開発チームも定義に沿ってアプリを開発。

と言うことで、2ライン走ることになる。
APIが完了するまでは、疑似コードを書くとか、JSONを定数で持たせるとか、そんな感じで開発をすることが多いのだけど、apiaryを使用すると少し楽にしてくれる。

続きを読む “APIの開発サイクルを早めるサービス:apiary” >