定型文キーボード「PhraseBoard」を v1.2 にアップデートしました。今回の目玉は、定型文の一部を状況に応じて書き換えられる「変数」と、その値を計算・更新できる「関数」の追加です。これまでの「定数」は登録した固定の値を呼び出すだけでしたが、v1.2では連番を自動で増やしたり、金額を計算したり、文字列を組み合わせたりと、使うたびに内容が変わる定型文を作れるようになりました。

この記事では、v1.2で追加した「変数」と「関数」がどのようなものか、連番の自動採番や金額計算といった具体的な使い方、キーボード側からの操作方法、そして関数の実行にフルアクセスが必要な理由まで、実装時に考えたことも交えて紹介します。既存の「定数」やそのほかの機能はこれまで通り使えるので、変数・関数を使わなくてもPhraseBoardはこれまでと変わらず利用できます。

定型文キーボード PhraseBoard v1.2 アップデート、変数と関数の追加を紹介するバナー画像

目次

PhraseBoardとは

PhraseBoardは、よく使う定型文を親アプリで管理し、iOSのカスタムキーボードからワンタップで入力できるアプリです。フリマの取引連絡やビジネスメールの返信など、繰り返し入力する文章をあらかじめ登録しておくことで、毎回同じ文章を打ち直す手間をなくせます。

v1.2で追加した「変数」と「関数」

v1.2で追加したのは、次の2つの機能です。

  • 変数:使うたびに値が変わる、または後から書き換えられる値を保持できる仕組み
  • 関数:変数の値を計算・更新するための処理

これまでPhraseBoardには「定数」があり、{{名前}}{{会社名}} のように登録済みの固定値を定型文へ呼び出すことができました。変数・関数はこの定数の考え方をさらに一歩進め、「使うたびに値が変化する」「計算してから入力する」といった、より柔軟な定型文を作れるようにするための機能です。

「変数」とは?定数との違いと2種類の変数

定数との違い

これまでの「定数」は、名前や会社名など繰り返し使う固定の値を登録しておくための機能でした。v1.2で追加した「変数」は、後から値が変化することを前提にしたデータとして扱える点が異なります。

例えば「連番」という変数に 100 を設定しておくと、定型文に 管理番号:{{連番}} と書いた場合、その時点の値である「管理番号:100」として入力されます。

文字変数と数値変数

変数には「文字変数」と「数値変数」の2種類があります。文字変数は商品名や状態、メモなどの文字列を、数値変数は連番や数量、金額などの数値を保持します。定型文への埋め込み方は定数と同じく {{変数名}} という形です。

「関数」で変数の値を書き換える仕組み

もうひとつの追加が「関数」です。関数は、変数の値を書き換えるための処理をあらかじめ登録しておく機能で、PhraseBoardではプログラミングのコードを書かずに設定できるようにしています。

関数を作成する際は、実行したい処理(例:{{連番}} = {{連番}} + 1)と、その結果として「返す変数」を選択するだけです。処理が終わった時点でのその変数の値が、関数を置いた位置にそのまま入力されます。returnのような記述は不要です。

関数は定型文の中に {{関数名()}} の形で埋め込み、定型文の左から順番に実行されます。同じ関数を複数回置いた場合もそれぞれ別々に実行されるため、例えば {{次の連番()}} を3つ並べれば、101・102・103のように1つずつ進んだ値がそれぞれの位置に入力されます。

具体例:連番を自動で増やす定型文

もっとも分かりやすい使い方が、連番の自動採番です。

関数側で {{連番}} = {{連番}} + 1 という処理を登録し、「返す変数」に「連番」を指定しておきます。定型文には 管理番号:{{次の連番()}} と書いておくだけで、使うたびに管理番号が101、102、103と自動で進んでいきます。

個人的には、今回の変数・関数機能の中でも一番分かりやすく使える場面だと感じています。

具体例:金額の計算や文字列の連結

数値変数では四則演算(+ - * /)と括弧を使った計算もできます。例えば「価格」と「個数」という数値変数から「合計」を求める場合、{{合計}} = {{価格}} * {{個数}} という関数を用意しておけば、価格500・個数3のときに合計1500を定型文へ入力できます。

文字変数では「+」を使って文字列を連結することもできます。例えば {{商品名}} = {{商品名}} + " 未使用" という関数を実行すると、商品名が「iPhone」から「iPhone 未使用」に更新されます。数値と文字列は明確に分けて扱うため、意図しない型変換は起こりません。

変数・関数を管理する新しい画面

「機能」画面に、これまでの定数管理に加えて「変数を管理」「関数を管理」の項目を追加しました。変数管理では文字変数・数値変数を切り替えて確認・編集でき、既存の定数管理とできるだけ操作感を揃えているため、これまでPhraseBoardを使っていた場合でも迷わず扱えるはずです。

定型文を書きながら未登録の変数を見つけられる

定型文を先に書いてから、あとで変数を登録する使い方にも対応しました。定型文の中に {{商品名}} {{価格}} {{連番}} のような記述をしておくと、変数追加画面にその名前が未登録の候補として一覧表示されます。候補をタップするとそのまま変数名として入力されるため、あとは値を設定するだけで登録が完了します。すでに登録済みの定数・変数や、関数呼び出しは候補から除外されます。

キーボードの「変数」カテゴリで値を確認・編集

ホーム画面の「表示カテゴリ」に「変数カテゴリを表示」を追加しました。オンにすると、キーボード上に固定の「変数」カテゴリが表示され、登録済みの文字変数・数値変数とその現在値をキーボードから直接確認できます。通常タップでは現在の値を入力し、タグ入力モードでは {{変数名}} を入力するという、既存の定数カテゴリと近い操作感にしています。

また、キーボード上の変数カテゴリで変数を長押しすると「編集」を選べるため、変数管理画面まで移動しなくても現在値をその場で変更できます。

長押しコピーと関数実行に必要なフルアクセス

PhraseBoardでは、キーボード上の定型文を長押しすると、入力欄へ挿入せずクリップボードへコピーできます。関数を含む定型文の場合も、コピー時に関数が実行されて完成した文章がコピーされ、「コピーしました / 関数を実行しました」と表示されるため、コピーしただけなのに変数が変わっていた、という分かりにくさが出ないようにしています。

通常の定型文入力や、定数・変数の読み取りはフルアクセスなしでも利用できます。一方、キーボードから関数を実行して変数の現在値を書き換える場合は、変数データの更新が必要になるためフルアクセスの許可が必要です。フルアクセスを許可していない場合でも、通常の定型文入力はこれまで通り利用できます。

そのほかの修正:iOS 27でのカテゴリ一覧表示の不具合

今回の開発中には、iOS 27でキーボードのカテゴリ切り替えボタンを長押しすると、カテゴリ一覧の一番上だけがすりガラスのような表示になり、文字が見えにくくなる現象も確認しました。調査したところ、スクロール領域の上端に自動適用されるScroll Edge Effectの影響だったため、対象のカテゴリ一覧のみ上端のEdge Effectを無効化して修正しています。iOSのアップデートに伴うUI変更はこうした思わぬところに影響することがあるため、今回のアップデートに合わせて対応しました。

まとめ:PhraseBoard v1.2の変更点

PhraseBoard v1.2の主な変更点は以下の通りです。

  • 「変数」を追加。文字変数・数値変数の2種類で、値を後から書き換えられる
  • 「関数」を追加。処理内容と「返す変数」を設定するだけで変数を更新できる
  • 連番の自動採番や、四則演算による金額計算、文字列の連結に対応
  • 変数・関数を管理する専用画面を追加
  • 定型文内の未登録変数を検出し、変数追加画面で候補表示
  • キーボードに「変数」カテゴリを追加し、現在値の確認・長押し編集に対応
  • 関数を含む定型文の長押しコピーにも対応(関数実行の結果を表示)
  • iOS 27でカテゴリ一覧の表示が乱れる不具合を修正

変数・関数は使い方次第でかなり幅が広がる機能ですが、すべての定型文で使う必要はありません。これまで通り普通の定型文や定数だけを使いつつ、連番や計算が必要なところだけ変数・関数を組み合わせてもらえればと思います。

感想や要望を教えてください

v1.2の変数・関数機能を使ってみた感想や、「こんな場面でも活用したい」といったご要望があれば、XのDMで気軽に教えてください。

アプリの詳しい機能や対応機種については、以下のアプリ詳細ページをご覧ください。

定型文キーボード - PhraseBoard アプリ詳細ページ