の20日目の記事です。必死で未来から書いています。
のようなものを作りました。たぶんこの辺にソースを置くと思います。バイナリはたぶんもうしばらくしたら配布するかもしれませんが、こんなツール使いたいと思う人があんまりいない気がするので、配布しないかもしれません。
ところで、Ask.fm という、どこからともなく質問がたくさんやってくる謎のサービスがあるのですが、このサイトが先日デザインをリニューアルしました。それはそれでいいのですが、大幅にリニューアルされてしまったせいで、僕にとっては大変使いづらくなってしまいました。
僕のアカウントには日ごろから結構たくさん質問をいただいていて、そのほぼすべてに「古い順に」回答を書いているのですが、これが非常に面倒くさい。
まずAsk.fmの質問一覧を表示させると、「最新」25件だけが表示されます。それより古い質問は、一番下までスクロールさせると自動的にリロードされて、末尾にアペンドされる形になります。質問が数百件たまっているときにこれをやろうとすると、まず一番古い質問を表示させるためにマウスのホイールを延々何十秒かくるくるし続けなければなりません。
そのあと質問にある「回答」ボタンをクリックすると、今度は回答画面に遷移します。回答画面に遷移して頑張って面白い回答をうんうん唸りながらタイプして、それから送信ボタンを押すと今度はまた質問一覧の画面に遷移します。そして質問一覧の画面に遷移するということは、当然また先ほどのよう何十秒かマウスをクリクリしなければならないわけです。一体自分は質問の回答をしているのか、マウスの耐久テストをしているのか、とでも言いたくなるほどに面倒極まるタスクの繰り返しで、Askを作っている人はこういう使い方で問題ないと考えているのか、あるいはこんなヘビーユーザーがいることを想定していないのか、はたまた質問はFIFOじゃなくてスタックで処理しろとおっしゃっているのか、いずれにせよ僕にはちょっとしっくりこない操作だったわけです。
そんなわけで僕のAskライフはとてもつらくなってしまいました。でも、変わらず質問を送ってくださる方はいらっしゃるので、それにお答えするのも使命ではあるなあと、重い腰を上げて使いやすいクライアントを作るかとなったわけです。そこで、せっかくだから、モチベを保つために、友利奈緒を導入することにしました。
というわけで、こんなツールができました。イラストは@yaplus氏が配布されているものを使わせていただいています。ライセンス的に問題があったらすみません。消します。
このあたりの詳細な手順も書き残しておこうと思うので、近いうちに詳しい記事を書こうと思います。
もう一つは、マルチスレッドコードが書けること。スレッドを立ててブロッキングで処理して、セマフォを使ってデータを受け渡しのようなコードがすっきり書けます。JavaScriptでは(ES6だとasync/awaitなどが入るようですが)コールバックが前提で、コードがわかりづらくなりやすいようですが、そういうのをまったく回避して、直接的なコードフローで見通しの良いコードが書けます。このアプリだと、質問を取得しているスレッドと、ユーザからの入力を待っているスレッドがあって、これらのスレッドがチャンネルを介して質問オブジェクトを受け渡ししています。
そういうわけで、久々にGUIアプリを書いてみたのですが、結構やってみると面白いものですね。なんかネタを探してもっと何か作りたくなってきました。あと記事遅くなって申し訳ありませんでした。