プロジェクトルートにある .swift-version ファイルは何か?

はじめに

ルートに .swift-version ファイルがあるプロジェクトを発見することがある。

たとえば、下記のリポジトリ

.swift-version は何のためのファイルか?
わかったことを、ここにまとめる。

1. swiftenv

Swift のバージョン切り替えには swiftenv というツールがある。
これを使用すると .swift-version でプロジェクトの Swift バージョンを指示できる。すなわち、

  • グローバルとプロジェクト、それぞれの Swift のバージョンを分けることができる
  • プロジェクトごとの Swift のバージョンを分けることができる

これは Xcode からビルドする時は特に気にすることはないが、コマンドベースでビルドする時はこの恩恵があるだろう。

ちなみに他の言語だと以下がある。

2. CocoaPods

CocoaPods 1.7.0 Beta! - CocoaPods Blog
上記の CocoaPods アナウンス内の Deprecating .swift-version File の項目が見るべきところ。
簡単な訳と共に見てゆく。

Up until now, most pod authors have been relying on specifying a .swift-version file at the root of their repo in order to successfully publish their pod with the Swift version they officially support. However, this information is never transcribed within the published podspec and therefore during integration none of it is taken into consideration when choosing which Swift version to use.

  • 従来は CocoaPods で配布するライブラリのプロジェクトには .swift-version を入れることで、サポートする Swift バージョンを指示していた。

This can cause numerous issues especially when a new version of Swift is released. This is because a consumer will automatically pick the latest version of Swift to use without the pod author officially claiming that it is supported.

  • しかしこれは、新しい Swift のバージョンがリリースされた時、問題が起きる可能性がある。

We strongly recommend pod authors to migrate over to use the officially supported swift_version DSL within their podspec instead.

  • その代わり、 Swift のバージョンは podspec ファイル内の swift_version で指示することを 強く 勧める。

We also recommend deleting the .swift-version file in your repo unless you use it for other tools such as swiftenv. The swift_version DSL will always take precedence over the .swift-version file.

  • swiftenv などの他のツールで使用しない限り、 swift_version ファイルを削除することを勧める。

Finally, a warning will be displayed during lint that encourages pod authors to migrate away from using the .swift-version file and in a future major release of CocoaPods we plan to completely remove support for it.

  • CocoaPods で配布するライブラリ開発者が .swift-version ファイルを使用をする警告が lint に表示される。 CocoaPods の将来のメジャーリリースでは、サポートは完全に削除する予定である。

まとめ

  • .swift-version はプロジェクトの Swift バージョンを指示するファイルである。
  • 注意点として
    • CocoaPods で配布するライブラリの場合は、 .swift-version は削除した方が良い。
    • 代わりに podspec ファイル内の swift_version でバージョンを指示すること。

個人的にはルートにこのファイルがあると、何かのツールで使うとかでなくても、 使用する Swift バージョンが一目瞭然でわかって、親切な感じがする。

特定ドメインを特定/除外して Google 検索する

ドメインを特定して検索

site:ドメイン を検索ワードに追加する。

例) ねとらぼ(nlab.itmedia.co.jp) 内で "ヤドン" を検索する。

ヤドン site:nlab.itmedia.co.jp

f:id:daisuke-t-jp:20190812013842p:plain
ヤドン site:nlab.itmedia.co.jp

ドメインを除外して検索

-site:ドメイン を検索ワードに追加する。

例) ねとらぼ(nlab.itmedia.co.jp) 以外で "ヤドン" を検索する。

ヤドン -site:nlab.itmedia.co.jp

f:id:daisuke-t-jp:20190812015002p:plain
ヤドン -site:nlab.itmedia.co.jp

ドメイン除外検索を使う場面

例) 「『ねとらぼ』についてのニュース」を Google から探したい。

この場合、Google ニュースで「ねとらぼ」を検索するとこうなる。

f:id:daisuke-t-jp:20190812015443p:plain
ねとらぼ

ねとらぼ内のページばかり結果にでるため、これでは「『ねとらぼ』についてのニュース」が見つけられない。
これを避けるため、ねとらぼ(nlab.itmedia.co.jp) を除外して検索する。

ねとらぼ -site:nlab.itmedia.co.jp

f:id:daisuke-t-jp:20190812020209p:plain
ねとらぼ -site:nlab.itmedia.co.jp

「『ねとらぼ』についてのニュース」も見つけやすくなった。

Huawei が発表した「HarmonyOS」

gizmodo.com

記事から抜粋

発表について

2019/8/9 HUAWEI DEVELOPER CONFERENCE2019 にて Huawei が発表

背景と HarmonyOS

Android との互換性

  • Android と HarmonyOS は互換が無い
    • アプリを移行するためには、調整と再コンパイルが必要になる
    • しかし、 Richard Yu はその変換は「非常に簡単」にできるべき、と主張している

HarmonyOS の今後

  • Harmony OS はスマートフォンタブレットを発売するより前に
    • 車載インフォテインメイント、Huawei Vision などのスマートスクリーンデバイス(これは今後詳細発表する予定)から始めて
    • 今後3年間で徐々に展開する予定
  • Harmony OS は iOS, Android には差し迫った脅威をもたらさないかもしれない
    • しかし Window 10 Mobile 以来の3頭の馬のレースになるため、製品開発の大きな変化の始まりになる可能性がある

個人的なメモ

  • Harmony(調和) と言う名前が Good ですね

Google の OSS プロジェクトはテストデータ(テキスト)に何を使用している?

github.com github.com

brotil と snappy は Googleリポジトリ管理されている圧縮ライブラリ。

それぞれテストデータは以下の場所にある。

その中をみると、以下のデータが共通して使用されていた。

いずれも著作権の保護期間が終了した古典文学作品。
元のデータは Gutenberg Project から取ってきている?
Gutenberg Project は日本で言うと、青空文庫に近い。

2000年からの10年は仮想化の時代、2010年からの10年はクラウド化の時代

CourseraGoogle が提供している講座の中で、タイトルの様なことが書かれていたと思う。(どの講座かは忘れた)

ふと思い出したので、事実を年代でリストしたい。

リスト

グラデーションで
仮想化 → クラウド
になっている??

参照

GDPR の触りをメモ

名称

General Data Protection Regulation

日本語では「一般データ保護規則」と訳す。

概要

EEA での個人データの保護規則。2018年5月25日 から実施。

対象となる個人情報

EU を含む欧州経済領域(EEA)域内の自然人に関するあらゆる情報。

たとえば

  • 名前
  • メールアドレス
  • クレジットカード番号
  • 位置データ
  • 個人特定につながるキー

など

違反例

個人情報を明確な同意なく処理すると違反となる。

参照

AVSpeechSynthesizer でテキスト読み上げ

AVFoundation の AVSpeechSynthesizer クラスを使うと、テキスト(文字列)を音声で読み上げることができるのでメモ。

サンプル

最低限以下で読み上げができる。

import AVFoundation


// シンセサイザーを準備する
let synthesizer = AVSpeechSynthesizer()

// 発音を準備する
let utterance = AVSpeechUtterance.init(string: "サンプルテキスト")
let voice = AVSpeechSynthesisVoice.init(language: "ja-JP")
utterance.voice = voice


// 再生する
synthesizer.speak(utterance)


// 停止する
synthesizer.stopSpeaking(at: .immediate)  // 即時停止

// もし、ワード(単語)単位で停止させたい場合は以下
// synthesizer.stopSpeaking(at: .word) // 単語単位で停止

日本語以外、例えば英語を読み上げしたい場合は以下の様にする。

let utterance = AVSpeechUtterance.init(string: "Sample Text.")
let voice = AVSpeechSynthesisVoice.init(language: "ja-JP")
utterance.voice = voice

リポジトリ

テストしたコードは GitHub にある↓ github.com

おわり