「ファミコンエミュレータを作る」と聞いて何を思い浮かべますか?
多くの方は何をどうしたら良いのか全く想像が付かないと思いますし、私もそうでした。
2016年2月にPHPで書かれたゲームボーイエミュレータ php-terminal-gameboy-emulator が話題になりました。このとき、PHPならばということでコードを読んでみました。エミュレータのコードを読んだのは初めての経験だったのですが、大きな衝撃を受けました。私は以前からこの頃のゲーム機に共通する仕様や、CPUやメモリについての知識は持っていたのですが、php-terminal-gameboy-emulator のコードにはそんな仕様がそのままPHPのコードとして表現されていたのです!
そしてその2年後、あるカンファレンスでファミコンエミュレータに関するトークを聞いた時に、2度目の衝撃が私を襲いました。そこで紹介されたコードは初めて見るにもかかわらず、断片を見るだけで内容が理解できたのです。
このトークでは2度目の衝撃を受けて私がPHPで書いたファミコンエミュレータ php-terminal-nes-emulator を題材に、エミュレータのコードの特長や設計、そしてその魅力をお伝えします。
CPUの動作(メモリアクセス, I/O, …)
エミュレータでの実装
ハードウェア仕様のソフトウェアとしての表現
エミュレータは決して難しいものではなく新しい言語の学習や設計の練習にちょうどよいテーマでもあります。このトークを聞けばきっと一度エミュレータを書いてみたくなるでしょう。
昨今やっとマイナンバーカードが普及してきており、マイナンバーカードを読み取って本人確認を行ったり、確定申告の電子申告を行ったりするサービスが増えてきました。
今後も(政府が頑張れば)マイナンバーカードは色んな情報を取得するのに使われていくでしょう。
今回では実際にマイナンバーカードの読み取りをプロダクトに組み込んだときの話を織り交ぜながら、マイナンバーカード読み取り機能の実装方法を紹介していきます。
[Target]
・今後マイナンバーカード読み取り機能を開発予定の方
・マイナンバーカードの読み取り方法について興味がある方
・マイナンバーカード読み取り機能をプロダクトに入れたときの苦労話を聞きたい方
[Goal]
・マイナンバーカード読み取り機能を実装する際に障壁無く実装出来るようになっている
・マイナンバーカード読み取りをプロダクトに導入するには何が必要なのか知っている状態
ソフトウェア開発において、チームのパフォーマンス改善は皆さんが継続的に取り組んでいる課題の1つだと思います。
チームのパフォーマンスを定量的に評価する代表的な指標として、GoogleのDORAという研究チームが確立したFour Keysがあり、これらの指標を使ってチームをそのパフォーマンスに応じてエリート、高、中、低に分類することができます。
iOSのチーム開発においても、デリバリーフローやオブザーバビリティを改善していくことでエリートチームを目指すことができます。
このトークでは、まずFour Keysとその定義を紹介し、計測方法について整理します。次に、iOSアプリ開発におけるボトルネックと、Four Keysに取り組む上での難しさについて解説します。また、私達のチームでの具体的な取り組みを紹介し、みなさんのプロジェクトでも明日からエリートチームを目指せるようにしたいと思います。
Swift向けのコードテンプレートを作成できるStencilを知っていますか?
実はSwiftGen, Kitura, Sourceryといった著名なOSSでも使用されている面白い言語です。
用意されたコマンドを用いることで、OSSでは簡単にコードを生成することができますが、自分でカスタマイズすることも可能です。
このセッションでは、どのようにしてStencilを使っているのか紐解いていきます。
また、Xcode templateやSnippetといった既存の言語テンプレートとの比較も交えて、どのように使っていくのかをご紹介していきます。
参考文献
Stencil: https://github.com/stencilproject/Stencil
StencilSwiftKit: https://github.com/SwiftGen/StencilSwiftKit
SharePlayとはiOS 15で登場した、FaceTime通話中に離れた場所の友達とアプリのコンテンツを共有する機能です。
iOS 16ではこのSharePlayは付加機能というよりはiOSの基幹機能へと進化を遂げたという印象を持ちました。
このLTではSharePlay / Group Activitiesについて5分でまとめて紹介します。
もちろん、iOS 16でのアップデート内容をメインに添えて!
みなさんはswift-format使っていますか?
コードを書きながらリアルタイムでswift-formatでチェックするだけでなく、最後の砦としてGitHubにpushされたコードをswift-formatでチェック・整形してもらうのとても便利ですよね。
このLTでは、GitHub Actionsでswift-formatを自動実行するまでに行なった以下の試行錯誤を共有して、より良い方法などみなさまにも相談できればと思います。
記号論 (記号学) という言葉を聞いたことはあるでしょうか。近代言語学の父と言われるソシュールにより基礎が築かれたとされ、彼は記号モデルについて二元論を唱道しています。これは「りんご」という言葉を考えたときに、実世界の“りんご”に「りんご」というラベルをつけているものであり、記号というのはラベルが対象の事物を指し示すことと言えます。記号論 (記号学) ではこれを足がかりとしその恣意性など記号に関する学問領域を指すものです。
田中久美子氏の名著「記号と再帰」(2010)は、記号とプログラミング言語の対応を特に再帰について探求したものです。1例を挙げると、関数型プログラムの識別子とその内容は先の「りんご」と “りんご” にあたるというような具合です。
本発表では5分で不動点関数と記号の再帰的定義を例にあげ、「記号と再帰」という本について興味をもってもらい、手にとってもらうことが目的です。
子育て4年目。
3年以上前、Apple純正ロンパースを着ていた小さな👶はすくすく育ち、
今ではiPadを自由自在に操れるようになり、幼児向けアプリに限らずいろんなアプリを楽しめるようになってきた。
一方で「なるほど、こういうUIだとわからなくなって泣いちゃうのか」という場面に遭遇することも。
そんな日々微笑ましく感じていたのも束の間、
ペアレンタルコントロールの重要性と偉大さに気づく日がやってきた。
子育ては十人十色。正解も失敗もないかもしれない。
でもだからこそ一例として伝えたい。
こうすればよかった、こうしてよかった。
2歳3歳が夢中になるコンテンツとは。
任天堂はすごい。
子ども向けアプリを開発するならこうして欲しい、こうすれば儲かりそう。
直接開発には関係ないけれど、これから子育てが控えているエンジニアの参考になれば…
そんなエピソードをお届けします。
ネイティブではもう無理だと 諦めていたのにどうしたの?
あの頃 僕達はさ 何でもできる気がしてた
2軸で表を描いては たくさん点を打ったね
でも見てよ今の僕を クズになった僕を
Chart.jsをWebViewで見せても 何も感じ取れなくてさ
別にChartを求めてないけど 急に出されると思い出す
ラインチャート(折れ線グラフ)&バーチャート(棒グラフ)の そのグーラフのせいだよ
このトークでは、WWDC22で発表されたSwift Chartsフレームワークについて話します。
まだ発表直後でベータ版ですが、できる限り様々なチャートを触り、見た目や使い方などを紹介します。
正直なところ Core Animation は私にとって、何度も解説を見聞きしたのに、理解した気になれない技術でした。
iOS歴10年目に入ろうという昨年末、私はAppleの公式ドキュメントと対峙することが出来ました。
この技術と決着をつけるためです。
時間の許す限り調査し検証した結果である記事「詳しく知りたいCore Animation レイヤー編」「アニメーション編」を
自身のブログをに公開したところ、ツイッターなどで「わかりやすい」などのリアクションを頂くことが出来ました。
この発表では、Core Animation 紙面上の都合で記事からカットした部分、SwiftUIやUIViewでのAPIとの比較、基礎知識や応用例など、よりブラッシュアップした内容をお届けしたいと思います。
おかわりは自由です。
既にOSSで公開されているライブラリや、実装済みの機能を使わずに自前で実装することを車輪の再発明と言います。
それはしばしば時間の無駄と思われがちですが、どんなに使い込まれたライブラリでもメンテナンスされなくなったら終わりです。
本LTでは、2年ほどメンテナンスが放置されたライブラリを捨てる為に自前でライブラリを再実装した際の知見をお話します。
Firebaseには、NoSQL DBのCloud Firestoreやバックエンドコードを実行可能なCloud Functionsといった機能を備えており、インフラのことをほぼ意識せずとも、サーバーレスなアプリを立ち上げられる他、クライアントに提供されているSDKを利用し、クライアント間でのデータ同期や、オフラインデータの永続性といったアプリの体験に寄り添った機能を享受できます。
一方、DBはスキーマレスであることや、クライアントから直接DBにアクセスするなど、馴染みがない仕組みも多く、仕様や特徴を踏まえた開発を行わないと、セキュリティやユーザー体験に悪影響を及ぼしたり、負債となる要因になり得ます。
本セッションでは、クライアントエンジニアのみのチームでサーバーレス開発を行う中で見えてきた、効果的にFirebaseを利用する方法を事例と合わせて紹介します。
CombineはiOS13から登場した時間変化による値の変化を処理するための宣言的なAPIを提供するフレームワークです。
今秋にはiOS16が登場し、iOS14以上をサポートできるアプリも多くなった昨今。
Combineは新しい技術ではなく、当たり前の技術となりました。
一方コミュニティを見回すと、当たり前のようにCombineを使いこなす層とまだまだCombineの勘所を得ることができない層との間に断絶があるように感じます。
SwiftUIとも密接な関係があり、せっかくのApple標準のフレームワークであるCombineを覚えないのはもったいない!
ということで、興味がある方みんながCombineに入門できるようなトークをしたいと思います。
本トークでは概念を頭で理解するというより、ちょっとずつステップを踏むことで「手を動かしていったら自然に理解が進んだ」を目指します。
多くのプログラミング言語に備わる機能 "String Interpolation" は、一般的には変数をプレースホルダーに展開する機能です。
しかし、Swiftでは、ある秘密が隠されていたのです!
そう、Swift実装では開発者に拡張手段が提供されていて、高度で静的な文字列操作を可能にします。
さらに、SwuiftUI.Textの機能が充実したことで、近年では単純なStringとしての表現を超え、活躍の幅は広がっています。
このトークでは、文字列操作としての典型的な使用方法から説明し、SwiftUI.Textと組み合わせた便利な活用方法を紹介します!
開発を進めているといつも決まったボイラープレートを書いていることがありませんか?
そこでXcode File Templateの出番です。
このLTではXcode File Templateを利用してコードを自動生成し開発効率をアップさせる方法について話します。
このLTがみなさんの開発効率向上につながれば幸いです。
WWDC21で発表されたObject Capture、皆さん触りましたか?
当時私はObject Captureのために家庭内稟議(YAuth)を通してM1チップ搭載MacBook Airを買いました!
本LTでは発表から1年が経つApple純正フォトグラメトリ機能であるObject Captureを今改めて振り返ります。
Object Captureの実例として、実際に出力した様々なUSDZファイルをご用意しました。
LT中にお手元のスマートフォンを使ってARでお試しいただきます!
様々な developer 向けのロードマップを公開している roadmap.sh
ここにはなぜか iOS developer 向けのロードマップが存在しません。これとは別に 2018年に reddit に投稿されたロードマップが存在し、これがよくできているのですが、4年も前なので、 Objective-C, UIKit, DispatchQueue に関しては、 Swift, SwiftUI, Concurrency と置き換わるものが有力になってきていて、こういった変遷を反映したロードマップを提案したいです。
本トークでは、以下の観点からお話ししようと思っています。
Xcode Project の Build Settings に潜む知っておきたいけどよく知らないそんなプロパティや Valueについてコールしまくります!
Kernel!Module!Bundle Loder!Build!Assets!Strip!Swift!Symbol!グイグイヨシコイ!🍾
ディープリンクは、ブラウザや他のアプリからターゲットとなるアプリへのシームレスな遷移のために重要な技術ですが、まとまった情報が意外なほどありません。
iOS / Androidのアプリをディープリンクに対応させるときに悩んだことと、それにどう対処したかについてお話しします。