というのが消費者と投資家に共通する欲求でしょう。
しかし、今秋Appleはついにその欲求にNoと言ったのです。さりげなく、しかし見間違えようなく。Special Eventで最もSpecialだったのは、XSでもSeries 4でもXRでもなく、環境担当VP、Lisa Jacksonのプレゼンテーションでしょう。彼女ははっきり言ったのです。「製品はなるべく永く使ってください」と(図4)。
これは陳腐化が前提のデジタルデバイス業界の自己否定にすら思えます。しかし他のハードウェア業界では常識です。乗用車を毎年買い換える人は稀ですし、事故でもない限り廃車にする人はまずいません。中古市場もリサイクル市場も成熟しています。新機種市場で最高額のiPhoneは、中古市場でも最高値で、新品が割高でもライフサイクルコストで見れば割安であるがゆえに売れるという点は、海外における日本車に通じるものがあります。
しかし乗用車と決定的に異なる点が1つあります。スマホはソフトウェアで若返らせることができるのです。いみじくもiOS 12がそれを証明しました。五年前のiPhone 5sもはっきり体感できるほど速くなったのですから。しかしそのためには最新のソフトウェアを受け止められるだけの余裕を持ったハードウェアが必要で、iOSでは64 bit CPUというのが分水嶺になっています。そしてA12 bionicの69億トランジスタというのは、iMac Pro用の18コアXeonに匹敵します。既存のソフトウェアには早すぎるハードウェアを用意し、ソフトウェアが追いついてくるのを待つ。これぞ深慮遠謀というものではないでしょうか。
そう、ソフトウェア。ハードウェアが成熟産業となった今、ITで革新を担うのはソフトウェアなのです。その意味において、ソフトウェアにとってのSwiftは、ハードウェアにとっての64 bit CPUに比肩するターニングポイントではありますまいか。
LinuxでもFoundation!
そのSwiftは、今やApple製品専用ではありません。以前紹介したようにサーバーサイドでも使えるものになってきました。Swift 4.2ではついにimport Foundation
できるようになって、#if os()
なしにクロスプラットフォームで動くコードが格段に書きやすくなっています。
ただし、それをきちんとインストールした場合。公式の取説には重大な抜けが1つあって、そのままではSwiftは動いてもimport Foundation
しようとすると、次のエラーで止まります。
公式のclang
とlibicu-dev
に加えて、libcurl4
をインストールしておく必要があります。次はUbuntu 18.04の例です。
Foundation
が使えるようになったことで以前の、
は陳腐化しました。今後はなるべくFoundation
を共通で使うようにして、どうしても切り替えが必要な場合は、
とするとよいでしょう。
.hashValue -> .hash(into:)
Hashable
プロトコルの必須プロパティが、.hashValue:Int
から.hash(into:)
に変わったことも特記すべきでしょう。これは解説よりも実例を見たほうがわかりやすと思います。swift-sionでは次のように変更しています。
とくに変わったのが、Array
とDictionary
の場合。以前は全部文字列化してその.hashValue
をとっていたのに対し、Swift 4.2では要素ごとに.hash()
しています。ここで注目して欲しいのがDictionary
の場合。なぜキーをソートしているかと言えば、本来Dictionary
は順不同だから。["one":1,"zero":0] == ["zero":0,"one":1]
ですが、順序が異なるので同じように文字列化されるとは限りません。Swiftの現在の実装ではどちらも["one":1,"zero":0]
と辞書順にソートされてから文字列化されますが、それはあくまでSION
の.description
が明示的にそうしているからであって、Dictionary
一般で成り立つとは言えません。
equally random
Swift 4.1まで言語標準サポートがなかったおかげでいらぬ苦労を強いられていた乱数値も、4.2以降は数値型でサポートされます。
ほかにも変更点はいくつかありますが、Xcode 10 はSwift 4.1 と4.0 もサポートしており、Edit
以下のConvert
メニューである程度自動変更もしてくれます(図5)。ぜひとも活用して行きましょう。
次回予告
次回は、今回には間に合わなかったmacOSMojaveに触れたのち、「定常運転」つまりSwiftを書いて覚えていくことにします。とくにプロトコルという概念は、耳学問だとなにかわからないのに書いていくうちにチョトデキルようになっていくという点が実に味わい深く、食欲の秋にもってこいの食材です。
- 第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
- 第2特集
「知りたい」「使いたい」「発信したい」をかなえる
OSSソースコードリーディングのススメ
- 特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
- 短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
- 短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
- 短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)