職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

吹き出し作成アプリ「突然の死」バージョン2.0リリース

_人人人人人人人人人人人_
>   突然の死 2.0   <
> 複数行テキスト対応 <
>   ㊗️リリース🎉   <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

こんな吹き出しをお手軽に作成するためのiOSアプリ「突然の死」のバージョン2.0をリリースしました。
このアプリには、次のような機能があります。

  • 簡単なコピー&ペースト
  • Twitterへ投稿(「設定」アプリでTwitterの設定をしている場合のみ)
  • その他、iOSがサポートしている様々なサービスへ投稿
  • 画像として出力
  • 余白などの設定
  • 履歴の記録

こうやって機能をリストアップすると昔のバージョンとは大きな違いはありませんが、バージョン2.0には重要なポイントがあります。それは「改行対応」です。

なぜ今まで改行に対応していなかったのか?

進捗ダメだったからというのは強ち間違いという訳でもありませんが、作ったUIに自分で満足していなかったから公開していなかった、というのが実際の背景です。
最近になって、自分の心の中で諦めの心が芽生えたことから、公開に踏み切りました。

改行対応の何が難しいのか?

「突然の死」の文字列処理が難しいなんてことはありません。開発対象プラットフォームにおける文字幅の取得方法さえわかれば、あとは基礎的なプログラミングと中学校で習う範囲の数学とをきちんと勉強している方であれば誰でも組める程度の文字列処理です。難しいのはUI設計の方です。

このアプリの一番大事なところは、画面が最も小さい端末*1であっても、以下の機能を備えている点です。

  • キーボード操作をしながら、リアルタイム描画*2のプレビューが見えること。
  • キーボードが表示されている状態であったとしても、文字入力以外の操作(余白の設定や、出力操作など)がキーボードに隠されていることに気づくことができること。言い換えれば、そういった操作のための要素が完全にはキーボードには隠されないこと。

見た目が超絶ダサかったとしても、これらの要件を満たしているだけで使い易いアプリになっているはずだと私は考えています。

さて、これらの要件を同時に満たそうとすると、キーボードに隠されることのない領域に、以下のものを全て詰め込む必要があります。

  • プレビュー表示領域
  • テキスト入力領域
  • オプション指定等の領域のうち、縦方向スワイプ操作を開始するのに十分な部分
  • あとは広告

1行だけのサポートのときは、プレビュー表示領域もテキスト入力領域も高さが固定だったので、特に何も考えずに詰め込むことができていました。あ、広告の枠と他のタップする要素とが隣接するようなUIはダメ*3です。ダメ。

f:id:t_motooka:20180925225719p:plain
version 1.2 リリース時のスクリーンショット

複数行の対応をするということは、プレビュー内容もテキスト入力領域も、多くの行を入力すれば高さが変わるのが自然です。もちろんそんなことをすれば、オプション指定等の領域がキーボードに隠れる状態になるリスクがあります。だから、今までそんなアプリはリリースしていませんでした。開発環境としては、branchは存在していたけれどもmergeしてはいないという状態でした。
でも、前回の1.3のリリースから2年弱が経過し、iPhone Xs 等の端末がリリースされ、いいかげんにバージョンアップしないとなーと思いつめた結果、「もういいや、沢山の行を入力する物好きな人はスクロールしながら使ってくれ」と諦めてリリースしたのが今回のバージョンです。

f:id:t_motooka:20180925225751p:plain
version 2.0 リリース時のスクリーンショット

スクリーンショットからだとわかりにくいですが、入力欄やプレビュー表示欄は、縦にスクロールしたりします。実際にインストールされた皆さんは、スクロールとフォントサイズ調整で、どうにかして問題から逃げようとしている様子が見て取れると思います。

まー、もっと良いUI部品の配置を思い付いたらそれ採用しますんで。


という舞台裏を紹介したところで、まだインストールしてない人は、ぜひどうぞ〜〜

突然の死

突然の死

  • Tadahisa Motooka
  • Utilities
  • Free
今後も使ってあげて下さいね。

*1:現時点では、iPhoneのみ対応のアプリをiPadで起動した状態の画面。かつてのiPhone3GSサイズ相当。

*2:ここでは、一般的な人間の体感としてのリアルタイムのこと。

*3:広告の誤タップを誘うから、ですね。