2021-08-28

起きなくてもいい目覚まし時計アプリを作った

すずめざまし (Sparrow-alarm)



なぜ、いまさら目覚まし時計アプリを作るのか

目覚まし時計アプリは、起きるため、目覚めるためのアプリばかり(あたりまえ)

そんな中で「起きなくてもいい目覚まし時計」があってもいいよねと思って作った


このアプリが提供する、決定的で新たな価値

指定した時刻になると雀がやさしくチュンチュン鳴く

それだけ!でもそれがいいところ


このアプリが思っていること

  • 身体を起こして活動を始めるときには爽やかな気分でいたい
  • 一気にではなく、だんだんと目が覚めることに楽しみと価値があるよね
  • 起きるのにけたたましい電子音はいらないんじゃないかな
  • 「イヤイヤ目覚めさせられる朝」から「気分良く目覚める朝」へ
  • 心地よく気分良い目覚めを楽しもう
  • 目覚めても止めなくていいアラームって新しいかも
  • 30分かけて…なんだったら60分かけて起きる、でいいんじゃないの
  • 雀の鳴き声に包まれながら、半寝半起のまどろみも楽しもう
  • 寝過ごしちゃってもいいじゃない


インストールはこちら




2018-05-24

いい感じの積ん読解消法をみつけた



技術書や小説を買った後、それをどう消化していくかってところで、 電子書籍の登場当時は専用端末で読んでいたんだけど、ページめくりのもっさり感や見開きで見れない、スマホとの2台持ちと利用時の持ち換えが億劫、自分のなかでは習慣的に充電する端末としての地位にのぼれなかった、などの理由で結局電池切れのまま放置している。

なので、スマホに電子書籍のリーダーアプリを入れて読むようにした。見開きの問題はあるものの、それ以外の問題は解決されスイスイ読める。ところがこの形にしてから読書の時間がぜんぜんとれず、積ん読がたまる一方なのよね。スマホには腐るほどコンテンツが詰まっており、しかもサクッと見れてしまうので、ついついそっちばかり見てしまう。電子書籍リーダーアプリを立ち上げて、じっくり読書するっていう気持ちにならない。しかも勉強のための読書だったりもするわけなので、読み始めるだけでも結構な意思力が必要だし、いざ読み始めても気が散りがちで長続きしない。TwitterのTL眺めたくなったりして。

こうして積ん読がたまっていくばかりではいけないと、習慣を変えることにした。
まず、紙の本を買うようにし、しかも持ち歩くときはカバンにしまわず、手に持って歩くようにした。そうすると何が嬉しいかというと、手がふさがって邪魔なので、早く本を消化しようと読み進めるようになる。また、手に持っているので、読み始めるハードルが非常に低い。1秒で読み始められる。本を読んでる間はスマホはポッケに入っているので気の散り具合も少ない。自分は電車の移動時間に本を読むんだけど、「本を手にしてるのに全然読まずにスマホをポチポチしてる姿」になんか格好悪さを感じるので、他人の目、見栄もモチベーションの一つとして利用して読み進める作戦だ。

これが結構うまくいっているので、引き続き続けていく所存でございます。

2018-02-09

おまえが弱いから怒られるのだという話をした



帰宅したら小2の息子が嫁にめっちゃ怒られてた。
話をきいてみると、
下校後は宿題ほったらかしで遊び呆け、
夜になって宿題のことを訊かれると「もう終わった」と嘘をついたということらしい。


  • やるべきことをやらない
  • 嘘をついて逃れようとする


とくに後者のほうはダメだろうという感じで怒られてて、
まあそうだなと思う。

息子は嫁にさんざん怒られてだいぶへこんでいる様子だったので、
ここはいっちょフォローする感じで、しかし言うことは言っとかないとな、みたいな姿勢で話をした。

---

いや〜今日は怒られて大変でしたね、おつかれさまでした。
ママの言い方はキツかったかも知れないけど、それだけ人を怒らせるような事だったってことだよ。
もう、充分わかってると思うから、あらためて怒ったりしないけど、代わりにひとつクイズでもやろっか。いいですか。いきますよ?
なんで自分が怒られたか、ホントの理由ってわかるかな?

「嘘をついたこと?」

正解!でも、もっと根本的な、根本的か… つまり根本的っていうのはこういう意味で(あれこれ説明した) 根本的な理由があるんだけど、それが何なのかが分かると100点です!なんでしょう?

「う〜ん、わかんない…」

答えはですね〜〜〜、それは、きみが弱いってことです。
弱いから、怒られたんです。
つよいやつは、怒られたりしないからな。
つよいって言っても、力が強いとか、ケンカが強いってことじゃないけどね。
立場とか、状況とか、状態とか、そーゆーところの意味ね。

よーするに、宿題をしないで遊んでる状態ってのは、弱いんだ。
スキだらけなんですよ。
遊んでないで宿題しなさい!って言われちゃうスキがあるってこと。
実際に言われたときも、言い返す武器がないか、あってもショボかったら、言われっぱなしで終わっちまうだろう。
それに、あ〜〜〜宿題やんなきゃな〜〜〜って、心のどっかで思いながら遊んでたくないじゃあないですか。

つまり、宿題を先に片付けたほうがいいっいうのは、まさにそういう理由なんですよ。
やるべきことだから、とか、 遊びよりも勉強とかのほうが大事だからとか、そんなんは全然違うわけ。

やるべきことをやってる人間、やるべきことを片付けた人間ってのは、つよいの。スキがないの。
つよくなるために、先に宿題をやる。
つよい状態で好きなことをしてたら誰も文句言ってこないし、
なんか言ってきたところで、言い返せるわけじゃないですか。
それは、たとえ相手が大人だとしても言えちゃうわけで、それは相当つよいってことよ。

たとえばさ、力とかさ、ケンカとかでさ、学校に体育の先生とかいるっしょ?
あした急にその先生に勝てるくらい強くはなんないじゃん?絶対。
あした急に強くなれるわけないじゃん?
でもさ、いまお話してるようなつよさはさ、明日から、今からだって、手に入るわけですよ。

弱いから怒られる。
でも、弱いからって、やっぱ怒られたくないっすよね。
そうすると、怒られないために何をするかっていうと、嘘をつくとか、そういうことをしなくちゃいけなくなってくるわけ。
といっても、嘘をついたって、宿題が終わってない状況は何もかわってないよね。
弱い状態のままなわけ。
んで、もし嘘がバレたりしたら、もっと弱い状態になっちゃうじゃん?
そしたら もっと弱いからもっと怒られる ってことに、フツーにまあ、そうなるわ。

嘘をつくってことは、自分は弱いです!って宣言してるのと同じわけ。自分に対してね。
それってすげえダセエだろう。 そんでさ、その嘘がみんなにバレてみ?
みんなに アイツ弱っ! って思われることを意味するわけで、
そんな状態で毎日ガッコ行っても楽しくなくなりますよ。そしたらもうえらい事ですよ。

明日からつよくなれるように頑張れるかな?
きみにそうなれる力があるのは分かってるし、そこは信じてるから心配はしてない、大丈夫です。
じゃ、お話、おしまい!お水のんで、トイレ行って、お布団いっといで〜。おやすみ〜

---

てきな感じで、最近ドラゴンボールのコミックにハマっている息子に、「つよさ」を例に挙げてお話をしてみた。
もうすこし深い話に掘っていけるトピックだとおもうけど、それは年齢とか、も少し上になったらでいいかな そのうち機会もあるだろう

しかし桃白白いいキャラだわ

2018-02-05

Kotlinへの移行と習得がスムーズすぎて感動した


Hello, World! しても楽しくなくない?

なので、ストアにリリースするAndroidアプリをKotlinで書きたい!と思いつつも、
現在作成中のアプリはJavaで書かれており、これをリリースしたら、次のアプリはKotlinで書こう!と思っていた。
そんなとき、たまたまAndroid Studioのメニューに神機能を見つけた。

Convert Java File to Kotlin File

任意のJavaファイルを開いている状態で
Code > Convert Java File to Kotlin File を選択すると、該当のJavaファイルがKotlinファイルに変換される。



このファイルをKotlin変換した結果、修正しなきゃいけない箇所がでてくるけど、
そういうのも探して修正しとく? と訊かれるので、OKを選択。

これだけだ。

何が嬉しいのか?

既存プロジェクト、既存コードに対して変換をかけてKotlinファイルを生成していけるので、ゼロから始めるのに比べて、以下のようなハッピーがある。

  • Kotlinを始めようと思ってHello, World! を試してみたものの、それ以降「enjoy Kotlin!」と放り出されて途方に暮れることがない。スタート地点から四苦八苦してゴールに向かうのではなく、ゴール地点からルートを振り返るカンジ
  • 生成されたkotlinのコードがどのように動作するのか、自分がいちばん仕様を知っているので、コード、処理の流れがとても読みやすい。
  • Javaで書いてたあの処理、あの記法は、Kotlinではどう書くのか?と、答えを探し求めてさまよう必要がない。とくに記号系のシンタックスは検索しづらいのでこれは大変助かる。
  • 「動作する自分のアプリ」が手元にあって、ちょっとコードをいじってみてアプリの挙動を確かめる、ということができ、頭に入ってきやすい
  • どう書いたらいいのか、ドキュメントやリファレンスではなく手元の既存コードを参考にしながら書いていける

大体のコードはKotlin変換そのままで動作するが、一部うまくいかない部分もある。
とはいえ、それもKotlinの流儀を学ぶのにちょうどいい量だし、腰を据えて問題解決に取り組むことで、深く理解するいいきっかけになる。
どうしても解決できなかったら、そこだけJavaのままにしておくことももちろん可能だ。
KotlinからJavaのメソッドを呼ぶのも、JavaからKotlinのメソッドを呼ぶのも可能なので困ることはない。
(JavaのクラスやインターフェースをKotlinでextend, implementしたり、その逆もできる)

Utilクラスから始めよう、そして成果物

アプリ全体のコードをKotlin化するのに気が引けるのなら、まずは、みんな大好きStringUtilあたりから変換してみることをおすすめする。

動くコードとともにKotlinに馴染んでいき、
Kotlinの作法とかもわかってきたタイミングで体系的に学ぶのが習得の近道だと思う。

Java → Kotlin 変換 そのあとに。

このようにして作ったアプリを先日リリースしたので、最後に紹介。
子供の頃に20x20のインド九九をマスターすると色々捗るし、大人にとっては格好の脳トレになるな〜という動機から。





なにとぞひとつmm

2017-03-14

なぜスマホアプリに強制アップデートが必要なのか


ゲーム系に多いが、アプリによっては、強制アップデートの機能を持っているものがある。ネットゲームは皆が同じ条件でプレイしなければゲームバランスが崩れてしまうので、当然必要な機能の一つだ。

自分は、ネットゲームかどうかによらず、スマホアプリには強制アップデート機能があってよいと思っている。あるべきだと思っている。
よく言われるメリットは次のようなものだけど、それが理由ではない。
 
  • アプリにバグがあったときに確実に修正版を使わせることができる。
  • 古いOSバージョンの端末に対応するための実装やテストに時間を割かなくてよい。
  • アプリバージョン毎に異なるAPIバージョンやサーバリソースにアクセスするような場合、サーバ側のコードやリソースの管理が楽になる。

使い慣れた旧バージョンにとどまりたいユーザが間違いなく存在するのに、なぜ強制アップデートを課すのか。それは、最新バージョンのアプリこそが、ユーザにとって最も価値のあるアプリの姿だと信じているからだ。

アップデートを不満に思って離れていくユーザもいるかもしれない。
でも、全員を幸せにできるアプリは存在しないし、そうあろうとするアプリは誰も幸せにできはしない。 それに、本当に欲しいユーザは、アプリやサービスの信念、哲学に共感して使ってくれるロイヤルカスタマー、ロイヤルユーザだ。

これは、ユーザを置いてきぼりにしてもいいんだって話じゃなくて、むしろユーザの声を聞くためのアプローチだ。

いくらユーザにとって価値のある(と信じている)ものを作っても、それを使ってないユーザの声は聞くことはできない。 常に最新版を使ってもらい、ユーザの声に耳を傾け、でも表面的に、盲目的に機能を増やすんじゃなくて「ユーザにとって本当に価値のあるもの」の分析をしつつアプリを育てることこそが、本当にユーザのハッピーを最大化するのだと信じている。

だからこそ、積極的に強制アップデートをすべきだと思う。




2017-02-28

最強の英語勉強法は、目標を立てないことだ。



みんなは英語の勉強をどんなふうにやってるんだろうか?

プログラマ(not PG)であれば、社内公用語が英語だなんて話にかかわらず、
もはや英語は必須だ。
自分も前回の記事に書いたとおり、継続的に英語に取り組んでいる。

なんで英語の勉強って挫折しやすいんだろう?~そして理由1へ

継続的に英語に取り組むために、考えるべきことがある。
それは、挫折する理由だ。かつての数度の挫折を振り返りつつ考えてみた。
理由のひとつとして、とりあえず勉強を始めてみるんだけど、少し経つとすぐに
「参考書や問題集とか解いてるけど、これ、自分、英語力あがってんのかな?っていう心配がつきまとう」ってのがある。
その不安プラス成果を感じられない期間が続くとすぐに、やる気はどこかへ去ってしまう。

達成具合を計測できる目標をたてればいいんじゃないか?~そして理由2へ

だから、闇雲にやるのではなく、目標と計測が大事になってくる。
とはいえ自然言語における目標って計測が結構難しくて、たとえば「ネイティブと日常会話が出来る」って目標に対する達成具合をどう計測したものかって問題がある。

ありがちな計測可能な目標として、TOEIC600点とるぞとか目標をたてて、そこへ向かってやっていく方法があるんだけど、これだって結構長い道のりで、
達成に至るまでの地道さ、退屈さ、面倒さに耐えられずやめてしまいがちだ。
ちょっと考えるだけでもだいぶ辛いものがある。
  • TOEICの試験(達成のチャンス)が毎日あるわけじゃない。
  • 受験は1日がかり。
  • 受験前夜、当日は寝過ごさないよう気を張っていなくてはならない。
  • 受験会場まで足を運ばなくちゃならない。
  • 会場に着いたら着いたで試験官に「おいお前ら不正すんじゃねえぞ」ってクギをさされたりして。
  • 受験は休日返上。
  • TOEIC攻略のための勉強が必要だったりする。(手段と目標の逆転) 
  • 受験費用もばかにならない。
  • そこまでしても達成できるかどうかは保証されていない!
こういった面倒さ、報われなさも継続の敵であり、充分に投げ出す理由になりうる。
目標に到達するまで耐えてしのんで、ようやく花が咲く、かもしれない。
要するに、webサービスでいうと「大きく作ってドカンとリリース」をやってるのに近い。

なんでもいいから小さな達成を重ねよう。英語力の向上なんて目標は不要だ。

英語力の向上が目標でないって、意味ないじゃん!そう思うひとも多数いると思う。
だけど、英語力の向上を目標としない。それでいいんだ。だからこそいいんだ。
1年以内に英語の資格をとるぞ、とかいうなら話は別だけど。

最強の学習法は、続けることそれ自体だと思う。
つねに英語が生活の一部として自然に取り込まれている、ライフスタイルそのものが最強の学習法だと思う。
我々がいつの間にか日本語を習得したように、英語を頭でなく体になじませていく。

そうすると、考えるべきは
「いかに英語と共にある毎日を設計できるか」
ってことになる。
毎日だ。
毎日やろうと思ったら、歩幅はとことん小さくしておかなくてはならない。
  • 英語ドキュメントの一節を和訳して公開する
  • 海外の有名人のtwitterを一件でも和訳して公開する
とか、なんだっていいけど、公開することを心がけよう。
他人に見られるという事実は、当事者意識と、体への染み込み具合に大きく影響するからだ。

単語を100件追加するたびにリリースする。

どうしたら英語が日常の一部になるかを考えたすえに、先日、Androidの英単語アプリをリリースした。 (Usagi 英単語
だけど、これ自体は目標ではない。
なぜこのアプリを作ったか。それは、アプリの単語数を充実させるために、毎日単語データを作成する必要性を作りたかったからだ。

この記事を書いている時点では単語数は1200であり、英単語アプリとしては全然少ない方だ。そのおかげで、毎日20〜30件ほどのデータを作成するのが日課になっている。
この生活習慣の何が嬉しいかというと、
みんなに新しい単語を届けるためにアプリの単語データを充実させること自体が、
副効果として自分の英語の勉強になっているという点だ。
リリースサイクルは、だいたい1週間ほど。単語が100件たまったら、いくつかのバグフィクスや機能改善とともにリリースするという形だ。

単語が100件たまったらリリースする。小さく作って、こまめにリリースだ。
この方式のいいところは、
  • 達成条件が明確。
  • 達成の難易度がとても低い。
  • 短期間で達成できる。
と、挫折しようもない短距離走であるところだ。
正確には挫折パターンとして日々の単語データ作成をサボってしまうことが考えられるが、
そもそもタスクが明確すぎる&簡単すぎる&短期間なので、モチベーションに関係なくできてしまう。
いまでは単語データ作成、リリース前のテスト、日常的なドッグフーディングで自らも1ユーザとしてアプリを使用し、その中でアプリの課題発見をしつつ英語に触れ続ける習慣ができあがっている。今後も途切れることはないだろう。

受験勉強や試験勉強ではこうはいかないが、一つのやり方として参考になれば幸いだ。


Usagi 英単語


2016-12-17

英単語の4択問題に学習効果なし スマホUXの話を添えて

最近また英単語の学習を始めた。
過去数回、手を出しては飽きての繰り返しだったけど、
今回は本気だ。

で、なんか英単語の学習アプリ入れようと思って
いろいろなアプリを試してしてきたんだけど、なかなかグッとくるものが少ない。なかなか学習効果がでない。なんでだろうなと思って考えてみると、次の3点の理由が見えてきた。

4択問題は、英単語と意味を関連づけられない。

あなたは、次の4択問題に答えられるだろうか?

articulateの意味は?
A. 連結式の
B. 人工物
C. はっきりと話す
D. つり上げる

正解はC。なかなか難しい単語だ。
でも、何度かこの問題に出会うと、いつしか単語ではなく選択肢だけを見ても、
なんか C が正解だったような…?というのがわかってしまう

その瞬間、もはやarticulateという単語とその意味の結びつきには意識がいっていない。
それでなにが困るかっていうと、

I can't articulate about the problem.

とか、実際の英文で英単語をみたとき、意味を思い出せないことがけっこう多い。
アプリでは正解しまくっている単語なのにだ
選択肢があればわかるのに…では意味がない。

アプリ起動時のたった数秒の待ち時間で、モチベーションは恐ろしいほど下がる。

多くのアプリでは、学習開始までにけっこう時間がかかっていることに気がついた。

起動画面

ホーム画面

学習コースを選択

学習開始

ここにお知らせ画面やダイアログなどが挟まるケースもあり、
実際に学習を開始できるまでには起動から数秒 〜 ゲーム系に至っては30秒ほどもかかることさえある。

この時間を待てるかどうかは個人によるだろうけど、
自分の場合、時間潰しや楽しみのためのアプリであれば、待てる。
でも、勉強しようという、必要に迫られて…の要素が混じった気持ちでは、待てない。

なぜなら、スマホの中はコンテンツで溢れかえっている。にもかかわらず学習のためのアプリを起動しようという気持ちは、レアで瞬間的なものだからだ。
機を逃したらあっという間に冷めていってしまう。

意味はひとつじゃない

そんなわけで、4択問題式じゃなく、なおかつ起動1秒で学習を始められるアプリが必要なんだけど、実はもう一個注文がある。
大体のアプリでは、英単語と和訳が1:1なのだ。
「culture」 だったら、「文化」という和訳しか表示されなかったりする。だけど、cultureには「栽培」という意味もあって、そーゆー意味もおさえたい。

以上の要望を満たしてくれるアプリが見つからない、ならば作ればいいということで、シンプルなアプリをリリースした。

Usagi 英単語 

https://play.google.com/store/apps/details?id=tec.hie.la.usagi
https://play.google.com/store/apps/details?id=tec.hie.la.usagi

アプリ自体の使い方を学ぶことが必要なUIは、ユーザに優しくない
出来る限りシンプルであることを目指して作ったので、メニューも最低限だ。
やる気の瞬間を逃さないように、起動してすぐに学習を始められるサクサクアプリであり、少なくとも自分自身はヘビーユーザになれる作り。
(単語の発音もしてくれるし)

ここに書かれていない開発の動機もあり、それはまた次回書こうと思う。
では!


 

https://play.google.com/store/apps/details?id=tec.hie.la.usagi



https://play.google.com/store/apps/details?id=tec.hie.la.usagi

https://play.google.com/store/apps/details?id=tec.hie.la.usagi