kateinoigakukunのブログ

思考垂れ流しObserver

2020年のオープンソース活動

2020年はOSS開発に多く時間を使ってきたなぁと思ったのと、GitHub Sponsorsからの振り込みがあったので、報告を兼ねて軽く今年何をしてきたか振り返ってみようと思います。 SwiftWasm 年間を通してずっと開発していたプロジェクトの一つです。このプロジェク…

Swiftに搭載予定のC++相互運用機能

Swift Advent Calendar 2020 の1日目の記事です。 今年の頭頃からGoogleのSwift for Tensorflowチームが主体となって、SwiftとC++の相互運用機能の議論と実装が進んでいます。 まだ未実装な部分も多く今すぐに試せるわけではありませんが、マニフェストの内…

iOSDC 2020に参加/登壇 しました

kateinoigakukunです。4回目のiOSDCに参加しました。3年連続スピーカーとして参加です。 発表内容 プロポーザル fortee.jp スライド デモ Our co-maintainer @kateinoigakukun developed an amazing demo that allows you to experiment with SwiftWasm and …

IndexStoreを使ってSwiftコードを静的解析する

Swiftで静的解析ツールを作るとなると、基本的にSwiftSyntaxを使うことが多いと思います。 ただ、SwiftSyntaxで得られる情報はコンパイラ内部のパイプラインの序盤で生成されるため、「ある変数がどこから参照されているか」といった意味解析後に解る情報は…

WebAssembly向けのデバッガを開発しました

こんにちは。私はSwift言語のWebAssembly向けコンパイルをサポートするプロジェクトを進めている一人です。 その開発を効率的に進めていくためにWebAssembly向けのデバッガwasminspectを開発しました。 Swift for WebAssemblyの進捗 この間フォーラムに詳し…

XcodeGenとCocoaPodsをいい感じに使う

背景 XcodeGenはXcodeのプロジェクトファイルをYAMLから生成するためのツールです。生のプロジェクトファイルは記述が冗長であったり、とても人間が手で管理できるものではないため、YAMLで管理しようというのがモチベーションです。 github.com iOS/macOSア…

Effective Techniques in Swift Runtime Library

en Swift言語のランタイムライブラリで使われているテクニックについて解説します。 ランタイムライブラリと実行可能ファイル Swiftを実行するためにはswiftCoreというランタイムライブラリが必要です。意識することはあまりありませんが、静的もしくは動的…

19になりました。

こんにちは。 例年のごとく今年もやってきた誕生日ですが、今年は気がつくと謎のアドベントカレンダーにjoinしてました。 誕生日を迎えました(9/16追記)|noppe*|note 誕生日アドベントカレンダー、次回は家庭の医学くんです。(ノンアポ) ということで…

Inside SwiftUI (About @State)

SwiftUI was announced at this WWDC and we've tried it for a few days. This WWDC was the moment everything changed for me. But SwiftUI is still a private source software as well as UIKit and we need to develop applications while speculating…

Inside SwiftUI @State編

WWDCでSwiftUIが発表されてから数日が経ちました。一気に世界が変わった気がしますね。 ただ、UIKitと同様にSwiftUIはオープンソースでは無いため、我々開発者は依然挙動をエスパーしながら開発する必要があります。 その中でも、SwiftUIのチュートリアルを…

try! Swift 2019

毎年期末試験の時期と重なって参加を断念していたので初参加でした。 参加できるだけでも嬉しかったのですが、光栄なことにスピーカーとして登壇することもできました。 大きなカンファレンスでの登壇は昨年のiOSDCが最初で今回はそれ以来です。ただ、今回は…

Swift Type Metadata (en)

www.youtube.com try! Swift 2019 I'm kateinoigakukun, working at Mercari as an intern. Today, I'll talk about Metadata which is one of the most important things to understand how Swift works. Swift is well-known for being a statically-typed…

Swift Type Metadata (ja)

www.youtube.com try! Swift 2019 kateinoigakukunです。メルカリでインターンをしています。 今日はSwiftを理解するために重要なメタデータについて話します。Swiftは静的型付けな言語として知られていますが、 実はランタイムにおいては動的な部分が多々あ…

18になった

18歳になりました。1年間の振り返りと気持ちを書いておきます。 17歳 やったこととしてはこんな感じ。 iOSエンジニアのバイト 勉強会参加 カンファレンス登壇 コンパイラいじり 卒論 OSS開発 アニメ鑑賞 自分としては結構充実していたと思ってます。が、行き…

iOSDCで登壇したよ

今年はスピーカーとして参加しました。 発表内容 とりあえずスライドを貼ります。コンパイラのコード部分は口頭で喋った部分が多いので動画が公開されるのを待ってください。 スライドも貼ったのでこの記事の役割は終わりました。ここからは思ったことをつら…

iOSDC Japan 2018でコンパイラの話をします

お前は誰 Twitter @kateinoigakukun GIthub @kateinoigakukun 今はStart Today TechnologiesでiOSエンジニアの学生バイト 話します こんにちは。今週の8/31にiOSDC Japan 2018でコンパイラの話をします。 コンパイラから紐解くSwift method dispatch by 家庭…

Swift LLVM IRを読む - classの初期化

swiftc -emit-ir foo.swift で出力したLLVM IRを読んだ際のメモ class A {} let a = A() このコードからLLVM IRを出力してmain関数のみを取り出したのが以下である。 define i32 @main(i32, i8**) #0 { entry: %2 = bitcast i8** %1 to i8* %3 = call swiftc…

Enumの生成を制限する

Discordで話題に上がってたやつ。遊んでたら見つけた。 tarunon - 2018/04/26 午後4時2分 Enumを生成勝手に出来ないようにする方法って無いですよね structはinitをpublicにしなければ勝手に生成出来ないけど protocol extensionで同名のstatic funcを生やす…

├の読み方

「├ 読み方 数学」とかいうアホっぽいクエリを投げてしまった。 シークエント - Wikipedia 一番悲しくなったのは、この記号が出現した数行下にキチンと解説してあったこと。さすが型システム入門、素晴らしい入門書だ。

コンパイルが通ってほしいSwiftコード

見つけたら随時更新。バグレポ出してないやつもある Protocol extension周り protocol extensionの中でtypealiasを貼ると何かが壊れる 'T' does not have a member type named 'A'; did you mean 'A'? func foo<T: P>(a: T) -> T.A { fatalError() } struct B {} p</t:>…