忍者ブログ
わたくしことkanakanaが、思ったことを書き散らす場です。

FOE

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Glaejaでウィジェットを作ってみる、その2

前回の記事からの続きです。

前回は、Glaejaとはどんなアプリかという簡単な説明を、
実際にウィジェットを作る基本手順を踏みながら、紹介しました。
今回は、Glaejaを使いこなすに避けては通れない
「エスケープキャラクタ」というものの解説をします。

そんではいってみよう

ホーム画面にGlaejaのウィジェットを設置してください。
前回のものを流用してもいいけれど、おさらいを兼ねて、
改めて新規に設置するところからやってみようぜ。

この、おさらいを兼ねてってのは意外と大事よ。
Glaejaでウィジェットを作るのって、書くのも考えるのも、
数学的というかプログラミング的な部分が大きいですが、
算数苦手だったからって絶対にできないわけじゃない。
それはド文系のわたしが保証します。単純な反復練習で意外と身に付くもんよ。


閑話休題。編集画面を開く。
すると、既にサンプルとしてテキストレイヤーが1つできています。

前回は華麗にスルーでサクッと削除したレイヤーですが、
今回はこれを注意してよく見てみる。
分かりやすいように、例によって、フォントサイズと色は変えました。



何かお気付きではないですか

前回は、「new」と書けば「new」と、「かなかな」と書けば「かなかな」と、



素直に表示されていたのに、今回は不思議なことに、
表示文字列には「$HH:mm$ #P'%'#」と書かれているのに
プレビューは「$HH:mm$ #P'%'#」ではない…。

と、大袈裟な紹介をしましたが、なんのことはない、
これこそがエスケープキャラクタです。

改めて、エスケープキャラクタとは

『Glaeja』のレイヤー設定項目において入力された文字列は、 通常の記述方法であればそのままの形で描画エンジンに解釈されますが、この「エスケープキャラクタ」を用いた記述の場合には、その内容が解析され別の文字列に展開されてから描画エンジンに解釈されます。

引用元:BANANAWANI MICOM. CULB: [Glaeja] エスケープキャラクタ解説と一覧


作者サイトの文章での解説だと難しそうに思えますが、
併せて実際の画面を見てみるとなんなく理解できるであろう。



上のスクリーンショットを撮ったのは、10時50分で、バッテリ充電率は99%だった。

「エスケープキャラクタ」の1つである「$」を使うことによって、
このときの携帯の状態を読み出して、
表示文字列の「$HH:mm$」の部分を「10:50」に、
同じく「#P'%'#」 の部分を「99%」に、
自動的に変換! そして展開して表示! できる、というわけ。

エスケープキャラクタで表示できる内容はいろいろあります。
時計やカレンダーや、充電率や電波情報、そして天気予報など。
一覧は作者サイトorefolderさん作のPDFファイルなどを参照のこと。

エスケープキャラクタにはルールがある

ところで、エスケープキャラクタの使い方にはいくつかルールがあります。
非常に大雑把且つ強引な論法になりますが、がんばって説明してみる。

例として、もう一度「$HH:mm$」→「10:50」を見てみよう。
展開前と展開後とをよーく見比べてみると、
「$」と「$」で囲まれた「HH」は「10」(時)に展開され、
「:」は特に変わらずそのまま「:」、
そして「mm」は「50」(分)に展開されていることが分かるだろう。

つまり、なんらかの文字を「$」で囲んでやると、
時計っぽい内容に展開されるわけだ。

でも、どうしてHは大文字でmは小文字、しかも2文字ずつなんだろう?
「$h:M$」と変えてみると、どうなるだろうか。



ありゃ。なんだか分かんなくなった。
まあ、でも、ステータスバー右上の時計と照らし合わせると、
1はきっと午後1時の1。しかし9はどこからやってきたのか。

んーじゃあ、いったい何を「$」で囲んでやればいいんだ。
全く唐突に、「$kanakana$」って書くとどうなるんだろう?



なんにも表示されないね。
では、ぐぐっと縮めて、「$ka$」だとどうなる?



なんか表示されましたが、これもさっき同様、なんのことだか分からんね。
まあ、でも、ステータスバー右上の時計と照らし合わせると、
「k」は「13」に、「a」は「PM」に、
それぞれ展開されたんだろうなあと推測できるだろう。

つまり! 強引にここまでのまとめ!

囲む文字にも囲まれる文字列にも、それなりのルールがあるのです。
下の画面は作者サイトの一部をスクリーンショット撮影したものですが、



  1. カレンダー関連の情報は「$」というエスケープキャラクタで囲むこと!
  2. そして、例えば「a」という記号を「$」で囲むと、「午前か午後か」を表示します!
  3. 変換表にない文字は、基本的にはそのまま表示しますが、
  4. 場合によっちゃエラーとしてまるごと表示されなかったりします!
と、定められているわけ。

これを踏まえて、上で試したものを思い出してみよう。

「$h:M$」が「1:9」になっちゃってたのは、

「12時間表記の時」「:」「月」と展開されたから。

つまり、Hとhとか、HHとhhとか、
mとMとmmとMMとかは、それぞれ全然違う情報を示す記号なわけね。
謎だった9ってのは、9月の9だったわけだ。

ちなみに、「M」は「9」と表示されましたが、
「MMM」なら「Sep」、「MMMM」なら「September」と表示される。
このように、同じ記号でも、重ねることで変化するものもあるので、注意。

そして、「:」がそのまま表示されているのは、変換はしないけど、
カレンダー情報に展開する「$」の中では、そのまま表示される文字だから。

「$kanakana$」が何も表示されなかったのは、

「n」が、変換されず、しかも「$」の中ではエラーになって、
文章がまるごと表示されなくなる文字だから。

「$ka$」が 「13PM」になってたのは、

「24時間表記の時」「午前午後」と展開されたから。

ハァハァ疲れた。くどい説明でしたが、
エスケープキャラクタの仕組みと、
それで囲まれる記号にはルールがあるということ、
お分かりいただけただろうか?
くど過ぎてよけいにややこしくなっちゃってたらごめんなさいな…。

例外の単一引用符

さて、くどいと言いつつ、もう1つ説明しとかなきゃいけないことがある。
それは単一引用符「'」について。
パソコンのキーボードでは、Shiftを押しながら数字の7を押すと出てくるやつだ。

単一引用符「 ' 」は、エスケープキャラクタとして機能する文字で、これに囲まれた文字列は「一切の解析・展開を受けずそのまま出力」される、という「無変換」系エスケープキャラクタです。

引用元:BANANAWANI MICOM. CULB: [Glaeja] エスケープキャラクタ解説と一覧


作者サイトからの引用です。

いっちばん最初の、サンプルとして作られていたレイヤーを思い出してみよう。



ここの「#P'%'#」という記述。
「#」はバッテリ情報を展開するエスケープキャラクタ、「P」は充電率を示す記号、
あれ? じゃあ「'%'」はなんでしょう。
「#」で囲まれているのに特に何も変換されていない。

実は、この単一引用符で囲んだ部分は、
変換・展開されずにそのまま表示されるのです。

なんだけど、ここで、作者サイトの、「#」:バッテリー情報分類一覧を見てみよう。
バッテリ情報に変換される記号として挙げられているのは、
G、H、l、P、s、S、T、t、v、Vだけ。元々「%」なんて含まれてないよ。

同じ結果を出すにも、いろんな書き方ができる

んー、じゃあ、「#P'%'#」じゃなくて、
単一引用符を使わず、「#P%#」と書いてみたらどうなるだろう?



答え。こうなります。
なんだ。この場合は、単一引用符、使っても使わなくても同じじゃん。
「$HH:mm$」のコロンがそのまま表示されたのと一緒ですね。
特に何も変換されていない。

するといったい単一引用符ってのはなんのために使うのか。
そのヒントは、下のスクリーンショットの中にある。



「#'P is 'P#」と書いても、「P is #P#」と書いても、
結果は同じになってるね。

つまりですね、同じ結果を出すにも、その人の考え方や構文の複雑さによって、
どう書くのが一番分かりやすいか、シンプルに書けるか、変わってくる。
そのためには、単一引用符の使用が不可欠となってくるわけです。

まーぶっちゃけ初心者のうちは

素直に1つずつ、変換したい部分だけを囲んでいけばいいと思う。
それでも心配なら、さらに、
変換したくない部分はその都度「'」で囲めば確実。



なぜなら、どの文字がどう変換されるか把握ができていないだろうから。
予想外のところで変な展開がされると、
自分でも分かってなくて困っちゃうんですよ。

でも、慣れてきたら、囲むのは最小限で済ませるとカッコいい。



最初のと結果は同じだけど、
表示文字列がずいぶん短くなってエレガントじゃないっスか?

最初のは、1文節ずつ
「ここはバッテリ情報」
「ここはピリオド」
「ここはバッテリ情(略)」
「ここはピリ(略)」
「なんだよ! ここも結局はバッテリ情報かよ!」
と読んでいかなきゃいけないが、

短くすると、
「このブロックはバッテリ情報について書かれてる。
その中をピリオドで区切ってある。」と、一目瞭然。

また、デザイン的に、顔文字を使いたいことなんかもあるかもしれない。
まあ、例によって、1つずつ囲んで書けばいいんだけども、



ちょっと長いんで短くエレガントに済ませようとカッコつけたら、



うおおなんだこりゃ。そうか、「v」は電圧を表しちゃうんですね。



1つずつ囲んだのと同じ結果になりました。
且つ、初めと終わりの「#」をパッと見ると、
ここはバッテリ関連の情報が書かれたブロックだったな!
と、把握もしやすい。というわけ。


というわけで、単一引用符を使う理由は、(多分)こんな感じ。

サラッと流せる話題かもしれないんですが
こんだけ力を入れて長々と説明したのは、
そういう、ブロックごとにシンプルに組み立てるものの考え方が、
のちのち、凝っていて複雑なウィジェットを作りたくなったときに、
きっと役立つと感じたからだ。

初めはコピペ、そして一覧へ―

とは言え、膨大な数のエスケープキャラクタを使いこなすのは難しい。
エスケープキャラクタ自体は7種類ですが、
囲まれる記号はものすごくたくさんあるし、
ややこしいルールもいろいろあるし。

ぶっちゃけわたしはまだ全ては理解してない。
というか理解できているもののほうが少ない。
時間を表す「$」に囲まれる中で、Hってのはhourの略で、mってのはminuteの略。
この程度なら覚えるのもわりと簡単だけどね。
「ユリウス通日」とか、いったいなんなんだ。使ったことねえしな。

でも諦めてはいけません。
初心者中の初心者には、既存のものをコピペするという手段があるのだ。
orefolderさんがまとめてくださっている、Glaeja Skins



このスキン一覧の中から、気に入ったものをインポートしてみる。
最初はなるべくシンプルそうなもの、
下のほうにあるfukidashiorangeboxあたりがいいと思う。

で、ホーム画面にウィジェットを設置したら、編集画面をおもむろに開き、
作者サイトorefolderさん作のPDFファイルを首っ引きに探しながら、
この情報はどうやって記述されているのか、照らし合わせて調べていく。

その勉強がめんどくせーから敷居が高いんじゃねーか!
とお思いの方は、次の段階に進んじゃおう。
自分で一からウィジェットを作ってみちゃおう!

こんな言い方をしたら身も蓋もないが
全くの初心者が思い付くウィジェットの内容なんてたかが知れている。
年月日と曜日のカレンダーの横に現在時刻、
その下にバッテリ充電率を表示したい、とか。
内容はごくありきたりでも、代わりにデザインに凝ってみるてのもアリだろう。

そのぐらいなら一覧から目的の項目を探し出すのも簡単だからね。
レイヤーの種類についてなど、ほっとんど説明せずにここまで来たが、
それらも含めて、勉強という意識もなく作業できる。はずだ。はずだ。

そして、実践して慣れるに従って、いろんなアイディアも湧いてくると思う。
そこでさらに次の段階に。

エスケープキャラクタ一覧を眺めて、
この情報はどういうときに使えるのかと考えてみるんでも、
スキン一覧を眺めて、
これは凝ってる!てなものがどう記述されているのか調べるんでも、
フォントサイトや配色サイトを巡って、
内容は単純なままでいいからひたすらデザインを極めるんでも、
そこはそれ、あなたの方向性次第。

次回予告

非常に非常に長い記事となりましたが、
ここまで読んでくださってありがとうございました。
しかしですね。実は。
エスケープキャラクタについてもう1つだけ解説しなければいけないことがあります。

「@...@」という、前方文字置換エスケープキャラクタ、通称かたつむり。
次回の記事は、これについて書こうと思います。
多分まとめるまでに相当の時間がかかると思いますが、がんばります。

拍手[39回]

PR