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

DroidKaigi 2018にスタッフ参加してネットワーク環境の提供をした #droidkaigi

もう3回目だよ

DroidKaigi 2016のスタッフをやったはなし - S_Shimotori’s diary
DroidKaigi直前のCONBUさんにお邪魔してきた - S_Shimotori’s diary
3週連続で西新宿に行ってきた #tryswiftconf #droidkaigi #落し物 - S_Shimotori’s diary

なぜ参加したの

  • 2016が大学を借りての開催で、会場案内くらいならできそうだったから
  • その後は惰性 スタッフを辞める理由はなかったから
  • 私以外のスタッフがAndroid開発のプロ、つよい
    • わたしはSwiftを書きたいので仕方なくiOSやってる(バイト辞めたのでそれすらわからなくなった)
  • iOSDCやtry! Swiftのコアスタッフをやろうものなら聞きたいセッションを全部聞くのは難しいだろうから、ここは専門分野を外してAndroidのスタッフをやるのがいいと思ったから
  • 大学学園祭とはまた違った環境と規模で興味深いから
  • ネットワークの勉強のため

学園祭実行委員会ではネットワーク担当という名でWeb屋(PHPer)をやっていたので名前詐欺だったが、今回は本当にネットワーク環境の用意をやったのでマジネットワーク担当。

ネットワークスポンサーはPicAppさん、
技術協力はCONBUさんとブロードバンドタワーさんとさくらインターネットさんでした!!!!!!

CONBUさんといっしょにネットワーク設営

CONBU - COnference Network BUilders :: ホーム

ネットワークチームに首を突っ込むのは、ホットステージにお邪魔したDroidKaigi 2017当日飛び入り参加したiOSDC Japan2017に続いて3回目。
今回はSWやAPやケーブルの配置を決めた!それ以上の仕事は修論が爆発してできなかったので次の機会に。

いただいた質問

ヒートマップってどうやって出してるの?

アクセスポイント→Wireless LAN Controller→Zabbix→(キャッシュ)→JavaScript描画

要するにヒートマップは
🙅 人の位置
🙆 アクセスポイントごとの端末接続数
を表したもの

下図の○がアクセスポイントの位置
WLCとZabbixはさくらのクラウド上で運用。CONBUさんが鯖(物理)を持ち込んでやっていた頃、鯖が壊れてどうしようもなくなった事件があったらしい。リバースプロキシがいるのはヒートマップ等のAPIを扱うため

f:id:S_Shimotori:20180211123952p:plain

f:id:S_Shimotori:20180211130424p:plain

やはりヒートマップを表示させておくとみなさんが興味を持ってくださるのでいいね
なんたってセッション〜休憩の移動でヒートマップのようすが刻々と変わってくからね

どんな機材使ってるの?

Ciscoググるとやり方が出てくるからよい
物理鯖ではなくクラウドなので誰でも使える親切設計
pfsenseには誰でも持ってるmacbookを使おうとしたがダメだった

アクセスポイントの置き場所はどうやって決めたの?

部屋の定員(200人とか)を50端末/台で割った数
……から1を引いた数を各部屋に散らした(機材の数が厳しかったため)

あとは会場や人の動線との相談
転ばないようにLANケーブルを這わせ、電源のあるところにPoEスイッチを置き、参加者の方やビデオ撮影に邪魔にならない位置にAPを置く

APあたりの接続数は50端末で見ておけばいいかな?という話だったのだが、上手に配置できなかったりAPの向きがイマイチ(届く範囲は正面180度とのコト)だったりして、結局1台に150端末繋がっていることもあった

ちなみに:
狭いスペースにたくさんの人と端末が集まっているということは、つよいAPに狭い範囲をカバーさせなければならないということである
場所を移動したら接続先のAPを変えて欲しいので……

  • APを置く台として譜面台を採用し、あまり遠くまで飛ばないよう高さを低くする
  • 通信速度が一定値を下回ったら接続を切る設定をしておく

1日目遅かったんだけど??

  • AP1台に最大150台繋がってて厳しかった
    • 物理的な位置の問題
    • 設定の問題??
  • pfsenseを動かしていた機材のスペックがipsecの暗号化処理には厳しかった

ので、2日目は

  • 一部のAPの物理的な位置をずらした
  • 一部のAPの高さを高くした
  • pfsenseの機材をいいやつにした

などなどで対応した

会場側pfsense〜クラウド側pfsenseの間は、厚い札束でなぐったり工事したりする領域なので、速くするにも限界はある

まとめ

まだ修行が足りぬ〜〜

CONBUさんはメンバーを募集していらっしゃるしDroidKaigi側のネットワーク人材も足りてないので誰か一緒にやろう

技術書典3でもお手伝いをした

前作: 技術書典2に初参加した - S_Shimotori’s diary

わたし「技術書典3やるんだ、また混雑するんだろうな」
わたし「🐑さん、当日の人手は十分に集められたのかなあ」
わたし「なんちゃって」

🐑「22日暇ですか」

わたし「出、出〜!」

わたし「ていうか22日雨じゃん!!!!!!!どうかしてやがるぜ!!!」

10月は雨季だからイベント降水確率は体感で50%くらい。10月に何度歴史を繰り返してもどうせ雨だから諦めろ。でもそこで台風クジをひくのはすごい。

イベント当日のスタッフの必需品

  • ショルダーバッグ OR ウェストポーチ …マニュアルやパンフレットやPCを入れるなら前者
  • モバイルバッテリー AND ケーブル …ツイッターとソシャゲをし続けるよりは消費しないので、普段より電池の持ちがいい
  • ハサミ AND カッター …必要な時に限って手元にない
  • 軍手 …すぐ怪我する
  • タオル …雨だもの
  • 予備の靴下 …濡れると不快
  • 蛍光ペン …地図入りの案内のビラに道順を書き込んで渡す
  • 飲み物 …人権
  • ウイダーinゼリーみたいなパウチ …疲労のあまり固形物が食べられない場合がある
  • 足用カイロ …会場設備によっては寒い
  • 野菜ジュース …栄養バランス補正
  • 立ち仕事に耐久性のある足 …エンジニアが失ったもの
  • 強い腰 …すでに破壊されている人は諦めるしかない
  • 強い腕 …腕が短く体格のない人間にはあっても無意味

技術書典は1日開催で会場も小さいので、蛍光ペンウイダーinゼリーと野菜ジュースはいらないし、モバイルバッテリーの出番もなかった。カイロも靴下も外のシフトがほとんどなかったから出番なし。

入場待ち問題

前回の技術書典2では雨天のため屋根のない場所にお待ちいただくことになってしまった。

blog.techbookfest.org

blog.techbookfest.org

午前中は外に出なかったのでわからないが、4Fがあったりそもそもそんなに混まなかったりで去年より快適だったと思う。特に4Fは落ち着いて立ち読みできたと思うし、人混みが苦手な人には特におすすめ。

そんなに混まなかったといっても、お昼頃は身動きできなくて大変だった。そして雨にも関わらずさっと完売をキメる人気サークルの皆様。

戦利品

今回(というかイベントのたびにだけど)疲れていたのでこれだけ。もうちょっと深呼吸していろいろ目を通せばよかった。

真面目本として技術季報と公開鍵暗号、ちょっとネタ本として肉とマリオを買った。(公開鍵暗号は売り切れてたので厳密には0円でQRコードを取得)

もちろん肉もマリオもガチでネタに走っているので、中は文字やグラフや図解でびっしり。読んでてわくわく。

Anova、ブラックフライデーとか型落ちとかで安く買える場合があるという情報を教えてもらった。

まとめ

結構大学の知り合い来ててビビる。

#iOSDC でも #orecon_ios でも #iOSDCRC でも発表してしまった感想とか

なぜiOSDCで発表したのか
???「チケットタダで欲しかったし…学生のうちにカンファレンス級で発表したかったし……」

なぜ俺コンで発表したのか
???「@tarappoさんが是非って言ってくれて嬉しかったから…」

なぜReject Conferenceでも発表したのか
???「みんなの応募の勢いが悪かったからいいかなって」

なぜそんなに発表したのか
???「勉強会駆動勉強というのがあってですね、勉強会で発表するために必死に資料を読むんですよ」

自重しろ
???「この3種の発表資料を生み出すのにまた修論進捗を犠牲にしたのでもうだめです(人生が)」

iOSDC JAPAN 2017「ARC vs. GC? ARC in GC?」

GCについて何も知らないなあと思ったので発表した。正直この3回の中では一番炎上危険度が高く、発表していて怖かった。
Rustのリファレンスを読んだところまではいいけど、Cycloneの環境構築のページを読んだところで正直やる気が削がれた。興味がある人は是非Cyclone先輩に挑戦してみてほしい。

それから、特にC/C++/Cyclone/Rustはガベージをコレクションするというよりぶら下がりポインタの対処話になってしまうので、どう頭の中で整理したものかめっちゃ混乱した。

speakerdeck.com

俺コン「今こそテストの気持ちを考える」

あまりに社会人のみなさんが懇親会で「テスト書いてません」とおっしゃるので喧嘩を売りにいった。なのでこれも発表していて怖かった。実際にこれを聞いてくださった方は、わざわざ聞きにきてくださるだけあってさすがにテストは書いているようだった。

speakerdeck.com

テスト書いてない問題はもちろん、そもそもテストとはなんなのかという疑問を出発点にテストを調べ始めた。したがってこの15分の話は調べたことのほんの一部にしか過ぎないし、もちろん調べ終わっていない。JUnit3→4移行話とかXCTest内部実装とか早急に調べたいのだがうわー修論うわーうわーうわー。

github.com

Reject Conference「郵便屋さんの演算子

Swiftのガイドの演算子の文法の箇所を見て、何書いてあんのかわからん!となったのがきっかけ。Qiitaを調べても、演算子定義の方法は書いてあっても使える文字の話の記事はなく。
マジで何が書いてあるのかわからないのでしばらく読まずに放置していたが、技術書典2でUnicodeポスターを買ったのをきっかけに気合いで読んだ。ついでにちょっとだけUnicodeに詳しくなった。ちょっとだけ。

speakerdeck.com

qiita.com

発表してみて

  • リジェクト分はOtemachi.swiftとかiOS Test NightとかSwift Tweetでやるしかないかなあと思っていたが、結局iOSDC関連でだいぶ片付いた。ありがとうございました。
  • 勉強会駆動勉強により、GCとテストとUnicodeの知識がちょっとついた。
  • 自ら発表することにより、懇親会で来てくださった方の側から話しかけてくださったのでコミュ障的には楽だった。
  • 多少顔を覚えてもらったかなあ。Swift TweetやOtemachi.swiftで発表するなどしたのもあったと思う。
  • 今の実力では、リファレンスに書いてあることや理論をお伝えするのが限界。ベストプラクティスを共有するには経験値が皆無で無理。
  • 修論つらい
    • 結局俺コンとリジェクトコン2日目をキャンセルごめんなさい

今後に向けて

  • 引き続きテストについては調べていく所存。
    • XCTestの内部実装のうち、XCTAssertシリーズは近いうちに共有したい。
    • JUnit3→4問題については、Javaアノテーションの仕様も勉強しないといけないので面倒臭いなあ頑張りまーす
  • GCについてはとりあえず一旦終わり。C/C++/Rustの勉強はまだ足りないからいずれやるかも。アルゴリズムを考える脳みそはないので専門家にお任せしたい
  • 演算子は実用的でないのでもういい。Unicodeは…何か読み物を読むくらいなら
  • ベストプラクティスというか実際の業務やOSSで役立つ手法というか、そういうのを共有できるようになりたいですね
  • しゅ〜〜〜うろ〜〜んしゅうろんしゅうろ〜〜〜ん修論〜〜〜〜〜〜〜〜
    • 就活と学位論文は人間の体に毒なので即刻やめるべき
    • 脳内に「学位論文」というラベルの貼られたタスクがある、それだけで猛毒
    • とりあえず勉強会からは冬眠

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は扱いがあったので岸川さんは泣いてなかったと思う(?)