プログラマってこんなかんじ??

アプリ作ったり歌ったりしてます

ストレングスファインダーやってみた(2回目)

先日、友人 から「新版が出てる」と聞いて。今後のキャリアプランに悩んでいるところだし、何かのきっかけになるかなーと思って再受験してみました。

ざっくり所感

  • 前回(9年前) と試験内容はほぼ同じ?(180問くらい、制限時間 20秒/問)
  • 前回より結果レポートが大量で読むの大変。うれしい悲鳴。(pdf 7ファイルくらい)
  • 結果は概ね合っている、痛いところつかれた
  • ただ、自分自身が大事にしているポイントが前回と少し変わっていた
  • 何となく気づいてるけどモヤモヤしていた部分をまとめてもらった感

診断結果

現在の自分の強みはこの 5つ らしいです。(以下、本文から引用)

学習欲

学習欲という資質を持つ人は、学習意欲が旺盛で、常に向上を望んでいます。特に結果よりも学習すること自体に意義を見出します。

収集心

収集心という資質を持つ人は、より多くの知識を求める知りたがり屋です。ものを集めたり、あらゆる種類の情報を蓄積したりするのが好きな人が、このタイプに多くみられます。

個別化

個別化という資質を持つ人は、一人一人が持つユニークな個性に興味をひかれます。異なるタイプの人たちの集団をまとめ、生産性の高いチームを作ることに長けています。

調和性

調和性という資質を持つ人は、意見の一致を求めます。意見の衝突を嫌い、異なる意見でも一致する点を探ります。

ポジティブ

ポジティブという資質を持つ人は、情熱的であり、しかも自然にその熱意を人に分け与えることができます。生き生きとしており、他人に活気を吹き込み、やる気を起こさせることができます。

自分へのアドバイス

そして、結果レポートはこんな観点でまとめてありました。とにかく量が多い。

  • TOP5資質の説明
  • 強みのインサイト
  • 強みを活用する方法
  • 強みに基づいた行動計画の作成方法

ざっくりまとめると、

  • 人に教えるのが向いてそう
  • 技術的な専門職がよさげ
  • 技術や規則が常に変化する分野に身をおくとよさげ

現在、IT系の新人研修講師業をさせていただいてるのですけど、自分にとって「楽しい」と声を大にして言えるお仕事で。しんどいよりも圧倒的に楽しいのはなぜだーと疑問だったのですけど、結果を見てなんだか納得。そしていろいろと後押しされた感。こうやって自己分析するきっかけになるのは面白かったです。また数年後に受験すると結果変わるのかなー

参考(引用元)

www.gallupstrengthscenter.com

短縮URL を goo.gl から bit.ly へ乗り換えてみた (Google Apps Script)

Google短縮URLサービス(Google URL Shortener) が 2019/3 にサービス終了するというニュースが飛びこんできました。自分のサービスでも使用しているので、早速対応してみました。

developers.googleblog.com

Google 公式には Firebase Dyanmic Links (FDL) が移行先としてオススメされていますが、今回はあえて Bitly をチョイスしてみました。

firebase.google.com bitly.com

API制限は?(Bitly)

  • URL新規発行 10,000回/月
  • API呼出 1,000回/時
  • API呼出 100回/分

自分のサービスではこの 無料枠 で特に問題なさそうでした。(2018/4/18 時点)

URL はどうなる?

画像の青字の部分。

goo.gl

bit.ly

ソース(Google Apps Script)

GAS create short url (google, bitly)

参考

qiita.com goo.gl daichan4649.hatenablog.jp

LINE Developer Meetup #29(LINE Bot開発) へ参加しました

実はこのイベントを見つけたとき、「自分は行く気まんまんなのだけど、福岡で LINE Bot に反応する人どのくらいいるのだろうか」と考えていた。去年の LINE BOT AWARDS が終わってからネット上でもあまり話題にあがってない気がしてたし。(すんません)

line.connpass.com

実際参加してみると・・なんと 90名弱。いままでこのジャンルに興味ある人にあまり出会わなかったので正直嬉しかった。完全に開発モチベ復活。参加してよかった。

というわけで、登壇者や参加者の方々との会話の中で自分に刺さったこと、気になったことを箇条書きしてみる。

大事なこと

ユーザが Bot について何もわからなくても使えること

  • 「何をしていいかわからない」はNG
  • 直感的に使えることが理想

Webの劣化版を作ってはいけない

  • 人が対面で行っている部分
  • Webがやれていない部分
  • ただの検索クライアントならWebで十分

自分の運営している jazzspot-fukuoka はまさに Web劣化版に該当。痛い。

daichan4649.hatenablog.jp

ただ、LINE を「便利なインターフェースとして使う」考え方も個人的にはアリかなーとも思う。Android/iPhone 用のネイティブアプリを個別にインストールする必要がないのは本当に、本当に、大きい。モバイルサイトよりも操作しやすいのも嬉しかった。jazzspot-fukuoka はまさにその恩恵。インターフェースとしては本当にありがたい。

開発面

BOTソースコードはスパゲティになりやすい

  • 分岐が多く、処理のネストが深くなりがち
  • 何かしらの framework を利用したほうがよいかも

qiita.com

github.com

ユーザの識別

  • userId はユーザごとに必ず一意になる(トークルーム単位ではない)
  • これをサーバで保存して使用すればよい
  • ユーザに特化した内容を表示するとより会話的になるよね

自然言語処理は大事

  • みんな Dialogflow 使ってる感
  • 自分も使ってるけど実際楽

表示する情報量

  • LINE の特性上、たくさん情報表示すると見にくくなる(スクロールが大変)
  • たくさん表示したい場合は、例えば、数件だけカルーセル表示
  • 「続きの情報(more..)」はWebへのリンクを貼ってWebサイトへ誘導
  • 結果として LINE から別アプリへ遷移することになるが、シームレスにブラウザに遷移するのでユーザ体験的には問題ないかも

実際にビジネスとして使用されている LINEBot の例

応援navi

  • 今回登壇された 竹原さん からの紹介
  • ランナーに LINE 上で直接メッセージを送ることができる
  • LINE 上でゼッケン番号を入力することでランナーを紐づけ
  • 走ってる最中に応援メッセージ届いたら絶対うれしい

runnet.jp

WazzUp!

  • CRM としての利用
  • 商品購入への導線
  • Android/iPhone 専用アプリではなく、LINE上で完結させることができるのは大きい

wazzup.me

LINEで順番待ち

  • LINE上で整理券、待ち時間を通知で教えてくれる

junbanmachi.jp

LINE BOT AWARDS エントリ作品

  • 「&HAND」のアイデア素敵すぎる
  • 自分もエントリしましたが、惜しくも1000万円逃しました←

linecorp.com

そのほかいろいろ

BOT を使いたいシチュエーション

  • 「通知からの導線」シチュエーションはいいかも
  • たとえば予約していた美容室から「明日 10時」というリマインダが届いた場合
    • 行けないからキャンセルしなきゃ → 電話をかける(めんどくさい)
    • 通知からそのまま予約キャンセル(便利)

ビーコン設定が 初期設定 OFF つらい

  • これが 初期ON になると革命的に便利になる
  • 設定画面の階層深いのでユーザに ON にしてもらうハードル高いよね

Bot のショーケース

  • 作成した Bot は申請したら載せてもらえるかも

LINE developers community | Bot Directory

皆さんと話しこみすぎて、お寿司あまり食べれなかった。悲しい。

登壇者の皆様、お疲れさまでした!

Android で 中洲ジャズアプリ(非公式) を勝手に作ってみました

福岡の中洲で毎年開催されているジャズフェス、中洲ジャズの非公式版クライアントアプリを勝手に作ってみました。

play.google.com

どんなアプリ?

全体のタイムスケジュールが見やすい!

まず、公式サイトでは 「誰と誰の演奏がかぶっているか」 がちょっとわかりづらいです。ステージごとのスケジュールはわかりますが・・

nakasujazz.net

本アプリでは、

  • 同じ時間帯に
  • 各ステージで
  • 誰の演奏があっているか

が、 横ならび で見れます!一目でわかります!!(誇張)

近くのコンビニの場所がわかる!

中洲ジャズは路上での無料イベント。ビール片手に歩きながら音楽を聴けるとか最高ですよね。ビール飲むとお手洗いも近くなりますよね。

  • ビールが買える場所
  • おつまみも買える場所
  • お手洗いがある場所

そう、コンビニ です。載せてます!

ジャズスポット載せてます!

ふだんあまり聴けないジャズの生演奏。最高ですよね。もっと聴いてみたくないですか?

  • お酒飲みながら
  • ジャズが聴ける
  • しかも至近距離で

そう、ジャズバー です。載せてます!

中洲近辺にはいくつかそんなお店があります。これを機会に足を運んでみてはいかがでしょうか?

なぜ作ったのか?

公式サイトのタイムスケジュールがよくわからない

上のほうにも書いたのですが、公式サイトの各アーティストのタイムスケジュール。これが自分にはなかなか見づらくて。

自分が知りたい観点は

  • 各ステージで誰が演奏なのか?
  • おなじ時間帯に誰のライブがあっているのか?

これを何とか見やすくできないものか?と考えたのがきっかけです。公式サイトだと 前者 はわかるけど 後者 は・・という感じでした。聴きたいアーティストたくさんなので、効率よくまわらないといけないミッションがあるのです!

オフラインで情報を見たい

毎年恒例なのですが、開催期間中にサーバーがよく落ちます。。イベント当日にタイムスケジュールが見れないのはつらい。。自分のまわりでは、公式サイトのタイムスケジュールをキャプチャしたり画像保存して見てる人が多いです。

地元ミュージシャンの応援

自分の周りの友人たちから「生演奏が聴きたい」と話によくあがるのだけど、実は福岡でもたくさん聴ける場所あるし、今回もこんなにたくさんすごい地元ミュージシャンが演奏しているんだぜ、的なところを少しでも伝えれたらいいなーなんて。公式サイトの情報だと、演奏している方が「地元」の方なのかどこの方なのか一目でわからないのです。

自己スキルアップ

プログラマとしての話になるのですが、実は最近 Android アプリを実案件で作っていなかったので技術的に不安を感じていました。Android は、以前は OS のソースを読んでたくらい大好きな技術。最近は情報は追ってるけども「実際に使って試行錯誤する」というフェーズをほとんどできてない状態。アプリをしっかり作れば知見もたまるし一石二鳥かな、という点。

よかったこ

ひとまずリリースできた

最低限の機能を実装して最後までリリースできた、これは本当によかったです。公式サイトそのままよりは「少しだけ」見やすいものができた気がしてます。ひとまず目標達成。

Android の技術再確認

よく見る構成のアプリを「今の」「スタンダード技術」で 「丸ごと作成する勘所」はある程度身についたかなーと感じています。これで Android 老害な自分から少しは脱出できたかもしれませんw

よくなかったこ

ノリだけでプログラムファースト

「とにかくコード書きたい!作りたい!」が先行してしまい。プログラムファーストで進めた結果、UI 部分で何度も手戻りが発生してしまいました。時間が少ない時こそ、先にUIプロトタイピングツール等を使って先に検討したほうがよかったのかなーなんて思います。

\カラフル!/

\唐突な CardView !/

\迷走しだした!/

次回やりたいこと

ミュージシャン情報をもっと前面に表現したい

本当は地元ミュージシャンの特設ページ等を作りたかったのです。直接インタビューしたメッセージだったり、写真だったり。ミュージシャンのみなさま、来年はなにとぞご協力よろしくお願いいたします!!

地元の生演奏スポットへの誘導

中洲ジャズに行かれた方は、ジャズの生演奏を聴いて気持ちが高揚していると思うので、「ジャズバーや生演奏のお店に行ってみたい」という気持ちを後押しするような何かしらの導線を作りこみたかったです。

もっと見やすくしたい

正直まだまだ見にくいです。「どうせなら全ステージを同時に俯瞰したい」と友人からも意見をいただき。情報量を整理してうまいことできないかなーって思ってます。

モバイルサイトにすればいいのに

聞こえません。その話題には触れません。

アプリ作りの参考にしたもの

DroidKaigi 2017 official Android app

Android の技術イベント DroidKaigi の公式アプリです。アプリ内のパーツや作りは参考にさせていただいた部分が多いです。ソースの中身、非常に勉強になりました。Android オールスターズの集合知、すごい。 github.com

Material Design

UI、デザイン知識がほぼ皆無なので、色や各パーツの配置等はなるべくマテリアルデザインの原則に基づくように作ってみました。 material.io

最後に

実案件ではいくつかリリースしてるものがあるのですが、個人でアプリ作成してリリースしたのは今回初でした。副産物として、各種データのスクレイピングツールなどもできました。いまの実業務ではあまり使わないようなスキルが芋づる式に必要になってくるので、刺激も多くてやってて本当に面白かったです。エンジニアとしてチャレンジしてよかったなー、来年はもっと「ユーザ目線で」「実用的な」ものを作れたらなーって思ってます。

リリース後

いろんな方からアドバイスいただいたのですが、イベント当日までの期間が迫っており、すべてを対応することができませんでした。もっと早くから開発スタートしていればできたのに・・エンジニアとして悔しい気持ちです。特に @konifar さん、@fkm さん、@yuki930 さんに感謝。ありがとうございました。今後のアプリづくりと来年の中洲ジャズアプリに活かします!

LINE 上で福岡のジャズライブを検索できるサービス(LINE BOT) を 10ヶ月 運用して思うこと (ライブ情報の収集)

daichan4649.hatenablog.jp

jazzspot-fukuoka が配信している「ライブ情報」。これはどこかにまとまっているものを単純に出しているわけではなく、管理人が自力で 収集したデータをもとに配信しています。

今回はどうやってこれを実現しているかを書いてみます。本当はすべてシステム化して ドヤァ したかったのですけど、基本的に多少強引気味な気合運用してます。なにかしらの参考になれば幸いです。

ライブ情報の種類と取得難易度

現在対応している店舗は 9店舗。実は店舗ごとに配信方法がさまざまなんです。これにすべて対応しなくてはなりません。最初はさてどうしたものか・・と頭を抱えました。みんな同じだったら楽なのですが、そうもいかない。

難易度順 に羅列するとこんな感じです。

更新タイミングは 月初・月末・毎週末 の3回を基本的に行っています。まだ店舗数が少ないので何とか対応できてます。

それでは、実際どのように取得しているかを 難易度 ごとに書いてみます。

難易度 低

Google Calendar

Google Calendar API でそのまま取得してます。うれしい!神!!リアルタイム更新もできるし、更新も楽。すべての店舗が Google Calendar で情報配信してくれると本当にうれしいです。。

developers.google.com

REST API

対象のサイトはもともと REST API 対応されていませんでした。サイト管理者が同業者だったので(笑)、お願いしていい感じで取れるようにしてもらいました。感謝。API たたいて JSON 処理するだけなのでこれも楽でした。

backstage.fukuoka.jp

難易度 中

スクレイピング その1 (Jsoup)

対象のサイトは table タグで構成されている手作り系サイトでしたが、正規表現頑張るだけでいけました。サイトの構成が大幅に変わるとキケンだけど、大幅リニューアルはしばらくないだろう。。と考えて決行。

qiita.com

スクレイピング その2 (spreadsheet)

なんとなく IMPORTXML 関数が面白かったので勉強がてらやってみました。おかげで簡単な HTML なら spreadsheet のみでスクレイピング楽勝。いい知見。

qiita.com

実際の spreadsheet (管理画面もどき) では、こんな処理を実装してます。

難易度 高

人力入力

気合です。フリーフォーマットなテキスト情報は、マスターの文字入力の癖によってスクレイピング失敗する可能性が高い。というわけで、念のため目視確認しながら人力でやってます。まだ対象のお店が少ない (4店舗) からいいのですけど、

  • 対応店舗数が増える
  • 情報更新頻度が高くなる
  • 情報量が多くなる

となってくると、ひとりで更新するのはもう無理かな・・と限界感じてます。

収集方法の今後

自動取得が不可なサイトについては「各店舗のマスターに 直談判&レクチャー してすべて Google Calendar 化する」が実現できたらいちばん嬉しいです。すべてのサイトがこれであればもっと嬉しいですね。

が、ジャズ関係の店舗のマスター様は年配の方が多いこともあるし、個人的には「IT を押し付けたくない」という思いもあります。Google Calendar の UI はわかりにくい部分もあるし。。もっとわかりやすい便利な管理画面を作成して使っていただくことも検討しています。さてどうしたものか・・

同じようなことをされてる方、運用アイデアをいただければ嬉しいです。