Rustでツールを書こうとして、コンポーネントを差し替えられるようにtraitとして定義した。GUIプログラミングの習い性で、IOが発生するメソッドは非同期にしたいから、asyncキーワードをつける。ここでは、何か文字列を読み込む予定のLoader traitを定義する…
買ってよかった2023ということで2023年の「散財 of the Year」を発表します。 Best おもちゃ 今年のBestおもちゃはガンプラ。ガンプラは小学生か中学生くらいの頃にいくつか作ったが、それ以来、20年以上ぶりにプラモデルを作った。 小学生になった息子と作…
現在Swift Evolutionで議論されているSE-0413 Typed throwsについて、Swiftの歴史を辿りながら紹介します。 この記事ははてなエンジニア Advent Calendar 2023の9日目の記事です。昨日は id:kouki_dan のiPadだけでアプリを作ってみるでした。ファスティング…
この秋にリリースされるiOS 17では、充電中のiPhoneに情報を一目でわかるように表示する「スタンバイ」機能が搭載されるそうだ。iPhone 14 Proの常時表示ディスプレイと組み合わせると便利そうだ。 これを活用するには充電中のiPhoneを一定の角度に保つ充電…
Bambu LabのP1Sという3Dプリンタを買った。少し前に出たばかりの機種で、同じメーカーのP1Pという機種にエンクロージャ(覆い)がついたようなモデルだ。 家庭用の3Dプリンタは安いものなら数万円で買えるが、これは12万円弱で、価格帯としてはミドルレンジ…
Apple Vision Proの発表を見ての感想です。 空間コンピュータ 予想通り、ハードウェア面でもソフトウェア面でも圧倒的な完成度の製品を出してきた、という印象だ。ディスプレイからオーディオ、センサーに至るまで、可能な限りが詰め込まれている。新たなカ…
WWDC23で発表されそうなことを考える遊びを行う。 Swift 5.9 Swift 5.9は大規模なアップデートになる。特にMacroとVariadic Genericsは、ライブラリの提供するAPIに影響しそうだ。 Macro Macroは今後のSwiftプログラミング体験を大きく変えていく。自分でMac…
AIにテキストを生成させるサービスでは、テキスト生成の速度が遅いとユーザー体験がよくない。ChatGPTは、生成されたテキストが一度に表示されるのではなく、少しずつ表示されるUIになっている。このことで、テキスト生成の完了まで待たずに結果を確かめられ…
以前、XCFrameworkをバイナリターゲットとしてSwift Packageに埋め込んだライブラリを作った。 これを容易に利用するためには、ビルド済みのXCFrameworkをどこかにアップロードして、それを参照するSwift Packageを公開するとよい。XCFrameworkはGitHubリリ…
Next.jsのapp directoryについて話していて、GraphQLを使う場面ではServer Componentsの魅力がいくらか落ちるよな、と思った。裏を返せば、Server Componentsが活用されるような時代ではGraphQLの重要度が下がるかもしれない。 現にServer ComponentsのRFCの…
1PasswordにはVS Code拡張があって、.env ファイルなどにハードコードされたシークレットを1Passwordに保存して、secret reference というURL形式に置き換えてくれる。 ちなみにコミュニティ製のJetBrains IDE用の拡張もある。 これを使って .env.local.temp…
jq jqはJSONをいい感じにクエリできるやつで、広く使われている。 $ echo '{"foo": "bar"}' | jq '.foo' "bar" 例えばGitHub Actionsのランナーにもデフォルトで入っている。 あるいはGitHubのCLIツール gh にも --jq オプションがあって、統合されている。 …
Docker Desktop for Mac Docker Desktop for Macでは、仮想マシン上のLinuxでDockerを動かしている。仮想マシンにはhyperkitやQEMUが使われていた。が4.14.0からVirtualization frameworkがデフォルトで使われる。 Set Virtualization framework as the defa…
働き始めてから丸10年経った。 2012年、僕は北海道に住む大学院生で、趣味としてプログラミングを楽しんでいた。Appleのファンだから、macOSやiOSのアプリケーションを開発して、ちょっとでもAppleに近づいたような気持ちになっていた。その夏1ヶ月のインタ…
macOS VenturaおよびiPadOS 16で導入されたステージマネージャだけど、どうやって使うのか段々わかってきた。 ステージマネージャのコンセプト ステージマネージャは、ウインドウのセットを作る機能だ。タスクに合わせてウインドウのセットを作れば、複数の…
SwiftUIからSFSafariViewControllerを使いたい場面は多い。 SafariView SFSafariViewControllerはビューコントローラーだから、UIViewControllerRepresentableを使ってSwiftUIのビューにしてしまうのが簡単か。 import SwiftUI import SafariServices struct…
はてなのインターンシップに参加した2012年の夏から、10年弱、京都で暮らした。その間に結婚もしたし、二人の子供にも恵まれた。京都では2Kの賃貸住宅に住んでいて、ひどく手狭だった。上の子は来年度から小学生になる。その前に引っ越しておきたい。 勤務先…
WWDC22で何が発表されるのか、期待で眠りが浅い日々を過ごしている。何かヒントはないかとSwiftの次期バージョンについて調べていた。 普段から、定期的に同僚のid:ikesyo、id:yutailang0119、id:nakiwo、id:kouki_danらとSwift Evolutionの様子をチェックし…
プライベートな用事でサーバサイドで何かやりたい場合、サーバレスな構成が第一選択になる。規模が十分に小さい場合、サーバレスにした方が安い。常にインスタンスが立ち上がっているような構成は(たとえ冗長構成を取らなくても)プライベートな用事程度で…
筆者の勤務先ではScrapboxというWiki的なツールが導入されていて、何でもそこに書いている。 そして筆者は以前からPlantUMLなどで作図するのが気に入っているが、最近は同様の目的を持ったMermaidがよく使われている様子がある。2021年12月にはNotionが、そ…
GitHub Actionsでdocker buildすることが多い。このときのキャッシュをどうするかという話題。 基本 GitHub Actionsでdocker buildしてAmazon ECRにdocker pushする、典型的な.github/workflow/docker-push-to-ecr.ymlはこういう感じ。 name: Push to Amazon…
春にShure MV7というマイクを買って、快適に過ごしていた。 快適に過ごしていたけど、このとき適当なマイクアームを買っていたことで、気になるところがあった。 口から近い位置に設置できた方がいいので、適当な安いアームも買った。 マイクアームとしての…
macOS Montereyから、「メモ」アプリに「クイックメモ」という機能がついた。 インターネットブラウジングをしていて気になったことを書きつけていくのにちょうどよさそうなので、使ってみることにする。ある事柄に関連するリンクをひとつのメモに連ねていっ…
AndroidのウィジェットをComposeのAPIで作る方法がAndroid Dev Summitで紹介された。RemoteViewにうまく対応する。 Glanceと呼ばれていて、コードは公開されている。 しかしまだアルファ版も出ていない。 アルファリリースに向かって開発中らしい。 Okey, so…
この秋のうちにSharePlayとUniversal ControlをサポートするmacOS Montereyがリリースされる。バージョン番号はおそらく12.1になるだろう。 Available later this fall macOS Monterey - Apple 同じタイミングでmacOS Monterey 12.1のSDKを含んだXcode 13.2…
今週、10月23日(土)に発売されるWEB+DB PRESS Vol.125に掲載される、特集記事「GraphQL完全ガイド」を執筆しました。よろしくおねがいします。 桃栗三年、GraphQL 6年 原稿を書く過程で、知っているはずのことでも改めて調べなおしたりする。特に歴史みた…
新しいものが好きなので、GitHubの新しいプロジェクトで仕事をしている。まだベータ版だが、少し前に会社のアカウントで有効になったので、所属するチームで大喜びで使い始めた。 もともとしばらくAsanaを使っていて、Asanaはタスクに依存関係がつけられたり…
Swift 5.5がリリースされた。おめでとうございます。 Swift 5.5の目玉はもちろんSwift Concurrencyだ。言語機能として並行処理がサポートされた。async/awaitの構文だけでなく、Structured Concurrencyとしての整理や、actorの導入など、野心的な取り組みと…
毎年この時期になると、毎日のようにWWDCのことを夢想している。 去年はSwiftUIのアップデートとApple Silicon搭載のMac、ホーム画面のウィジェットに期待していた。 去年の期待は、いろいろなことをうまく言い当てているようにも見えるし、少し過剰なところ…
SwiftUIにはDynamicPropertyというprotocolがある。 これを使ってみようという趣旨の記事を見かけた。 ので、私も試してみました。 @Now import Combine import SwiftUI class Clock: ObservableObject { @Published private(set) var date: Date = Date() i…