【SwiftUI】UIViewRepresentable の使い方とライフサイクルを理解する

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

この記事は SwiftUI Advent Calendar 2024はてなエンジニア Advent Calendar 2024 の 21 日目の記事です。 大遅刻してすみません。

みなさん、SwiftUIは使っていますか? 自分は今年からiOS開発を始めたので、ほとんどSwiftUIで書いています。

ですが、稀にどうしてもUIKitを使わなければならない場面があります。 例えば、広告SDKを使うときだったり、UICollectionViewを使いたいときだったり。

そういうときに便利なのが UIViewRepresentable[^1] や UIViewControllerRepresentable[^2] です。 今回は、これらのクラスの使い方について説明したいと思います。

続きを読む

TypeScriptとC#をやってきたWebエンジニアがSwift Tourを読んでみたログ(重要項目抜き出してみた)

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

これまでWebのフロントエンドとバックエンド開発中心でお仕事をしてきたのですが、 最近iOSアプリ*1の開発を始めまして、Swiftを書くようになりました。

それにあたって、Swiftを勉強するのにSwift Tourを読んでみました、 ですが、Swift Tourはどちらかといえばプログラミング初学者向けに書かれているので、TypeScriptのような他言語に慣れ親しんだ人が読むにはちょっと冗長だなと思いました。

自分がSwift Tourを読み進める中で、特に重要なポイントを抽出してメモしていました。これらを整理し、他の人にも理解しやすい形で共有しておこうと思いました。

これまで自分がTypeScriptを主に書いていたので、このメモはTypeScriptとSwiftの類似点と違いに焦点を当てて書いています。

新しいUIフレームワークとしてSwiftUIが最近登場したのですが、これは比較的Reactに似ている宣言的UIで記述できるUIフレームワークです。 そのSwiftUIがiOS開発の中心になりつつあるので、Webフロントエンドを中心にやっている開発者は非常に取っつきやすくなっていると思います。 なので、このメモがWebフロントエンドを中心に書いている方々の参考になれば幸いです。

docs.swift.org swift-programming-language-jp.gitbook.io

  • Swift Tourを始める前に最初に文法を見た感想
  • シンプルな値(Simple Values)
  • 制御フロー(Control Flow)
  • 関数とクロージャ(Functions and Closures)
  • オブジェクトとクラス(Objects and Classes)
  • 列挙型と構造体(Enumerations and Structures)
  • 同時並行処理(Concurrency)
  • プロトコルと拡張(Protocols and Extensions)
  • エラーハンドリング(Error Handling)
続きを読む

(macOSの)VSCodeでiOSのSwiftを補完してほしい

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

Web開発の界隈の人がiOS開発をやろうとすると、VisualStudioCodeにSwift拡張機能を入れて開発したいと皆さん思いますよね?

ただ、これだけだとUIKitなどのiOS有機能のクラス補完ができずほとんどの機能が使えなくなってしまいます。 かといって、XCodeを使って開発するのもなにか違う感じがするし、Copilotなどの色々便利なものをそのままVSCodeで使いたくなるのが人情ですよね?

ということで、VSCode + Swift拡張機能 を使って既存のiOSプロジェクトを補完する方法を探してみました。

TL;DR

xcode-build-server をインストールして、 buildServer.json を生成するとちゃんとLSP動くよ! github.com

続きを読む

YAPC::Hiroshima 2024 参加レポート

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

今回は YAPC::Hiroshima 2024 に初めて参加してきたお話です。

YAPCとはYet Another Perl Conferenceの略とのことで、Perlコミュニティのお祭りカンファレンスです。

Perlコミュニティのカンファレンスですが、聞いた話の半分ぐらいはPerl関係なくプログラミングの一般的な話だったりして、ただの技術者コミュニティという感じがしました。HonoやCloudflare関連の発表もありましたし、PHPやJSの界隈の人も行ってみるといいんじゃないでしょうか。

続きを読む

自分が使いたいと思えるサービスを作ろう――ドッグフーディングの考え方

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

今日は『ドッグフーディング*1』についてのお話です。 Wikipediaにも載っているIT業界の人は結構知っている有名な格言(?)なのですが、意外と出版業界のような他の分野の人は知らないことが多いのでここで紹介してみたいと思います。

ドッグフーディングとは、簡単に言えば自分で作ったものは自分で食べてみよう(使ってみよう)ということです。 これは「自分が使いたいと思えるようなサービスでなければ他人に使ってもらうことは難しい」という考えから「自分が作ったものは自分で使おう」の流れになったと言われています。

これらの考え方は、ソフトウェアやWebサービスだけでなく、これは例えば出版物でも言える話でしょう。 自分たちが作った書籍や雑誌、Web記事をちゃんと自分たちで咀嚼してみて、ちゃんと消費者に寄り添った製品を作れているかを考えてみるのは非常に大事なのではないかと思います。

普段はIT系の技術の話ばかり書いていますが、IT業界のいい話を他の業界でも広げたいなと思って今回は書いてみました。


本日の一冊のコーナー!

出版物の話をせっかく書いたので、ひさびさにオススメの一冊を紹介したいと思います。

「推しにささげるダンジョングルメ」は第8回カクヨムWeb小説コンテストの現代ファンタジー部門特別賞を受賞した作品です。

最強探索者の主人公が、推しのVTuberダンジョン飯を食わせたいので、それならいっそVTuberになってしまえとなってしまった話です。

時折出てくるゲストのVTuberは、モデルになった人が透けて見えるけどオリジナリティもあり、何か軽快なトークYouTube番組を見ている気分になります。 (ゲストのモデルになった人はとくに○じ○んじの人が多い印象ですが、他の事務所や個人勢からもいろいろあります) そういうのもあって、いままで出ているVTuberもののなかでは、ある意味では一番現実のVTuberの話に近いのかなと思います。

自分で取ってきたダンジョン食材を自分で食う配信はまさにドッグフーディング…なのかな??? 不安になってきましたが、とにかくVTuberが好きならオススメです。

Server Component時代のReactのSPAの作り方を考えたら、Vite + Generoutedになった(が、Remixもよさそう)

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

今日はとりとめもない思考実験の日記です。

続きを読む