Salesforceで気を付けたい全角/半角の扱い

閲覧ありがとうございます。Armadaです。
今回はSalesforceネタです。

クライアントアプリからSalesfoceにデータを登録する際、キー重複を避けるために事前にSOQL(Salesforce独自のクエリ言語)でデータを抽出→重複キーの存在チェックという流れでアプリ側でチェックを行うわけですが、ここで全角/半角問題が出てきます。

どんな問題かというと、文字によってSOQLとデータ登録時では全角/半角の区別が異なるため、SOQLでは重複なしとなってもデータ登録時に重複ありでエラーとなるのです。

文字による全角/半角の扱いをまとめると以下のとおりです。

文字 SOQL 登録時
アルファベット 区別なし 区別なし
数字 区別なし 区別なし
カタカナ 区別あり 区別なし
記号
※文字により異なる
区別なし 区別なし

アルファベット、数字は全て同じで「区別なし」、カタカナはSOQLでは「区別あり」、登録時は「区別なし」となります。

記号は、というと文字によって異なります。
基本的には上記の表のとおりですが、一部の記号は区別ありだったり、なしだったり。
扱いが異なる記号について調査した結果は以下のとおりでした。

文字コード 記号 SOQL 登録時
0x22 区別あり 区別あり
0x27 区別なし 区別あり
0x5c \ 区別あり 区別あり
0x5e ^ 区別あり 区別なし
0x60 ` 区別なし 区別あり
0x7e ~ 区別あり 区別なし
0xa1 区別あり 区別なし
0xa2 区別あり 区別なし
0xa3 区別あり 区別なし
0xa4 区別あり 区別なし
0xa5 区別あり 区別なし
0xb0 区別あり 区別なし
0xde 区別あり 区別あり
0xdf 区別あり 区別なし

これらの記号やカタカナは基本的にキー項目の値としては利用しないため、登録時の入力チェックでエラーとするなど、登録しない仕組みを考えた方が良さそうです。
是非、参考にしてください。

OnePlus One / BALMUDA AirEngine

昨今、ハードウェアの世界で色々なベンチャーが誕生し、特色のあるスマートフォンや家電を手に入れる機会が増えてきました。私は、人と違ったものを欲しがるところがあるので、気になった製品を勢いで購入してしまいます。その中で私が気に入っている製品として OnePlus One と BALMUDA AirEngine があります。

1. OnePlus One

composition-main-aw@2x

こちらは、中国の新興メーカーOnePlus社が販売しているスマートフォンで、THE FLAGSHIP KILLER と謳っており、他の大手メーカーのフラッグシップ機を超えるようなスペックを誇っています。購入するためにはInvitationを受ける必要があり、購入までのハードルが非常に高かったのですが、現在は自由に購入することができます。

OSはCyanogen 11S というAndroid 4.4をベースにしたカスタムOSを搭載していますが、OxygenOSというAndroid 5.0.2をベースとしたカスタムOSをOnePlus社が開発しており、そちらへ載せ替えることもできます(ただしRoot化が必要)。

16GBのSILK WHITE と、64GB SANDSTONE BLACK の2種類が販売されており、2015/6/15現在、それぞれ249ドルと299ドルとスペックに対して非常に低価格に設定されています。私が購入した当初はそれぞれ299ドル、349ドルだったので円安の影響を含めても非常に安く手に入れることができます。ただし、直接日本への発送はしていないため、海外転送サービスを利用するなどの必要があり、配送料を含めて考えると100ドル以上高くなると考えたほうがよいです。

もちろんSIMフリー端末なので、私はOCNモバイルONEを契約し格安運用しています。

2. BALMUDA AirEngine

001

BALMUDA社は2003年に設立された日本の家電メーカーで、デザイン性の高い白物家電をメインで販売しています。いわゆる大手家電メーカーの製品と比べるとやや高めですが、従来の製品には見られないスタイリッシュなデザインでインテリアコーディネートするときに一役買ってくれます。

私は、AirEngineという空気清浄機を利用しています。購入当時は花粉の季節だったので、花粉を除去したいという思いが非常に強かったのですが、購入後は大分楽になった記憶があります。ただ、上部の大きなファンで空気を天井から循環させ、下部のフィルターで集塵するというコンセプトで、花粉等の小さな粒子には非常に効果的なのですが、どうも猫の毛などの大きめのハウスダストに関しては、ダイキン社の空気清浄機に分があるように感じています。ですので、我が家ではAirEngineのJETモードで空気を循環させつつ、ダイキン社の空気清浄機を併用して大きなハウスダストを取り除くというソリューションを展開しています。

最後に

もともと半導体設計エンジニアで、ハードウェア寄り仕事をしていたことから「ものづくり」に対するこだわりについてはわかっているつもりです。今はゲーム開発を行っていますが、ハードウェアベンチャーも最近盛り上がりつつあるので、いずれはそちらの分野にも強いエンジニアになりたいです。