Twitterでふぁぼったものをひたすら試します

2020年もiOSDC Japanで色の発表をしました(「大解剖!UIColorファミリー」) #iosdc

これまでに発表した色のあれこれ

流石にDark Modeで得たネタで終わりかと思ったのだが、
???「UIColorのサブクラス作れたりしないかなー」
の一言からUIColorのサブクラス発表が生まれた。

世の中的には「UIColorのサブクラス作成はほぼ不可能」は既知の情報だった。なぜサブクラスの作成が不可能なのかは誰も説明していなかったのでとても画期的な発表だった(役には立たない)。

今年はスタッフをしたのか

してない(ネットワークの仕事がなかったので)(当日の都合がつかなかったので)
体力的には非常に楽だったが物足りない気持ちもあり。

「大解剖!UIColorファミリー」

UIColor自体は有用でも内部実装の情報は何も役に立たないので「『役立つ情報を話します』な優良誤認をしていないか」がすごく不安だった。

SwiftUI.Color 情報がないのでこの分のネタをどうしようか微妙なところ。

今のところ不明な点:

  • sRGBな SwiftUI.ColorCGColor に変えるとなぜか数値がちょっとずれる
    • display P3はズレない。
  • Asset Catalogの色をStoryboard上で使うとなぜか数値がちょっとずれる(らしい)

総合的に

オンラインなのにいつもの企業さんがスポンサーしてくださってるし、豪華ノベルティも届いたし、収録から当日まで初年度と思えないオペレーションでとてもビビった。いつも通り楽しいiOSDCだった!
(懇親会とかでご挨拶や思いがけない出会いができなかったのはざんねんだけど・・しょうがないね)

Swift evolution proposals No.268 - No.273を読んだだけ

qiita.com

2019年の感想:
上半期は UICollectionView を軽くやって下半期はDark ModeをやってたのでSwiftのことはすっかり忘れました。マジで何もわからん。Swift5さえ怪しい気がする。

なのでここ1ヶ月のproposalを軽く読んでアドベントカレンダーをごまかす。
No.268〜No.273です

Refine didSet Semantics

swift-evolution/0268-didset-semantics.md at master · apple/swift-evolution · GitHub
今のステータス:Active Review (5-9 December 2019)

今のSwiftは、 didSet が動くと oldValue の取得をするために毎回getしちゃうらしい。たとえ oldValue を使わなくてもallocateしたりしちゃうらしい。
このproposalは 「oldValue を使わない時はその辺の処理をスキップしたい!」というもの。

Increase availability of implicit self in @escaping closures when reference cycles are unlikely to occur

swift-evolution/0269-implicit-self-explicit-capture.md at master · apple/swift-evolution · GitHub
今のステータス:Accepted

self の書き方が変わるっぽい。

class Test {
    var x = 0
    func execute(_ work: @escaping () -> Void) {
        work()
    }
    func method() {
        execute { [self] in
            x += 1  // ← [self]って明示したからself.xって書かなくていいことにする
        }
    }
}
struct Test {
    var x = 0
    func execute(_ work: @escaping () -> Void) {
        work()
    }
    func method() {
        execute { 
            x += 1  // ←この場合、selfはstruct(値型)なんだから[self]って明示する必要もないでしょ
        }
    }
}

今は不要なところでも self.x って書いてるし、Appleは不要なselfは書かない方針のようなので必要なところだけ明示するようにする。

Add Collection Operations on Noncontiguous Elements

swift-evolution/0270-rangeset-and-collection-operations.md at master · apple/swift-evolution · GitHub
今のステータス:Active review (December 13th...19th, 2019)

IndexSet 以外に RangeSet を増やしたいというproposal。

numbers = Array(1...15)
let notTheMiddle = RangeSet([0..<5, 10..<15])

print(Array(numbers[notTheMiddle]))
// Prints [1, 2, 3, 4, 5, 11, 12, 13, 14, 15]

Package Manager Resources

swift-evolution/0271-package-manager-resources.md at master · apple/swift-evolution · GitHub
今のステータス:Accepted with revisions

一言でいえばタイトル通り。SPMなので、もちろんプラットフォームに依存しない形で。

目標をざっくり訳すと

  • 簡単にリソースファイルを追加できるようにする
  • リソースではないファイル(ドキュメントなど)を間違えて混入しないようにする
  • プラットフォーム依存のもの(xibとか)も対応する
  • ローカライゼーションも。
  • package authorが好きなところにリソースファイルをおけるようにする

とのこと。

Package Manager Binary Dependencies

swift-evolution/0272-swiftpm-binary-dependencies.md at master · apple/swift-evolution · GitHub
今のステータス:Accepted with revisions

これも一言でいえばタイトル通り。

CocoaPodsみたいにクローズドソース(Firebaseとかそういうの)に対応できるようにしたいというのがモチベ。

ただ、以下のことをやるつもりはないらしい(バイナリでできたものについて詳しくないからよくわかんない。。)

  • Ease of production of binary packages
  • Simplicity of binary artifact distribution mechanism
  • Widespread use of binary packages

あと、proposalには「最初はAppleのプラットフォーム対応だけ」と書いてあるので今後に期待する要素がそれなりにありそう。

Package Manager Conditional Target Dependencies

swift-evolution/0273-swiftpm-conditional-target-dependencies.md at master · apple/swift-evolution · GitHub
今のステータス:Accepted

targetのdependencycondition: が増えるらしい。

            dependencies: [
                .product(name: "Bluetooth", condition: .when(platforms: [.macOS])),
                .product(name: "BluetoothLinux", condition: .when(platforms: [.linux])),
                .target(name: "DebugHelpers", condition: .when(configuration: .debug)),
            ]

まとめ

SPMが集中してた

TaPLの2章と3章に出てくる単語を調べた(だけ)

qiita.com

Q なんでこんなまとめブログみたいなことしてるの
A すうがくむずかしすぎて2章と3章を読んだことがなかったから

2章

2.1

  • "加算"

http://www.math.is.tohoku.ac.jp/~obata/student/subject/file/2018-7_kasan.pdf

集合Aから集合Bへの全単射が存在するとき, AとBは濃度が等しいといい
(略)
自然数の集合\mathbb{N} = \{1, 2, 3, \ldots \}と濃度が等しい集合A可算集合という. 言い換えれば, 全単射f: \mathbb{N} \rightarrow Aが存在するような集合A可算集合である.

https://www.hongo.wide.ad.jp/~jo2lxq/dm/lecture/02.pdf

  • Aを整数の集合とする
  • x \in Aから、x + 1というAの要素への関係をRとする
  • この場合 R = \{(x, x+1) | x \in A\} \subset A \times Aであり、RA上の関係である、という。
  • "保存される"

これよくわかんなかったんだけど。。

2.2

用語

日本語 英語
 対称的 symmetric sRtならばtRs
反対称的 antisymmetric sRtかつtRsならばs=t
 反射的 reflexive sRs
 推移的 transitive sRtかつtRuならばsRu

↑を組み合わせたやつ

前順序 半順序
 対称的    
反対称的  
 反射的
 推移的

3章

3.4

  • 操作的意味論

http://www.kurims.kyoto-u.ac.jp/~kenkyubu/kokai-koza/H28-hasegawa.pdf

実際にプログラミング言語の処理系が行っているような具体的な計算の規則によってプログラムの意味を与える流儀は、操作的意味論(operational semantics)と呼ばれます。操作的意味論が与えられると、コンピュータ上で動作するプログラミング言語の処理系を与えることが(少なくとも原理的には)できるので、現在では、操作的意味論は、プログラミング言語の定義を与える有力な手法とみなされています。

http://research.nii.ac.jp/~ichiro/lecture/model2003/operational%20semantics.pdf

抽象機械の例

  • 表示的意味論

https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=65197&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

意味領域は,「定義されていること(definedness)」の度合いを表す順序\sqsubseteqが与えられた集合である.

  • 公理的意味論

https://www.fos.kuis.kyoto-u.ac.jp/~igarashi/class/sf03w/resume5.pdf

操作的/表示的意味論を使ってプログラムの性質の議論をするためには,数学的に定義された実行関係・意味関数などを対象として,メタ言語 (日本語+集合の基礎知識) によって非形式的に議論を行なわなければならなかった.ここでは,プログラムの性質を直接の対象として扱う形式的体系 (規則による導出体系) を考える.そして,形式的体系により証明できる性質を以て,プログラムの意味を定義した,と考える,このようなプログラムへの意味付けの方法を公理的意味論と呼ぶ.

感想

4章から先の単語はプログラミング言語の話題で出てくるから初見感はない(正直まだよくわかってない)

技術書典7で当日の手伝いをして戦利品いっぱい買った

techbookfest.org

当日スタッフ

多分6回目とかもうその辺になりそうな気がする。技術書典2とか3とかから手伝ってるので。
今回はイベントスペースの面積が2倍になったが別に体力が2倍になることはないので結構疲れた。DroidKaigiやiOSDCより疲れ、工大祭よりはマシだった。

『綿を育てて布を作る。【栽培編】』『【紡糸編】』

教養をつけるために購入。綿には(当然だが)品種違いがあるとか、本来なら多年草だとかいうのを初めて知った。

『みんなの測量塾』『地学の散歩路』

早稲田大学地学愛好会というところの同人誌。早稲田はいろんなサークルがあるらしくて羨ましい。母校は火山やってる先生はいてもサークルはない。

『みんなの測量塾』は歴史やら何やらの知識も含んで比較的簡単に読めて面白かった。『地学の散歩路』もモノ自体は興味深くはあったけど知識がなくて難しくてスムーズに読み進まない……

『入門起床』

私は朝起きられる方なので寝坊をした記憶さえパッと出てこないが、"ステークホルダー"との待ち合わせに遅れたことはある。DroidKaigi運営のため西新宿駅に行こうとしたら丸ノ内線が通勤ラッシュで遅延してた。つらい。

『"距離"のノート』

噂の暗黒通信団の本。円周率の本はその辺で売ってるし、他の本は難しそうなので、これなら簡単かもしれないと思って買ってみた。実際、2点間の距離の話とかならわからないこともなかった。ノルムは習ったことは覚えてるけど何に使われてるのかは覚えてない。

iOSDCでの色の話のための下調べ中に「xy色度図状の2点(2色)間の距離の長さが実際の色の相違度と一致しているかいないか」という話題を見つけたけど、結局どういう結論なのかまではあまりよく覚えてない……

『いつもオプションとフィルタの使い方をググっている人が最初に調べるFFmpegの本』

動画編集が趣味ではないが、たまにffmpegを使うので買ってみた。わたし、タイトルに該当する人です。

いつ使うかって言ったら、 iOS Color Invert使用中のアプリをスクショしたいが通常スクショでは色反転が取れないので仕方なくQuickTimeで録画したのを静止画にしたいとき

楔形文字ユニコードの出会いにまつわるエトセトラ』

ユニコードの知識をつけてみたかったので購入。ユニコードにどういった種の文字があるかはなんとなく知っているつもりだったけど、古代文明や文字登録に至るまでの議論の方はさっぱりわからないのでなかなか難しかった。

クラウドエンジニアのための中国語入門(1)』

クラウドエンジニアでないし中国語は大学の第二外国語でやったきりだけど勘で読むのをやってみたくて購入。わかるようでわからないようでわかるようでわからない。

韓国(ハングル)の空港やドキュメントはマジでなんもわからないので、中国語圏(繁体字簡体字)の空港やドキュメントを見るとそれだけで泣いちゃう。

『空に飛ばす 9日間で軌道を描く』

サークルリストを眺めていて「この人たちどう考えても激レアさんに出てた人たちじゃん」ってなった。聞いてみたら実際そうだった。ので簡単そうなのを買ってみた。

衛星軌道のパラメータっていうのの存在を初めて知った。

『Nikkei Development Book』

知人の近況を知るために購入。VTuberやってるらしい。また新聞屋さんが新しいこと始めてる……

『XcodeGen導入ガイド』

UIばかりいじっていてプロジェクトの設定やビルドの話から日々おいていかれているので購入した。なんか気づいたらXcodeGenになってたりする。

これ読んで完全理解した気になった。

『Datarace Detection Algorithm and Implementation』

知ってる人がいたので買ってみた。まるちすれっどのことはわかんないなあ。

表紙に夕立がいる……

『数理論理学とラムダ計算の世界』

論理学、自分がどこまで理解しててどこからがわからないのかがわからなくなってきたので購入。このくらいなら覚えがあるらしい。復習用。

『技術季報』

次回はサークルに応募しようかなあ、こういうのって悩むより出せってやつですよね

『Money Forward Tech Book #1』

知人の近況を〜。意外と知ってる人いる。元号対応大変そうだなあ。私はのんびりしてるタイプだから間に合わせられないだろうなあ。

『量子ガール』

知人の〜〜。何もわからんかった!私はもうだめだ。

『新世紀日本古式泳法マニュアル』

古式泳法という名前は聞いたことあるけど内容を知らなかったので。習得方法や溺れた人の救助方法も書いてあった。
ちなみに私は最初から水辺に近づかないという選択肢をとる人生してる。

『OS Girls 02』

知人〜。OSとかハードウェアは規格読みこまなくちゃ行けなくて大変そうだな〜で私の知識が止まってる。

『TALKING NEKOISM』

製版機の実物ってよくわかってないので購入。プリンター欲しい界隈が欲しいのはこういうのなんだろうなあ。やっぱ個人が持つにはでかい。

『もしも明日盲目になっても絶望しないために知っておきたい32の支援技術』

我々はアクセシビリティ機能を実装しなきゃいけないから購入。あー明日からも頑張って実装しよー。終わんねー。しかしユーザが待っている。

まとめ

今回も雑多にたくさん買いすぎた(いい意味で)

#iOSDC Japan 2019で発表したりネットワークスタッフしたりした話と色の発表の補足

発表

speakerdeck.com

XYZ表色系の話はググるとたくさん出てくるのだが、私がわかるように色の話を全て説明してくれているサイトはなくて辛かった。でも色彩科学ハンドブックっていう本を見つけて†完全理解†した後は色覚異常コントラスト比の話ともリンクしてすごくスッキリした。

発表後にこれ見て笑った、すまないね身長が低いんだ


調べ学習でやってみていること

esa

今年は個人でesa - A document sharing service for motivated teamsを使ってみている。月に500円。
熊本旅行オーストリアポーランド旅行の下調べを書いたり、税金の始末の手順を書いたり、今回の発表のために読んだ有用な記事を丸っとコピペしてリンク貼って後から出典がわかるようにしたりという管理に使っている。

新宿区立中央図書館

なんと!早稲田大学西早稲田キャンパス前には新宿区立中央図書館がある!去年に引き続きべんり〜ありがたや〜
母校のある大都会岡山にまで下記の色彩科学ハンドブックを読みに行かないといけないかと思ったけど新宿区が買ってくれてて助かった

よくある質問や雑談

Q 実際のプロダクトでどうやっているの?

A 個人での発表だし余計なことを言って怒られるの怖いから教えない
年季が入ったアプリのためどうもできていない。強いて言えば人を増やして物理で殴ることにより、アクセシビリティなどは結構対応が行き届いている。

Q 「早稲田大学西早稲田キャンパス前にある新宿区立中央図書館所蔵の色の本が私の知りたかったことを全て教えてくれるという事実があまりに心強すぎて「色の話とか私わかんないんで、すぐそこの図書館で本を読んでください」になる」とは?

A 『新編 色彩科学ハンドブック 第3版』という本。
行きつけの図書館がない人はAmazonで買ってね。定価43,200円だよ。えらい先生たちが各章を執筆し日本色彩学会が編集したありがた〜い本だよ。

新編 色彩科学ハンドブック 第3版 - 東京大学出版会

光学はもとより,心理学,生理学,工学,芸術などさまざまな分野にまたがる総合科学「色彩科学」の総合手引書.近年のITの著しい発展や広く認知されるようになった環境問題への対応を踏まえ,第3版として13年ぶりに改訂.実務者,研究者必携.

ネットにはこの色彩科学ハンドブックに寄稿した犬井正男さんが裏話を公開しているよ。
色度図の着色 - 東京工芸大学
私は本よりこのPDFを見つけて

「もしかしてこの本が大当たりなのでは!?」

って早速読みにいったらそれはもう近年稀に見る大当たりで感動したよ。おすすめだよ。でも値段のせいか貸し出し禁止だから頑張ってね。

Q なんで色のことを調べようと思ったの?

A え、みなさん、try! Swiftのコントラスト比の計算式の発表で満足しちゃったの???意味のわからない計算式を盲目的に信じて使っちゃうの??
A 私は常にその時の気分で動いており、今年は色の気分だった。色の気分にさせたのはtry! Swiftの発表。

コントラスト比の計算式は意味不明すぎると思う。出どころの知れない実数を使って四則混合してコントラスト比が出てくる理由がさっぱりわからない。最後の割り算が「ああこれは比率を出す計算だな」というのはかろうじてわかるが、そこで0.05を足す意味はわからない。いっそ足さなくてもよくない?いや、そうしたら黒色(※相対輝度が0)が分母に来た時にゼロ除算になってダメか。うーん。わからん。調べよ。ついでに発表もしちゃお。発表ドリブンしないとやる気出ないし。

Q iOS10ってサポートしてる?あいつがいるとColor Assetが使えなくてダークモード対応に困る

A Color Assetを使うとか甘え。Color Assetなしでダークモード対応しなさい!!!

なんかうちんとこのアプリ、諸事情でColor Asset使えないんだよねえ。なんでだろ〜?

ネットワーク

ネットワークで1番えらい人から「チケット管理しろ」とか「スクラムマスターになれ」とか命じられたので、ネットワークで1番えらい人に文房具を買わせるなどのお仕事をした(???)
技術的なことは強い人がみんなやってくれるので、だいたいそんな感じのお仕事してた

今回はDay1が不安定で、クリスタルシグナルパイやスプラトゥーンなどのおもちゃもあり、時々電源が抜けるアクシデントがあったので、「安定しちゃってつまんないな〜何か事故らないかな〜」などという発言は聞かなかったように思う。

次回

CODE BLUE、DroidKaigi、発表のネタは尽きた

みなさんダークモード対応の知見を私にください!!!!!!面白い話が聞きたい!!!

#iOSDC Japan 2019で色の話を発表したりネットワークスタッフしたりします

いつもの iosdc.jp

前回の

前回の予告ブログ s-shimotori.hatenablog.com

前回の参加ブログ s-shimotori.hatenablog.com

ネットワークスタッフ

スタッフ業より一般参加に重点を置いているので、今年も負担の軽いネットワークスタッフに籍を置いた。しかも今回はネットワークチームのまとめ役。実態はただの事務方なのでオマケとかモブみたいな存在。

今年はCisco APではなくAruba APを採用している。
www.arubanetworks.com

自分の発表資料を作りながら事務方してたら完全に技術的なところがわからなくなったので、技術的なことを聞かないでね

60分発表します

fortee.jp

もしかしたら以下の発表と話題が被っているかもしれないが、まあ被ってないでしょ

私はこういう話題をやる↓↓↓

イラレiPhoneのスクショを配置したらヤバイ色になった助けて!

時は2018年、私は発表資料を作るべくAdobe Illustrator.app(注:ベクターデータを扱えるお高いお絵かきツール)を開き、そこにiPhoneスクリーンショットを貼った。すると……?

【Before】
f:id:S_Shimotori:20190902205527p:plain:w100
【After】
f:id:S_Shimotori:20190902205253p:plain:w100

は?

去年はこの問題を解決できずに終わったが、今年は頑張ってググって答えを見つけた。初見時の衝撃は大きいが原因自体は単純なアクシデント。

HIG Colorに載っている謎の虹色画像は何者?

https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color#color-management

このページは「System Colors」「Dynamic System Colors」「Color Management」の3つから構成されている。色の初心者がダークモード対応をすべくsystem colorを読み進めると、突然Color Managementに出くわして意味のわからない専門用語でお出迎えされる心折設計。
ほとんどの人が関係ない節ではあるけど、やっぱこの機会に理解したいじゃん?

色覚異常の方は何色の区別が苦手なんだっけ……?

答え:色覚異常には赤緑の区別が苦手な「赤緑色覚異常」と青黄の区別な苦手な「青黄色覚異常」があります。以上。

私みたいな人は理由も一緒に勉強しないと明日には忘れてしまうので、目の仕組みについて学ぶ。
実は↑のHIGの虹色画像も色覚異常のお話に登場する。

で、コントラスト比って何でしたっけ?

try! Swift 2019に参加した人ならコントラスト比の意味はしっかり理解されていることと思う。
https://www.tryswift.co/events/2019/tokyo/jp/#accessibility

Web Content Accessibility Guidelines (WCAG) 2.0によると、コントラスト比の定義は

if RsRGB <= 0.03928 then R = RsRGB / 12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4
relative luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B
contrast ratio = (L1 + 0.05) / (L2 + 0.05)

である。

では問題です。なぜ12.92で割ったり2.4乗したり0.2126をかけて0.7152をかけて0.0722をかけて0.05を足してから比率を出すのでしょうか?
ていうかなんでこんな意味不明な計算しなくちゃなんないんだ。

ダークモードっていうのが最近の流行りなの?なんで?

えるしっているか。TwitterYouTubeの独自ダークモードデザインはiOS Smart Invertを有効にしても白色にならず黒のまま。

近況

iOS13対応終わらねえ。。

技術書典6で当日の手伝いをした(5回目)

あれ、技術書典5の参加報告記事が見当たらない。

当日手伝いについて

私が当日手伝いをするのもかれこれ5回目。今回めでたく来場者が1万人を超えたらしい。実にめでたい。
1万人ともなると来場者層はさらに深みを増してくる。

  • 大学の同期がサークル参加している
  • 大学の同期が売り子参加している
  • 大学の後輩が一般参加している
  • 大学の先輩が一般参加している
  • 社の同期がサークル参加している
  • カンファレンス運営仲間がサークル参加/一般参加している
  • 水族館と間違えて列に並んじゃったカップ

なので、ふら〜っとその辺を歩いているとさながら同窓会である。「お久しぶり!元気?」
大学の知り合いでiOS/Swiftをやっている人はほぼゼロなので、これだけ知り合いが多いのも新鮮。取り扱い分野が広いだけある。

高校同期はみんなわるいSIerに捕まってこの業界に定着しなかったっぽいので出会えそうにない。悲しいなあ。

あ、あと、iOSの島にはiOSって書いてあるのぼりが立ってましたね。おめでとうございます。活動が活発で嬉しきかな。

戦利品

家庭用製麺機USER GUIDE、作ろう!10分ラーメン

立ち読みコーナーで見かけた。
個人的に製麺機というとこの話題が記憶に新しい。

www.seimen.club

で、製麺機にもフォント警察みたいな人がいるんだな〜と思い出して手に取った。で、開いてみると 全ページカラー 。中の出来も素人の仕事ではない。は?????????*1

ていうか↑の記事こそが、この同人誌出してる人のブログじゃん。。。。こわ。。。。

製麺機についてざっくり知れるしレシピが載っているので美味しい。

SAKANA

友達が出してたやつ。自作キーボードの紹介の他にキーボードの仕組みも書いてあって勉強になる。
キーボード島のみんなは怖い。

俺々言語にだって型推論が欲しい!

TaPLがわからない系人間なので買った。やはり自分には論理分野の知識が足りないということを思い知らされた。学位返上しょ・・

SwiftSyntax入門

これでどうこうしようという気まではないが知識をつけようと思って。 コンパイラの話を追うのは話が大きすぎて辛すぎるので助かります。

Nikkei Development Book

今回は課金成分多め。あと、AtCoder話は珍しくて興味深い

まとめ

ガチ勢怖い

*1:商業誌でもないのに全ページカラー印刷している人は敵ですよ!私もカラー印刷してみたいよ!