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

iOSDC Japan 2017で発表したり飛び入りでお手伝いしたりした #iosdc

よーしiOSDCで発表するぞー!

iosdc.jp

……。

って、

あれ?

いつのまにアットホームな職場に混じってる……?

私何しに来たんだっけ

チケットを入手する

学生なのでWantedlyさんによる学生応援プログラムの対象ではあるのだが、

www.wantedly.com

首都圏住みで交通費はほぼゼロだし、こういうのは就活を控えた後輩たちが受けるべきだろうし、

というかせっかくならスピーカー枠のほうが

  • 勉強会駆動勉強
  • 社会人になるのを待ってからスピーカーになる理由はどこにもない、それより登壇して名前を売っちゃおう
  • スピーカーに占める学生数と女性数に+1できる

とメリットがめちゃくちゃ大きいので、何かカンファレンス発表のネタになるものはないかと探す。
iOSDC Japan 2017に色々応募した - S_Shimotori’s diary

結果、1個通った!学生のうちにカンファレンス登壇経験を得られた!そしてチケットがタダ!
他のネタも発表する機会をいただいたので、これで年末までは充実した日々を送れる。

しかし手持ちのネタを全放出したのでアドベントカレンダー用のネタがなくなった……

LTの準備をする

大学で☆CHUKAN-HAPPYOU☆があった関係で、準備を始めたのは11日月曜日。手元にあるのは1年前に入手したGCの本と脳内の筋書き(=裏取ってない)だけ。LTといえどもその5分に責任を持たないといけないし、GC自体は5分どころの話ではないので必死に勉強した。

結局スライドは1日で作り終えたけどGCの勉強は難しくて苦労した。Cyclone、お前のせいだぞ。なーにが32bitでGCC3だよ。私は現代に生きてるんだが。

大学の図書館にJavaパフォーマンスの本とかがあって助かった。

www.shoeisha.co.jp
www.oreilly.co.jp

早稲田大学理工キャンパスについて

せっかく西早稲田に来たので西早稲田飯を食す。やはり学生の女子率の違いだろうか、理工キャンパスの方が我がGreat岡山キャンパスに比べ飯屋が充実しているように思う。

www.instagram.com

女子トイレにしてもちゃんと化粧台があるし簡易的とはいえ更衣スペースもある。理工キャンパスなんだし、そんなオシャレスペースなんかないに決まってんだろ、そうと言ってくれ

前夜祭

個人的な前夜祭の目玉セッションはObjective-C++を使ってMRCで快適に開発する | iOSDC Japan 2017。私もARCとGCのセッションなので、先に全て話されてしまったらどうしようと思いながら聞いていた。実際は濃密すぎるゆえに話が被らずに済んでセーフ。

あんまりたくさんの人が懐かしい懐かしいツイートしていたのでアンケート。

最初はSwiftが1割くらいだったのでびっくりしたけど、落ち着いた今の結果を見る限りでは体感通りかも?MRCが懐かしい人はいっぱいいるし、Swiftから始めたという人も最近は珍しくないし。

諸事情で興味があったので不用意にNOCのアットホームな職場に近づいたら、なんとお手伝いさせていただけることになった。今の所全然わからないので頑張っていこうと思う。どのくらいわからないかというと、新設の研究室のルーターの設定項目(DNSとかネットマスクとか)の意味がわからなくて前ラボの助教様に泣きついたくらい。

スピーカーディナー

肉がうまかった。 以上!

以前からお世話になっている方との挨拶を済ませておいた。正直私のLTはカンファレンスでやるには易しすぎる面もあるので、超有名なスピーカーの皆様を前に申し訳なさもあったけど、ゆっくりお礼を言えてよかった。

1日目

ミサトさん

今日の個人的な目玉は、Auto LayoutとObservable。Auto Layoutは論文が出てきて泣いた。

iosdc.jp

iosdc.jp

自分も発表した。

speakerdeck.com

あと、NOCの人からvlanの概念とCiscoコマンドの存在を教えてもらった

懇親会

スピーカーになって気になってる分野を投下すると、自然に参加者の方が集まってきて知見が得られる。与えて与えられる。OK?

スタッフTシャツと名札が与えられて、晴れて私もアットホームな職場の一員になった

2日目

今日の目玉は…

なんか変なセッション(iPhoneクラスタとかiOS11本の人達の溢れ出る何かとか)があって真面目に聞いてたネタが脳内からぶっ飛んだ。というのは嘘で、自分が俺コンで話したいことと関連する話がちょくちょくあったので、俺コンの時にちょっとだけ触れるつもり。

昨年聞きそびれたお肉の話が聞けてよかった。ちょうど「細かい温度管理なんて人間業じゃないから美味しいお肉なんて夢のまた夢だ!」って思ってたところで、本気でanova欲しくなって困ってる。あとカンガルー。

medium.com

それから、ハンズラボさん家では相変わらずexit(1)を企んでいるようで安心した。

iosdc.jp

あと、APとLANケーブルの撤収を手伝った。働くにあたり、LANケーブルのしまいかたを教えてもらった。上手にやるのは結構難しかったけど、これで家の10mあるやつを自力でしまえる。何も知らない新人なのに親切にしてもらって、マジでアットホームな職場です!

夜のiOSDC

iosdc.connpass.com

危ないから夜遊びしないで早く帰りなさいってママにいわれた><

通らなかったネタの発表

仮にリジェクトコンに通ったとしても1個しか発表できないよなあ、どうしたものか、と思っていたところ、iOS Test Night主宰の@tarappoさんの目にとまって場を用意していただけることになった。

connpass.com

今こそテストの気持ちを考える / S_Shimotori (@S_Shimotori_pub)

色々なカンファレンスや勉強会に参加してわかったこと: みんなテストを書かない。

fastlane Contributorだけど何か質問ある? | iOSDC Japan 2017ですらテストが完璧じゃないって話だし、じゃあテスト書いてるところはどうしているかというとBuild high performance and maintainable UI library | iOSDC Japan 2017の動作確認はUIテストじゃないみたいだし。

というわけで書かない人向け。別にこれで書けるようになるわけじゃないが。

で、

俺コンに参加することになったのでリジェクトコンは遠慮しておこうかと思ったけど、みんなの応募の勢いが悪かったから結局出しちゃった。

iosdc-reject-conference.connpass.com

5分トーク②:「郵便屋さんの演算子」@S_Shimotori_pubさん

演算子に使える文字を紹介する予定。Unicodeを素で読めるマンには確実にいらない話。

まとめ

  • やはりスピーカーとして参加すると美味。
  • Ciscoデビューした。
  • 俺コンとリジェクトコンがあるのでまだまだ私のiOSDCは続く。

これまでの勉強会も今回のiOSDCも、実務経験がなくて現場によく効く話はできなかったので、来年以降はよく経験を積んでいきたいと思う。

【宣伝】DroidKaigi 2018

droidkaigi.jp

こっちもよろしくね

genericsとassociated typeとduck typing(とSwift)

いつもこの辺の話を忘れちゃうのでメモ。

Why does Go not have generic types?

github.com

Goに総称型がないっていうネタと議論を永遠に続けるために導入してないんじゃ

理由はFrequently Asked Questions (FAQ) - The Go Programming Languageにある通りだが、厄介なのはissueで延々と議論を続けているところである。やっぱり議論がしたいだけなのでは。

もう少しまとまった説明がproposal/15292-generics.md at master · golang/proposal · GitHubにあるのでこっちを読んだ方が幸せ。そこでは

Generics affect the whole standard library. It is desirable to have the standard library make effective use of generics. Every existing package should be reconsidered to see whether it would benefit from using generics.

などいろいろなことが述べられている。

Swiftの標準ライブラリが1番associated typeの恩恵を受けている気がする。ていうかもはや奴がgeneric protocolを使う姿を想像できない。

golangGenerics と私」

mattn.kaoriya.net

まあこれ自体は置いといて、Swiftには数値関係のprotocolがたくさんある。なんなら Numeric という例で出てきたものと同じ名のprotocolまであるがどうか。

Swift標準ライブラリにはprotocolで構成される巨大な継承ツリーがある。その中から数値型を抜粋するとだいたいこうなる:

f:id:S_Shimotori:20170802214546p:plain

Swiftの数値型の元締めが問題の Numeric である*1Numeric は二項演算能力(ただし和差積のみ)を指す。名前が一致しているしこいつが全部解決しそうしない。
なぜなら NumericSelf 同士の、つまり同型同士の二項演算能力を指すからである。 Int / UInt / Float / Double のごった煮の和は管轄外。

演算子システムもしっかり型を限定してくれる Self 先生も好きです(ほんと)

Int / UInt / Float / DoubleMyNumber を実装するのがだるいなら Numeric 1人に実装すれば解決するしない。宣言済みのprotocolに後から別のprotocolを継承することはできない。mattn氏の例と同様に全ての数値型で実装する必要がある。頑張りましょう。

Java の Generics にもの思い - QiitaJavaでは <T extends Number> を利用しているが、Javaの数値参照型の元締め Number

抽象クラスNumberは、プリミティブ型byte、double、float、int、long、およびshortに変換可能な数値を表すプラットフォーム・クラスのスーパークラスです。

で我らが Numeric とは別物である。よってこのJavaの例をそのままSwift語に書き換えてもうまくいかない。

Number (Java Platform SE 8)

Swift: Why Associated Types?

www.russbishop.net

Russ Bishop氏はAppleの中の人らしい。

記事は2015年のもの。現在の Collection が持つassociatedtypeは

  • associatedtype IndexDistance = Int
  • associatedtype Iterator = IndexingIterator<Self>
  • associatedtype SubSequence
  • associatedtype Indices

である。いずれにしてもこれを総称型パラメータでやったらヤバイよねっていう話。 https://github.com/apple/swift/blob/781f6326bd9932356086874baa12c812d100565e/stdlib/public/core/Collection.swift

Scalaはtraitでもgenericsとabstract typeを両方使えるので、この記事はOdersky大先生のScalaインタビューを引用している。こちらでもパラメータ数の爆発の可能性が欠点として挙げられている。

The Purpose of Scala's Type System

You could parameterize class Animal with the kind of food it eats. But in practice, when you do that with many different things, it leads to an explosion of parameters, and usually, what’s more, in bounds of parameters.

Introducing Abstract Base Classes

www.python.org

29.7. abc — 抽象基底クラス — Python 3.6.1 ドキュメント

Pythonは基本的にはduck typingなのだがAbstract Base Classesなるものが存在している。記事の最後ではABCとduck typing、generic function、interfaceとの比較がされている。

Python 3.4.0 の新機能 (3) - Single-dispatch generic functions - Qiita

JavaScalaC#ジェネリクス機能比較表

kmizu.hatenablog.com

よっしゃ!Swiftも参戦だ!

ジェネリックなクラス
class MyList<T> {}
ジェネリックなメソッド
func id<T>(arg: T) -> T { return arg }
型パラメータの上限
func max<T: Comparable>(a: T, b: T) -> T {
    return a < b ? b : a
}
型パラメータの下限

なくない?

型パラメータの推論
id(arg: "foo")  // "foo"
全ての型のサブタイプ(ScalaにおけるNothing)

こいつもなくない?

scala.Nothingは何のためにあるのか - kmizuの日記

definition-site variance

記憶にない

use-site variance

記憶にございません

実行時における型パラメータの扱い

(実行時のことは知らん)

型パラメータをnewする

え、無理でしょ( error: non-nominal type 'T' does not support explicit initialization )

Nominal and Structural Type Systems - soutaroブログ
Swiftに息づくstructural types(構造的型) - Qiita

同じジェネリッククラスを複数同時に継承する

多重継承はダメだし総称型protocolなんて概念はこの世には存在しない

同じ名前で型パラメータの個数が異なるジェネリッククラスを複数作成する

同じ型と認識されるので無理( error: invalid redeclaration of 'Tuple' )

高階のジェネリクス(Type Constructor Polymorphism)

何これ。

「filterを実装しておけばrejectが勝手に出来上がってる」みたいなやり方はよくあるが。

ジェネリックな型エイリアス
typealias StringDictionary<T> = Dictionary<String, T>

let d: StringDictionary<Int> = ["x": 50, "y": 100]

まとめ

みんな違ってみんないい

*1:Strideableも全員に該当する性質だが、こいつはUnsafePointer軍団も監督しているので数値限定ではない。NSNumberもFoundationの子なので違う。

iOSDC Japan 2017に色々応募した

わたしは!女性登壇数と学生登壇数を増やすまで!トークに募集するのをやめないっ!

気になるものがあったらツイートしたりブクマしたりしてください。

【LT】学生が勉強会のドアを叩いて、その後

学生が勉強会のドアを叩いて、その後 | iOSDC Japan 2017

このエントリーをはてなブックマークに追加

就職活動とかいうただストレスが溜まっていくイベントを、
「勉強会で出会った人たちはみんな優しくて楽しそうにしてたから大丈夫!」
という謎理論で耐えた話をします。

女性は出産でブランクがあるから教職か薬剤師か士業にしとけって父親からの意見にも動じない。やりたいからやる。OK?
(興味があるならいいんだけど、ない分野に行ってどうするんだ……)

【15min】今こそテストの気持ちを考える

今こそテストの気持ちを考える | iOSDC Japan 2017

このエントリーをはてなブックマークに追加

勉強会に参加してわかったのは、「意外とみんなテストを書いてない」ということです。 テストフレームワークAppleドキュメントがあんなに理念と利点を語っても、カンファレンスのたびに誰かがテストの話をしても、懇親会で誰かが「自分はテストを書いてない」って言う。間違いない。

xUnitフレームワークの祖は「25%〜50%はテストに費やせ」って言ってるんだけどね。まあ工数足りないしね。

テストを想定して設計や実装をしないとあとあと時間が取れてもテストしにくくて萎えるので、テストの理論をやります。というか私が懇親会でテストの話をしたいのでテストの話を提供します。銀の弾丸の話をしても「自分はテストを書いてないから関係ない」ってなったら悲しいし。

【LT】ARC vs. GC?ARC in GC

ARC vs. GC?ARC in GC? | iOSDC Japan 2017

このエントリーをはてなブックマークに追加

みんな strong weak の話ばかりしてGCの話をあまり聞かないので、ARCとGCの話をします。その上でSwift4の新しいメモリ管理の話もします。

「SwiftはGCを採用してない」って発言するとGC警察に捕まるので、ちゃんと「世代別GC etc.を採用してない」とか正しく発言しましょう。

【LT】郵便屋さんの演算子

郵便屋さんの演算子 | iOSDC Japan 2017

このエントリーをはてなブックマークに追加

このLTを聞くとなんの文字を演算子定義に使えるのかわかるようになります。せっかくなので面白い名前の演算子でも考えましょう。ちなみに演算子定義がわかると変数名定義のルールもわかります。

サンプル問題

第1問!演算子定義に使えるのはどれで使えないのはどれ?→ ▶️ 🐶

このへんの公式ドキュメントが間違ってたのでこの間フィードバックから修正依頼出した。ほめてほめて。

本音

早稲田生だけチケット無料でずるいから私も登壇して無料チケット取りたい
いやほら、どっかの企業さんが負担してくれるって話もあるけど私首都圏住みだし登壇した方が有意義じゃん?

技術書典2に初参加した

初めて参加するイベントの運営の手伝いをやりました。

あらすじ

🐑「(訳あり風に)4月9日暇ですか?」
私「えーっと何か予定入ってたっけ、手帳を見てみないと……」

f:id:S_Shimotori:20170410164938j:plain

私「なるほどだなあ」
私「初参加ですが頑張ります」

やったこと

  • 椅子並べた
  • 机並べた
  • ダンボール箱運んだ
  • 雨ダァ…終ワッタァ……雨ノ日ニ外ニ並ンデイタダク最悪ノぱたーん…

戦利品

フロッピーディスク煎餅

私はぎりぎりフロッピーディスクがわかる世代である。我が家に初めて来たデジカメはSDカードではなくFDに記録するデジカメだったし、高校の家庭科の授業では個人データの保存先がFDだった。

みんなにとってFDってなんなんだ。

食べないと湿気るよねぇ、もったいないなあ。

Swift + Xcode + ScreenSaverFramework でつくるMac向けスクリーンセーバー作成本

こいつの設定がいるっぽい。あとはInfo.plistのPrincipal classが合っているかどうかかな?
f:id:S_Shimotori:20170410175923p:plain

画像を使おうと思ったが、デバッグ時に Bundle.main.resourcePath
/Applications/System Preferences.app/Contents/Resources
を指していたり本番時に /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/Resources
を指していたりとカオスだったので諦めた。

f:id:S_Shimotori:20170411000727p:plain

仕方ないのでCIFilterが毎回画像を生成してる。。

github.com

Unicodeポスター

貼るところがないことはわかっていた。でも買うしかなかった。

f:id:S_Shimotori:20170411140804j:plainf:id:S_Shimotori:20170411140817j:plain

誰もちゃんと教えてくれなかったUSB充電の歴史 / 誰もちゃんと教えてくれなかったUSB充電の中身

読み物。

なんと各国でのUSBの規格の歴史まで書いてあった。後者は簡単な回路が書いてあって目が潰れた。
type A〜Cが存在するくらいの知識しかなかったけど、これを読んでちょっと詳しくなった気がする。

鯨と蜂蜜

honeypot on Docker。
セキュリティとかインフラのことはちっともわからないけど、Dockerなら文字情報だしわかりやすいかなって。
最後には実際にAWSで2週間やってみたときの状況についてのお話が載っていて、それも面白かった。

Swiftの3大プロトコルを眺める

熊谷さんがgistに投稿するたびに自動で原稿吐いて冊子にまとまるシステム欲しくない?
Swift TweetsでSwift Standard Libraryの話する予定なのでこれで予習してる。

技術書典スタッフ

私以外にも何人か応援に来ている人がいた。


Swiftは扱いがあったので岸川さんは泣いてなかったと思う(?)

3週連続で西新宿に行ってきた #tryswiftconf #droidkaigi #落し物

学生なので春休みを満喫している。今はM1なので、長期休みも実質あと

  • 2017年春
  • 2017年夏 修論中間発表
  • 2018年春

2回を残すのみとなった。家族からは残り少ない長期休暇で旅行にでも行ったらどうかと言われた。

でも西新宿が私を呼んでいるんだ。
実際1ヶ月のうちの1/4をカンファレンスで消費するってバイトしてない研究もしてない感あるし春休みでしょ。

try! Swift

www.tryswift.co

try! iOSではないかというツッコミがあまりにも多すぎて面白かったけど気にしないことにする。昨年の「あまりにも早く申し込んだ結果学割ではなく早割を買ってしまって数万払った」という武勇伝を反省し、ちゃんと学割を買って参加。

デレステ廃課金Pを見てもわかる通り、大学生はプログラミングでお金を稼いでいるので自腹早割でも問題ないのである。
金を浮かせて技術書を買うべきなので学割は大事。

iOS(UIKit)は正直あんまり興味がないし、そっちの話はiOSDCで聞けばいいので、目玉はやはりSwift語の発表とサーバサイドSwift。

ちなみに復習進捗状況:

  • サーバサイド関係: Swift3.1待ち。出たら開発再開する。
  • テスト関係: 同上
  • 標準ライブラリ関係: まずは全体図をつかもうと思ってgraphvizで継承関係を描いてみた。

qiita.com

f:id:S_Shimotori:20170314162203p:plain

画像サイズは5MBくらい。エッジが密集していてComparableとEquatableが大人気ということしかわからないので、今はノードの位置の調整と、どの子に注目して見ていくか考え中。

DroidKaigi

droidkaigi.github.io

今年もスタッフをやった。基本的にはご飯配布等をしつつ、時々司会をやって発表を聴講。しかしAndroidの知識がないままこの1年を過ごしたので何もわからない。React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るかなんかはiOSの話も出てきたのでなんとなくわかったけど。

Android関係の面白そうな本をここにメモしておく。

あと1冊忘れた。思い出したら書き足す。来年はこれを読み、実機も買って万全の態勢で臨みたい。

落し物

DroidKaigi会場に研究室の鍵を落とした。

3月10日(金)…
お昼過ぎ: 落とす。
21時頃: スタッフが新宿東口の交番に落し物を預ける。

3月11日(土)…
お昼過ぎ: 落としたことに気づく。落し物リストに鍵を発見。

3月13日(月)…
午前: 西新宿にある新宿警察署に行く。届いていないと言われる。遺失物の届出のみ済ます。
午後: 大学事務に鍵記載の番号を問い合わせる。

3月14日(火)…
午後: 落し物の特徴欄の更新のため西新宿へ向かう。道中、大学側から「落し物をした連絡が来ているので新宿署に行け」というメールが送られてくる。拾得物番号とハンコと身分証を見せて回収する。

2回も余分に西新宿に行くはめになった。みなさん落し物には気をつけましょう。

後の春休みはSwiftをやって暮らすつもり。

DroidKaigi直前のCONBUさんにお邪魔してきた

しもとり「そうだ、ここにAP実物あるんだし、今のうちにこのiPhoneで接続してみよう」
CONBUさん達「こいつDroidKaigiから来たって名乗ったくせにiPhone使ってるぞ?」
しもとり「^^;」

学校から借りたNexusくん、そろそろ返却しなきゃいけないので厳しい。

DroidKaigi

droidkaigi.github.io
今年もやるよ。会場はtry! Swiftと違うベルサール新宿だよ。

最近いろんなイベントがベルサールを使っているので、世界が住友不動産色に見えてきてない。

CONBUさん

CONBU - COnference Network BUilders :: ホーム
カンファレンスのページにこの方々が載っていると快適なネット環境が期待出来る。

何で行ったの?

インフラもネット敷設も何もわからないので、一目見て見聞を広めてきた。

先輩同輩後輩各位は、貧弱ネット環境管理に苦心した懐かしい日を、
前研究室助教大先輩様は、ルーターの設定方法がわからなくてわめいていた私を助けたことを思い出すことだと思う。
(どっちも家庭用)

自宅(実家)のネット環境も父親が管理しているので、契約周りもよくわかってない。

DroidKaigi準備中!

f:id:S_Shimotori:20170223234157j:plain
奥の平たくて四角いのがアクセスポイントで、手前がルーターで、その左がスイッチらしい。私がわかるのはよく天井に張り付いてるアクセスポイントまでだった。もうだめだ。

試しにネットサーフィンやらSSHやらしてみたら爆速。目の前にAPがあるという理想的な環境とはいえ、普段貧弱な環境で息苦しい私にとっては感動を覚える速さだった。

DroidKaigiネットワークスポンサーはSansanさまとリクルートライフスタイルさまです。ありがとうございます!

CONBUさんオススメ資料

本としてはなかなかまとまってないらしい。

知識皆無の私にとって最大の驚きは、監視のためにさくらクラウドを噛ませているところ。機材(物理)を設置して終わりかと思ってた。クラウド時代のネットワーク敷設にはクラウドを使うらしい。

1,000人超の大規模開発者イベント「YAPC::Asia Tokyo 2013」を支えたネットワークインフラ構築の舞台裏~プロフェッショナルのボランタリーが生み出したチカラ|gihyo.jp … 技術評論社

このネットワーク機能のクラウド化とは,DHCPサーバ,DNSサーバ,ルータ機能などを,さくらインターネット上のクラウドに構築し,すべての機能をさくらインターネット経由で行ってしまおうというものです。

クラウドなら私も触ることがあるし、知っておいたほうが面白いかなと思ったけど、この辺りはやはり実機での知識があればわかるそうだ。やはりこの辺の知識が私には足りていない……。どうやって構築してるんだろう。

その他聞いたこと

何でもかんでもペラペラしゃべったらこわそうだからこのへんでやめとこw
いや〜残念だなこんなにわくわくしたのをな〜〜

「ケーブルは踏まれたり挟まれたりで傷みやすく、調子悪くなってないか丹念に調べるよりは使い捨てたほうが楽」っていうのはカンファレンスらしい事情だなって思った。

CONBUさんの次回作

www.elixirconf.jp

お忙しいところありがとうございました。お邪魔しました!

Swift雑記 in 2016 winter

qiita.com

iOSから解き放たれてpureなSwiftを書きたい、しかも誰も書いたことがない題材で!
→その頃たまたま触っていたipythonの存在に気づく、当然誰もSwift kernelは書いてない(それplaygroundでよくね?)
→やはり難易度が高かったので適当にごまかすカレンダー

ipython

IPython kernels for other languages · ipython/ipython Wiki · GitHubに各言語のkernelが書いてある

この辺が参考になりそう
Making kernels for IPython — IPython 3.2.1 documentation
Making kernels for Jupyter — jupyter_client 5.0.0.dev documentation
Creating Language Kernels for IPython - Andrew Gibiansky

シンプルで参考になりそうなやつ:
GitHub - dsblank/simple_kernel: A small, simple kernel example for IPython
これを読んでいた。C#でいけるならSwiftにもチャンスあるでしょ!(?)

SwiftはCLionで書ける

CLionにのみSwiftプラグインが存在する。IntelliJ IDEAにはない。AppCodeは確かに書けるけどあれはiOS

Swift plugin for CLion | CLion Blog
ちょうど去年の今頃の記事だ。
でも別にSPMで持ってきた定義とリンクさせてくれるわけじゃないので微妙。

ZeroMQ for SPM

存在していることにびっくり。
GitHub - Zewo/ZeroMQ: ZeroMQ for Swift

SPMって相変わらずブランチ最新が取れないので、ライブラリによっては「最新は対応してるけどまだバージョンタグきってない」の状態でそのままじゃ取れない時がある。(だよね?)

Cのヘッダファイル

SPMでとってくるテクニックがあったのだが、今は使えない気がする。
Ship C code with swift packages using swift package manager – ankit.imにも書いてある公式ドキュメントは消されてしまった。

つらすぎ。

Range実装

Pythonrangeの実装(Objects/rangeobject.c)を読んだ - Qiitaので、Swiftの方も目を通してみた。

swift/Range.swift.gyb at master · apple/swift · GitHub
PythonがCでゴリゴリやっているのに対し、SwiftはSwiftで実装している。向こうはCという関係上 PyLonglong をさまよっていた。こっちはそういう話ではなく、Swift 3のRange徹底解説 - Qiitaにもあるような開区間だの Int 刻みだのの次元の話をしている。

ぬる安全問題、そして型

議論を読んでいて、なくても平気という人がそこそこいた。みんなぬるぽとか型の間違いをしないのだなあ、いつも間違える私とは違うと驚いた。

型といえば、
Pythonなんか書いた日には生産性がわるい。pandas.DataFrame — pandas 0.19.1 documentationのいう array-like が、ビルトインのlist以外にNumPyのarrayを含むかどうかがぱっと見でわからないのはしんどい。どこまでがarray-likeでそうじゃないんだ。ListProtocol(仮名)準拠のものならなんでも、とかそういう書き方をしてほしい。
PHPも同様。PHP: date_parse - Manualとか、 array を返すと言っておきながら失敗時に FALSE を返すとも言っている。
とかいう文句を私はずっと言っているので、こういうらくちんな言語を書くのに向いてない。

その点Swift Standard Library | Apple Developer Documentationは引数も戻り値も明確で軟弱な私にはありがたい。軟弱すぎる?ダメ?

懺悔

ここだけの話(じゃない)んですけど、
株式会社コンセプトっていうと通じないんですけど、ぬる安全の話の発端の集団って説明すると通じるの便利すぎてやめられない。ごめんなさい。

次回予告

Swift Tweets

LTで抽選に登録してます!どきどき。もし通ったら型とかFPの話になると思う。
来年も勉強頑張るぞ。