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

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

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

福岡の中洲で毎年開催されているジャズフェス 「中洲ジャズ」。その非公式アプリを今年も勝手に作ってみました。

今年は初めての iOS アプリに挑戦したので、今回はそのあたりを中心にまとめてみます。これから作る方にとって何かの目安になれば幸いです。

こんなアプリ作りました

公式サイトは当日になるとアクセス爆発でダウンすることが多いです(今年も落ちました)。

当日スケジュールが見れないと非常に困るので、「オフラインで見れるスケジュール」 をコンセプトとして作成しました。

goo.gl goo.gl

スケジュールを横断的に見れます

「同じ時間帯に」「誰のステージがかぶってる」 が公式サイトの情報では非常にわかりづらいです。表形式で一覧表示することで、ステージ全体を横断的に見れるようにしました。

近隣のコンビニ載せてます

野外フェスなのでお酒などを飲みながら歩いてまわることが多いです。トイレにも行きたくなりますよね。そんなときに便利な神施設、「コンビニ」 の情報載せてます。

近隣のジャズバー載せてます

ジャズというジャンルに興味をもつ方も多いかと思います。そんな方のために、中洲近隣のジャズバー情報を載せてます。

リリースまでの流れ

イベントまでの直前2週間を、自分の所感をこめて時系列にまとめてみます。

スケジュール正式公開 (8/31)

  • 公式サイトでスケジュールが公開される
  • 自作ツールで表示用 JSON 作成 (SpreadSheet+GAS)
  • 土日で最後の作りこみ+最終動作確認

Developer 登録 (9/2 22:00)

  • このタイミングで Developer 登録してないことに気づく(!)
  • 登録してたつもりだったけど、途中でやめてた
  • 登録しなくてもローカルでは問題なく開発できてた
  • 課金して登録手続き完了
  • 登録完了通知が来るまではリリース作業進められない
  • 登録完了通知メールが届く (9/3 16:00)
  • 意外と時間がかかるのでこれは早めにやるべき

初アップロード (9/4 1:30)

  • 手順がわからず、かなり時間かかった
  • Archive+Validate+Upload のループ
  • 主に 画像、バージョン番号問題
  • アプリアイコンにはアルファ値含んではいけない

不安になる (9/4 夜)

  • 夜になっても何の連絡も動きもない
  • 裁きがなかなか行われないことが不安になる
  • 平均レビュー待ち時間 が「9 days」になっていることに気づく
  • 9日後はイベント前日。これはやばい。

特急申請 提出 (9/4 23:30)

  • @konifar さんのブログ で「特急申請 (expedited review)」というものがあると知る
  • 英語でお願いするのでなかなかハードル高いが、、懇願することを決意

konifar.hatenablog.com

ちなみに自分が送った文章はこんな感じ。英語がひどい。よく伝わったなと思う。

9/14に開催される中洲ジャズイベント用アプリ作った。9/12までにレビューを終わらせてほしい。このイベントはボランティアベースで運営されている。自分も協力したいから何とかしてリリースしたい。iPhoneイベント忙しいだろうけどなんとかしてー

Dear person in charge.

There is a Jazz Festival called "Nakasu Jazz" in Japan. This application is for viewing the time schedule of this event.

This event starts at September 14. So, I would you like to finish the review phase by September 12.

This event is operated by volunteers. I created this application because I thought "I also want to cooperate". 

For this reason, I absolutely want to publish this application. I think you are too busy at the iPhone event in September, 

I hope this request will be under reviewing soon.

Sincerely.

特急申請 受領 (9/5 2:30)

  • ステータスが「In Review」に
  • 裁きを待つ

v1.0 公開 (9/5 2:45)

  • リジェクトなし (!)
  • ステータス「Ready for Sale」

特急申請についてはこんなメールが来てました。

Thank you for contacting App Store Review to request an expedited review.

At this time, your app is "Ready for Sale", and will be available on the App Store shortly, unless you have specified a release date or your app is pending your release.

Please visit App Store Connect for additional information. 

Best regards, 
App Store Review

あと、App Store で検索してもなかなか出てこなかったです。最終的にはこの日の夕方くらいに反映されました。

v1.1 アップデート申請

  • 提出 (9/7 1:00)
  • ステータス「In Review」(9/7 23:30)
  • 公開 (9/8 9:00)
  • 特にメールで連絡なかった

v1.2 アップデート申請

  • 提出 (9/8 21:00)
  • ステータス「In Review」(9/10 4:00)

v1.2 リジェクト

「位置情報取得する理由を書かないとダメー」とのことです。

修正前

修正後

レビュー担当の方がわざわざスクショまで送ってくれました。ここまでしてくれるのかーとびっくり。

ただ、この点については、最初の申請時点から何も変わっていないのになぜこの時点でチェックされたのかがいまだに謎です。

v1.2 アップデート再申請

  • 提出 (9/11 1:00)
  • ステータス「In Review」(9/12 9:00)
  • 公開 (9/13 9:00)
  • こちらも特にメールで連絡なかった

というわけで、特急申請を提出したらなんだかあっさりと公開されてしまいました。久々に冷や汗。

さて、ここからはポエムです。

よかったこと

リリースできた

いちばんは 「初の iOS アプリをなんとかリリースできたこと」 です。これでネイティブアプリ 両 OS リリースの実績ができて個人的に満たされました (メンタル)。

iOS アプリ開発の勘所がわかった(気がする)

  • どこが地雷なのか
  • どこが苦労しそうのか
  • どうすれば開発が楽になるか

あえてフルスクラッチで作ったので、特にこのあたりは試行錯誤できました。

苦労したこと

ツール

初めての Swift コーディング自体はそんなに苦労はないのですが、、とにかく Storyboard。

  • UI での手順をおぼえていないと同じ設定ができない
  • あとから git diff 見ても何の設定をしたかわからない
  • そもそも何をどう変えていいのかわからない

UI メインで開発することに慣れていない、コードしか信じていない自分にとってこれは本当につらかったです。「Storyboard の使い方、運用方法」 については有識者にレクチャーしてもらいつつ・・な開発ができたら工数だいぶ削減できたなーと思います。定石がわからない状態での手探り、辛かったです。

情報に踊らされた

すべて自分のせいなのですが、、こんな感じでした。(ここでも Storyboard を使いこなせかったグチ)

  • 書籍とネットの情報を試しまくったが本当にさまざま
  • 選択肢が複数あるときにどれが最適なのか、開発経験がないので判断できない
  • たとえば「どこまでを Storyboard、どこからが コード、はたまた全部コード」 など

よく言われることですけど、実際に自分の手を動かして、苦労して、試行錯誤して、経験してみないとわからんことが多かったです。「脳内ではもう完成してる」と「実際に作って完成した」はぜんぜん違うなーと感じました。

リリース手順

リジェクトされてもいいからとりあえず早めに一度リリース作業しておけば安心だったかなと思います。自分にとっては普段やらない作業のオンパレードだったので、わけがわからず、非常に厄介で時間がかかりました。

作り終わっていろいろ

今年も公式サイト落ちた

  • 午前中にはもう落ちてた
  • 落ちたとたん、アプリインストール数が跳ねあがった

アドバイスや意見をたくさんいただいた

プレスリリース出してみた

  • 採用されなかった
  • Webニュース系サイトのみ(10社ほど)
  • 出すのが遅すぎた感
  • 紙媒体へのプレスリリースも挑戦したかった

そのほか

  • 見ず知らずの方が会場で使っているのを目撃できた
  • あんみつ姫のURLが okama.com だったことに衝撃
  • 路上で全方位を人に囲まれて歌うのは最高だった!(アプリ関係なし)

最後に

自分のアプリが AppStore、GooglePlay で表示されるとやっぱり感動します。。

ダウンロードしてくださった皆さま、協力してくださった皆さま、本当にありがとうございました。それではまた来年!!

GooglePlayAppStore

参考

daichan4649.hatenablog.jp

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

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

ざっくり所感

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

診断結果

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

学習欲

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

収集心

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

個別化

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

調和性

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

ポジティブ

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

診断結果から見るアドバイス

そして、最後に大量に出力されたレポート、アドバイスもたくさん書かれていて。ざっくりまとめると、

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

ここ数年、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 さんに感謝。ありがとうございました。今後のアプリづくりと来年の中洲ジャズアプリに活かします!