Swift 4 で substring 的にインデックスを指定して部分文字列を取り出す方法

 Swift 4 になって、またまた文字列の扱いが変わりました。

 その中でも、今回は表題の通り、Swift 4 の String から substring 的にインデックスを指定して部分文字列を取り出す方法を見ていきましょう。

 ちなみに、Swift 2 から 3 に変わった時の substring については、以下の記事をご覧ください。

新しい iPhone X の画面サイズについて思いを馳せてみる

 事前リークの通り、iPhone 10 周年記念とも言うべき特別なモデル、「iPhone X」が発表されました。

 近年の iPhone には無かったデザインの変更や様々な新機能が盛り沢山で、久し振りにワクワク感満載なまさしくプレミアムなモデルに仕上がっているようですが、開発者的にまず気になるのは、その特殊なディスプレイ形状じゃないでしょうか。

 見なしベゼルレス全面ディスプレイの角が丸みを帯びているのはまだいいとして、これまでの 16:9 とは異なるアスペクト比や、剃り込みが入ったような特殊なステータスバー領域が、既存のアプリケーションにどのような影響を与えるのか、気になるところです。

 ということで、早速 Xcode 9 GM seed で iPhone X をシミュレータで動かして、画面サイズ周りについて軽く見てみました。

iOS 11以降は、Photo Library に画像を保存する際に設定の追加が必要になる模様

 表題の通りですが、iOS 11 以降はフォトライブラリに画像を保存する場合、Info.plist に設定の追加が必要になるかもしれません。

 追加しないと、例によってアプリが落ちてしまう可能性があるので、画像を保存する機能を組み込んでいるアプリを開発している場合は、確認した方が良いと思われます。

iOS 11以降は、Apple IDの2ステップ確認には対応せず、2ファクタ認証に一本化される模様

 表題の通りですが、iOS 11 以降は基本的に Apple ID の 2 ステップ確認には対応せず、2 ファクタ認証に一本化されるかも知れません。

 なにを言ってるのか分からねーと思うが(略

 えぇとですね、様々なサイトやサービスで自分のアカウントにアクセスする際に、(多くの場合)ID & パスワードによる認証に加えて、認証済みの端末でしか取得できない確認コードを使って 2 つ目の認証を行うことでセキュリティを強化するという、いわゆる 2 段階認証と呼ばれる仕組みを耳にしたことがあると思います。

 Apple ID も、もちろんこれに対応しているのですが、これまで 2 ステップ確認と 2 ファクタ認証という非常に良く似た別の仕組みを並行して提供していたんですね。

 これが、非常に分かりにくかった。

 なぜ、そんなことになっているのかについては、以下でも簡単に説明しますが、詳しくは以前に書いたこちらの記事を参照してください。

 ともあれ、iOS 11(および macOS High Sierra)では、相対的に古い仕組みである 2 ステップ確認は少なくとも推奨されず、どうやら 2 ファクタ認証に一本化される流れらしいですよ。

追記:(2017/09/20)
 つい本日リリースされた iOS 11 をインストールすると、やはり 2 ステップ確認は 2 ファクタ認証に自動的に切り替わるようです。

 同じ Apple ID で複数の iOS 端末を利用している場合、どれか 1 台でも iOS 11 にアップデートすると 2 ファクタ認証に切り替わってしまうようですので、2 ファクタ認証の利用が難しい iOS 8 以前しか使えない端末(例えば、iPhone 4 等)をご利用中の場合は、少し注意が必要です。


 Apple ID の 2 ファクタ認証と 2 ステップ確認の違いや、いわゆる 2 段階認証について詳しくは、以下の記事をご覧ください

[Xcode] プライバシーに関わるデータアクセスの利用目的を日本語化する

 iOS 10 から、プライバシーに関わるデータにアクセスする機能を利用する場合は、Info.plist に利用目的を明記することが義務付けられました。

 通常は Info.plist に設定した文字列が利用確認ポップアップのサブタイトルとしてユーザーに表示されます。

 ですが、最初から日本語オンリーでアプリを作成していればともかく、多くの場合 Base は English だと思いますので、そのままではポップアップの利用目的が日本語環境でも英語で表示されてしまいます。

 まぁ、別に英語でも構わないのですが、日本人には日本語で表示してあげたいなーと思った時に、一瞬「ん?」となったので覚え書き。

 どなたかのお役に立ちましたら。

外部 CSS ファイルにインラインで SVG を埋め込む方法


 別に style タグやインラインスタイルに書いてもいいけど。

 ということで、SVG ってあるじゃないですか。

 いわゆるひとつの、Scalable Vector Graphics。

 一般的に広く使われている JPEG や PNG のようなラスタイメージとは違ってベクタ形式なので、拡大縮小しても綺麗に表示できるっていうアレですね。

 SVG は XML――すなわちテキストで記述されているので、ラスタイメージのように画像自体の縦横に比例してファイルサイズが際限なく大きくなってしまうようなことが起こり難く、ファイルサイズを比較的小さく保ち易いという利点もあります。

※テキストだけに、http での転送時は gzip 圧縮も利きますし。

 綺麗な上にファイルサイズも小さいときては、最近の Web ブラウザは基本的に対応していることもあり、そろそろ積極的に使っていこうと考えている方も多いのではないかと思います。

 さて、そんな SVG ですが、個別のファイルとして用意する他に、HTML ファイル内に直接記述するという書き方も可能です。

 いわゆる、インライン SVG ですね。

 と、ここまでは常識的な話なのですが、場合によっては、外部 CSS ファイルに SVG を直接埋め込みたい場合もあるのではなかろうか、と。

 はて、その時は、どうやって書いたらええんじゃい、という点について、以下で見ていくことにします。

 それなりにレアなケースかと思いますが、どなたかのお役に立ちましたら。

 ちなみに、伝わり易さを優先して、タイトルではインラインという表現を使いましたが、この場合はどちらかというと embedded(埋め込み)の方が正しいと思います。