rrrtcdish2’s diary

Webエンジニアの技術日記です。たまに趣味のパデルや旅行について書いていきます。

移転しました。

約3秒後に自動的にリダイレクトします。

次のURLはこちら↓↓

第4回パデル企業対抗戦に参加してきて思うこと

パデル企業対抗戦に参加してきました!

パデル&フットサル 晴れのち晴れ - 写真 | Facebook

リンクを見ればわかりますが、9月1日に第4回ともなる日本でパデルがうまい企業を決める大会に参加をしてきました。結果はなんとも微妙な3位。。。でも今まででものすごく拮抗していてどこの企業が優勝してもおかしくないほど、レベルが高い大会だったと思います。 結果は三位でも日本中で3位だから結構すごいかもww

f:id:rrrtcdish2:20180903220257j:plain

参加して感じたこと

大会のレベルが確実に上がっている!!

ということはどういうことかというと、日本のパデルのレベルがどんどん上がっていると思います。最近大井町にもパデルコートができたし、このまま勢いよくパデル熱が地方とかにも伝染していくんじゃないかなと勝手に妄想していますww

ちなみにパデルがわからんていう人はここを見てみてください。(と言うか調べればある程度わかるけどw) yoshiki-0428.hatenablog.com

パデルは地味ーに続けていていつの間にかある程度はできるようになってきたと思う。完全初心者でもある程度経験を積めばある程度うまくなれるのが良いスポーツだと思う。なのでこれからも練習をしていこうと思います! とりあえずはマイラケットほしいなぁ。。。。

パデルを紹介してみる & 関東パデルコートまとめ

はじめに

みなさんこんにちは、密かにパデルを趣味としているYoshikiです。以前会社の先輩に無理矢理(?)連れてかれてから意外とハマっております。

そもそもパデルとは??

パデル(Padel)は、1980年代から競技者人口が増え始めたラケットスポーツである。スペインはじめポルトガルやイギリス、またアルゼンチン、メキシコ、ブラジル、カナダ、ウルグアイ、そしてチリなどの国々で、パデルがスポーツとして発展を遂げた。近年、アメリカ合衆国へ広まりつつある。また最近になり、日本にパデルコートが建設される。

Wikiより

という風に最近日本でも流行ってきているラケットスポーツですね。

(1980年からあったの!?という驚き)

まあ動画を見てくださいな

とまあこんな感じにテニススカッシュ)を融合させたようなスポーツです。初心者でもラリーが続くので、経験がない人でも全然OKです(というかほぼほぼの人はないはず笑)

あとテニス経験者ならなおさら向いてます。今すぐ始めましょう笑!

動画を見て分かる通り、壁に当たったボールを返すことができるため一回逃したら終わりじゃありません。常にボールの跳ね方を考えて動きます。動画の人たちはめちゃくちゃラリーが続いてますが、通常はここまで続きません笑(ここまでできたらプロですね)

じゃあどこでできるの?

という話で、関東限定で上げてみようと思います。興味がある方は予約して行ってみてください。(2018/08/28時点の情報です)

1. パデル東京(善福寺テニスクラブ内)

スポルが出る前までは、東京唯一のパデルコートでした

2. 所沢フットサルパーク

埼玉県のパデルコートですねぇ。埼玉県民いいなあ

3. パデルワン(スポル品川大井町内)

東京注目の場所!近いです!

4. 晴れのち晴れ

千葉県にあるパデルコート!

それでいくらするの?

はい。。。これですね。最新のスポーツということもあり、正直安くはないです。相場的にはコート1面1時間で大体4,000~5,000円くらいします。2時間半借りて10人で行ったとしたら1人1,000円くらいですかね。

大井町にパデルコートができるまでは都内にパデルコートがなく、コート代もそこまで安くないということで避けていた人もいるとは思いますが、大井町にできたので仕事前、仕事帰りとかに行けちゃいますね。興味が出た方は是非行きましょう!

道具はどうすれば?

はい。基本的にレンタルできます。(有料のところもあるけど、、)コートを借りるときにレンタルをお願いしましょう。

もちろん、自分で買っていって持ち込むのもアリアリです!モノによってはお高いものもあるかもですが、自分で買ってやってみるのもいいかと思います!

TECH::CAMPのフリーランスセミナーに行ってきて即実践できること(未経験エンジニアが)

8/26に行われたTECH::CAMPのフリーランスセミナーに参加をしてきました

Freelance Engineer Conference -未経験から稼げるフリーランスエンジニアになるための最短ステップ- というタイトルでまさに未経験者からどうすればフリーランスになれるのかという内容でした。

内容

  • TECH::CAMP 新保 麻粋氏 挨拶
  • 現役フリーランサーによるパネルディスカッション

参加した理由

  • とりあえずフリーランスの人の意見や話を聞いてみたかった。
  • フリーランスになるにはどういった経路をたどったらいいのか疑問があった。

個人的な感想

正直現役エンジニアにとってはパネルディスカッション以外はあまり聞かなくてもいい内容だと感じました。その理由として、セミナー対象者がTECH::EXPERTの勧誘ありきのセミナーだったこと + 現役エンジニアなら既に知っている内容が多かったからです。

おそらく今後も開催されるとのことなので本当に未経験者で現地でリアルな話を聞いてみたいとかだったら参加されるといいかもです。(ただ実際はちょっとネットで調べれば出てくることもあったような。。。w)

ただパネルディスカッションでの3人のトークはリアルな話もあって面白かったです。単価の上げ方や交渉術は参考になりましたw とりあえずわかったのは、現役エンジニアなら今すぐフリーランスになれるということ(ただし貯金とかがないと継続はできないかもw)

即実践できると思ったこと

ここからが本題でじゃあ何が実践できるのということ。
  • 現役エンジニアの場合は今得意な言語や好きな言語を極めて、そのサービスを構築して、公開するということ。

    ただこれは結局クライアントにモノを見せれればいいという話なので、今開発しているサービスの一部を見せれれば良いと思います。 結局しょぼくて機能が少ないものをクライアントに見せても印象はいまいちなので、自分が開発に携わったサービスのほうがいいと思います。

  • 未経験の場合は、600時間〜1000時間をかけてプログラミングやHTML, CSSの学習をするということ

    結局未経験は未経験です。何の実績もなくフリーランスになるのは難易度がかなり高いとのこと。(これはWebデザイナーも一緒。基礎を知らなければITの世界には入れない) やり方的には、まずは無料のスクール(Progateなど)を受講してある程度基礎をつける事が必要。この方法は自宅で行うのが基本なので自分をコントロール出来ないと厳しいと思います。もしくは、未経験者を募集しているIT企業に就職をすること。周りに教えてくれる人がいたほうが圧倒的に学習コストが低く、フリーランスエンジニアに近づけます。

おわりに

現役エンジニアは行く必要がなかったかもしれませんが、フリーランスの人のリアルな話を聞けてよかったと思います。未経験の方は参考にすると良いかもしれません。

【第1回】Alexaで時間管理するアプリをつくってみた。(Alexaアプリの作り方編)

はじめに

はじめまして、WebエンジニアのYoshikiです。最近社内の発表会で時間管理をしてくれるAlexaアプリを作成したので記事にしようと思います。

簡単に内容を見たい人向け

背景

そもそも自分自身がこの頃YouTubeを1日のうちにかなり見すぎてしまい時間を無駄にしているなぁと感じたため作りました。あとスマートスピーカーの開発がうちの会社のソリューションだったりしますw

smart-speaker.kronos.jp

このブログで伝えること

  • 【第1回】Alexaアプリの作り方
  • 【第2回】Pythonでの開発方法

1. Amazon developer コンソールでの設定

amazon alexaの開発者コンソールにログイン

Amazon Developerログイン

f:id:rrrtcdish2:20180824081130p:plain

ログインができたらまずはアプリの設定を行う必要があります。

[メニュー] - [Alexa Skill Kit] - [スキルの作成] まで進みます。

スキル名 と デフォルト言語 と スキルのモデルを選択します。 今回だとこんな感じです。 f:id:rrrtcdish2:20180824081609p:plain

スキルの呼び出し名とインテント、スロットタイプを選択する
  • スキルの呼び出し名

いわゆるAlexaを呼び出すときに必要なスキル。すべての起点となるので呼び出し名はよく考えたほうがいい。

会話の種類のこと。このインテントの種類によってAlexaの会話のできる種類が決定される 今回のユーザの会話のパターンでいうと、

  • 「Alexa 時間管理アプリを開いて」(LaunchIntent)
  • Youtubeの時間を記録して」
  • 「4時間記録する」
  • 「今日のYoutubeの時間を教えて」 このようになる。最初のLaunchIntentを除いて3つのインテント開発が必要となる。
  • スロット

会話の中の単語の部分のこと。今回でいうとYouTubeが当てはまる。 このスロットは複数つけることができ「YoshikiYoutubeの時間を記録して」という風にもできる。 ただ今回はVUI的にシンプルな方が自然に話しやすいと考え、1つのみとしました。

インテントの設定をする

今回は「Youtubeの時間を記録して」のインテントを例にして説明をする。

インテントの開発には、発話の種類と会話のYouTubeの部分のスロットの設定が必要となる。

f:id:rrrtcdish2:20180824083408p:plain

  • サンプル発話

話すであろう会話のパターンを登録する必要がある。なるべく多いほうが認識をしてくれるので最低4個程度登録すると良い。

  • スロットの選択

スロットの種類もAmazonに準備されてるものが多くあり、いろいろな種類がある(動物だったり、色だったり、街名だったり種類は様々)ので会話にあったパターンを選択すると良い。

もし、ない場合は自分でカスタムして作成することができる。サンプル発話と似たように単語を登録し、決まった単語に反応するようになる(Amazonすげえ)

というふうにここまで必要なインテントを設定できたら次はAWSの設定が必要になるので[エンドポイント] - [スキルID] をコピーしておく。

2. AWS lambda の設定

Alexaアプリを作成するためにAWS lambdaが必要です。

lambdaの設定

[lambda] - [関数の作成] を選択し、[設計図を選択] で [alexa-skills-kit-color-expert-python]を検索し選択します。

f:id:rrrtcdish2:20180824090807p:plain

次にロールの作成をします。

[カスタムロールの作成] からそれらしいロール名(alexa-basic-roleなど)をつけて保存し設定します

Alexa Skills Kit トリガー

ここで上記の工程でコピーしたスキルIDを貼り付けます。

そして、[関数の作成] である程度の基礎は出来上がりです!(めちゃ簡単!)

lambdaが出来上がったら下の画像の右上にあるARNをコピーして[Amazon developer console] - [エンドポイント] - [デフォルトの地域] に設定をして完了です。 f:id:rrrtcdish2:20180824102320p:plain

連携完了

とりあえずここまでで Alexa APIAWS lambdaの連携は完了です。

ほぼほぼGUI操作で実装できるので開発はだいぶ進めやすいかと思います。次回は、lambda(python)でのデバッグの仕方や実装の詳細について触れていきます。 ちなみに作成したコードはGitHub上に公開してあるので見たい方は参考程度にどうぞ。

github.com

Alexaについて

自分の場合は Echo dotを購入しました。小さくて場所取らなくて安いです。コスパ重視ならEcho dotですね。

スピーカーとかなくて気になるって場合は、Echoがいいと思います。

使い方としては、Echo dotでBluetoothスピーカーとつなげていい感じに音楽とか再生して使用してます。あとちょっと開発よりなスマートホーム化もしてあるので別で記事にします。

WebView内での特定URL遷移時にアプリブラウザで表示させる方法

はじめに

Androidアプリ開発時にWebView内で特定のURLをタップされたときに、アプリの標準ブラウザで表示させるという対応をしたので、記事として書きたいと思います!

ちなみに今回の特定のURLというのは、最初にWebViewで開いたURLとドメインが違った場合です。

例えば

  1. WebView.loadUrlで https://google.com を開いたとします。

  2. 次にWebView内で https://google.co.jp を開く。

  3. ここで https://google.co.jp をアプリのブラウザで開く。

ということがしたいわけです。

解決方法

そもそもですが、WebView内のURLリクエストをフックするには 

WebViewClient#shouldOverrideUrlLoading というメソッドが必要です。簡単にコードを書くとこんな感じですね。

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    view.loadUrl(String.valueOf(request.getUrl()));
    return true;
}

shouldOverrideUrlLoadingのメソッドの実装ができたら、次は入力されてきた引数であるWebView view WebResourceRequest requestを比較します。 これらの値にURLの情報が含まれているので取り出していきましょう。

WebView viewview.getUrl() でWebViewがスタートしたURLを取得可能

WebResourceRequest requestrequest.getUrl() はユーザがタップしたリクエストのURLを取得可能

とこんなふうに取り出せます。今回やりたいこととしては ドメインの比較をしたい のでこんなふうになります。

String domainName = Uri.parse(view.getUrl()).getHost();
if (!url.contains(domainName)) {
    // hogeHoge
}

※手っ取り早くドメイン(ホスト名)を取り出すにはUriクラスのgetHostメソッドを使うのが簡単だと思います

というわけで、ドメインの変更を検知できるようになったのでソースで表すとこんな感じになります。

ソース

webView.setWebViewClient(new WebViewClient() {
@Override
       public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
           // ドメインが含まれていない場合、アプリブラウザ遷移
           String domainName = Uri.parse(view.getUrl()).getHost();
           String url = request.getUrl();
           if (!url.contains(domainName)) {
                Uri uri = Uri.parse(url);
                Intent i = new Intent(Intent.ACTION_VIEW, uri);
                activity.startActivity(i);
                return true;
           }
           return false;
      }
}

問題発生

上記のコードで完全にできた!勝った!と思ったのですが、なぜかshouldOverrideUrlLoadingメソッドが二回呼ばれるという症状が発生。。。バグみたいな動きなので当然修正。

具体的には

  1. WebView開く
  2. WebViewで外部ドメインのリンクをタップ
  3. ブラウザ起動
  4. アプリに戻るともう一度呼ばれてまたブラウザ起動。。。

改善したコード

結構強引だけど、一番最初にブラウザ起動したURLを記憶しといて二回目開いたときに同じだったら単純にtrueを返すといったようにしました。

2回起動してしまう原因は環境のせいなんだろうか。。。

皆さんの参考になれば幸いです。

private String firstUrl;

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
  // ドメインが含まれていない場合、アプリブラウザ遷移
  String domainName = Uri.parse(view.getUrl()).getHost();
  String url = request.getUrl();
  if (!url.contains(domainName)) {
    if (TextUtils.equals(url, firstUrl)) {
        return true;
    }
    Uri uri = Uri.parse(url);
    Intent i = new Intent(Intent.ACTION_VIEW, uri);
    activity.startActivity(i);
    firstUrl = url;
    return true;
  }
}

参考元 

www.jaga.biz

stackoverflow.com

qiita.com

タイで携帯や物を紛失した時の対策(実体験)

はじめに

8月にタイ旅行に行ってきたのですがまぬけなことにタクシーに一時的にスマホを紛失してしまったので実際に行った対処から対策を書いていきたいと思います。

目的

ここで実施することの目的はスマホを取り戻すというより携行品損害の海外保険を使えるようにすることです。(そもそも海外保険に入っていることが条件です)

あと海外でスマホなくしたらもう帰ってこないと覚悟しましょう。

あ、ちなみに大抵の海外保険では自分の置き忘れなどの紛失の場合は保険が降りませんので注意しましょう。(なんとか盗難されたという話を作ってもばれないような気はします。。。)

まず行うこと

まずは近隣の警察にスマホを紛失してしまったことを説明しましょう。説明して盗難届(証明書)をもらいましょう。

この盗難届をもらうのがなかなか厄介でなくした翌日とか日数が経った後に行くと「本当になくしたの?」と疑問を持たれます。これはなくしたという嘘をついて海外保険を使う悪い輩がいるため、なくしたという証拠がないとそもそも受け付けてくれません。ですのでなるべく早めに警察に行きましょう。

英語が話せないからと心配しなくても大抵は日本語を話せる人が現地にいるので心配せずに行きましょう。(いない場合はGoogleリアルタイム翻訳などを使いましょう)

実施したこと

今回の自分のケースの場合、なくした際にてんぱってしまい一番最初に調べた記事で出てきた「チョーソー100」というラジオ局に連絡してタクシーに直接連絡するほうが戻ってくる確率が高いということで、すぐにそちらに連絡をしてもらいました。(ホテルの人になんとか説明し電話してもらいました。さすがにタイ語話せないのでw)

そして連絡をできたためか安心したのでしょうか。もう大丈夫というふうに謎の自信を持ってしまい、なくした当日はそれっきりだったのです。落ち着いて調べてみると紛失した場合は日本の海外保険が使えるので、それを使うために盗難届が必要、そのために警察に行かなければならないと初めて気がついたのです。

現地の警察に正直に話すと「なぜすぐに来なかったのか」という軽くお叱りのような言葉を受けました笑

つまり

すぐに警察に連絡、行動をしましょう。中にはなくした場所付近の警察署に行かないと盗難届を受け付けてくれないところもあるのでそういう点に注意しましょう。

無くさないための対策

そもそも紛失した原因としてスマホに海外SIMを入れておらず、「端末を探す」(iPhoneだったら「iPhone を探す」)でスマホの所在地を追えなかったことも原因だと思ってます。

(別のスマホにSIMを入れてテザリングWifiルータ的に使ってたのでテザリングの範囲から離れたときには時すでに遅しでした。)

なので大事なスマホだったら常に位置情報を取れるように、ケチらずに海外SIMを買ってGPSを追えるようにしておきましょう。なくなっても電源が入っていれば位置を追えます。しかも、なくした証拠として警察に提出もできるでしょう。

Androidのデザイン(XML)に慣れてきたのでまとめ

表題のとおりだが、最近Android開発でデザインを担当することがあったので備忘録も兼ねてまとめ。まずはレイアウト。

FrameLayout

重ねることができるレイアウト。レイアウトを重ねたい時に役立つ(逆にそれ以外は微妙な使い勝手)、あとプログレスバーとかをずっと真ん中に表示させたいときとかも役立つよ。

下みたいなバツマークと何らかのレイアウトを重ねたいときに使える

f:id:rrrtcdish2:20180813183525p:plain

 

LinearLayout

リニア(連結)できるレイアウト。そのとおりで、vertical(垂直) か horizontal(水平)を選べる。リスト表示したい時に有用。使用頻度高し。

RelativeLayout

リレイティブ(相対)的に使用できるレイアウト。複数の配置物があったとして、それらを相対的(固定の距離感)に配置したい時に有用。

個人的にはあんまり使わないイメージ。細かく設定しなきゃいけないし。。。

f:id:rrrtcdish2:20180813184140p:plain

 

他にも色々レイアウトはあるけど、基本的には上の3つの組み合わせを抑えておけば行ける。冷静にそれぞれのレイアウトの特性を生かしてブロックを組んでいくイメージ。

 

また他にも自分の中で整理がついたらまとめていきたいと思う。