Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

Xcode 14.3ではSwiftUI Previewでprint()の内容が確認できる

SwiftUI Previewでビューを作っている時、printデバッグがしにくくて困ったことはありませんか!? これまでPreviewではprint()の中身が表示されなかったのですが、Xcode 14.3のリリースノートを眺めていたところ、これが改善されたようです! Xcode 14.3 Re…

ChatGPTでアプリを作る Part4 いよいよアプリの機能を作っていくぜ

ChatGPTでアプリを作ろうとしています、id:kouki_dan です。 前回のPart3では、ログイン、ログアウトの画面を作ってきました。それも、ChatGPTが書いてくれたコードをコピーしてペーストしていくだけでです。 kouki.hatenadiary.com 今回は、順番的にいうと…

ChatGPTでアプリを作る Part3 ログイン/サインアップ

ChatGPTでアプリを作ろうとしています、id:kouki_dan です。 前回のPart2では、どんな画面を作れば良いかをChatGPTに聞いてみて、まず作るといいと言われたスプラッシュ画面を完成させました。 kouki.hatenadiary.com 今回はきっと、ログイン/サインアップを…

ChatGPTでアプリを作る Part2 スプラッシュ画面を作るといいらしい・・・?

ChatGPTでアプリを作ろうとしています、id:kouki_danです。 前回のPart1では、技術選定をChatGPT主導でやっていきました! kouki.hatenadiary.com 次は、いよいよアプリ作成に入っていきましょう! まずは、作るべき画面を聞いてみました! 正直、スプラッシ…

ChatGPTでアプリを作る Part1 技術選定編

ChatGPTが異常な勢いで浸透していますね。ミーハーな僕としては、この波に乗らないわけにはいかないです。 僕はエンジニアなので、まずは自分の得意な領域であるアプリ開発を試してみようと思います。イメージとしては、ChatGPTとのペアプロです。僕がナビゲ…

OpenID Connect連携を使ってGitHub ActionsからFirebase App Distributionでアプリを配布する

以前GitHub Actionsから、Firbease App Distributionにアプリを配布するエントリを書きました。 kouki.hatenadiary.com エントリを書いた時のFirebase App Distribution認証では、ユーザーのトークンを使っていました。時代は移り、サービスアカウントや、Op…

CI/CDサービスのOpenID Connect対応 Dive Into

これははてなエンジニアアドベントカレンダー2022 39日目の記事です。 昨日は id:nakaoka3 の ミーティングの時間になると勝手に議事録を開いてほしいでした 先日あった、CircleCIのインシデントのAdditional security recommendationsとして、OIDC Tokenを…

僕のエンジニアとしての情報収集ルーチン

ハッピーホリデー!今日は12月24日、なんの日でしょう? そうです! WEB+DB PRESS Vol.132の発売日です! 本日発売のWEB+DB PRESSに、同僚のid:cockscomb、id:yutailang0119 と一緒に書いた iOS 16 最前線が載っています!よろしくお願いします!! gihyo.jp…

僕が全ての記憶を失った時に今のレベルのiOSエンジニアに戻るための道標

この記事は はてなエンジニア Advent Calendar 2022の15日目の記事です。はてなではモバイルアプリのエンジニアとして働いていて、主にiOSアプリを主領域としています。最近記憶がなくなったらどうしようと考えていたので、突然記憶喪失になっても仕事に困ら…

Dynamic IslandがあるiPhone 14 ProなどでナビゲーションバーのminYとsafeAreaInsets.topが一致しなくなっている

こういうツイートをしたんだけど何も反応がなかったのでブログにも・・・・ お客様の中にNavigation BarのY位置がDynamic Islandを持つデバイスでhttps://t.co/IZANgdh7Fwと一致しなくなっていることにお困りの方はいらっしゃいませんか〜〜〜— こーき@だん …

UIHostingControllerとUINavigationControllerを組み合わせてleftBarButtonItemをカスタマイズするまで

SwiftUIは進化を続けていて日々できることが増えています。iOS 16ではナビゲーションのAPIが拡充され、より柔軟な画面遷移の実装がSwiftUIだけでできるようになりました。 画面遷移はUIKitで実装 一方、サポートOSのバージョンの都合で最新のAPIが使えない場…

iOS 16+のTextFieldは複数行を入力可能 【WWDC22】

WWDC前にSwift Playgroundsで遊んでいた時に、複数行を入力したくなって、TextEditorをTextFieldっぽく使う方法を紹介しました。 kouki.hatenadiary.com 今週はWWDCがあり、そこでTextFieldの拡張が発表されました!なんと、TextFieldでTextEditorのような複…

SwiftUIのTextEditorでもプレースホルダーを使いたい

---WWDCアップデート--- WWDC22でのアップデートで、iOS 16以降は標準のTextFieldでこれを実現できるようになりました!こちらも合わせてご確認ください!こちらの記事はiOS 15以下向けのものとして、参考にしてください。 kouki.hatenadiary.com SwiftUIで…

GitHub ActionsのCustom Actionからリポジトリ内のファイルにアクセスする

最近GitHub Actionsを便利に使うためのCustom Actionを作っていました。 kouki.hatenadiary.com このActionに設定をリポジトリ内のファイルから取得する機能を追加したくなったんですが、この機能のためだけにcheckoutするのもなぁ、と悩んでいました。 具体…

GitHub Actionsで次のリリースにどんな変更が含まれるかを可視化する

この記事は はてなエンジニア Advent Calendar 2021 の16日目の記事です。昨日は id:masayosu の はてなにおけるCloudNative推進会の活動について でした。 サブ会という仕組みで専門領域における情報共有や深い議論ができるようになっていて、僕もスマート…

英和辞書の[印]という記号は印刷の専門用語という意味

Flexboxを使うときによく使う justify-content ですが、justifyの意味は正当化するという意味だと習ってきました。確かにわからなくもないけど、ちょっと意味が取りにくいな、と思っていて、ふと思い立ち辞書で調べてみました。 なるほど、行の長さをそろえ…

iOS 13でもStateObjectが使いたい!

iOS 14から使えるStateObject、とても便利ですよね developer.apple.com ObservableObjectなどを初期化するときに便利です。 class Object: ObservableObject { @Published var value = "value" } struct Content: View { @StateObject var object = Object(…

Next.jsでTwitterライクにモーダルにURLを与える

Next.jsはpages以下に置いたファイルに応じてURLが決定します。一方、あるコレクションページのコンテンツをモーダルで表示するが、そのモーダルにURLを与えたいケースがあります。 例えば昔のTwitterのWebはそのようになっていて*1、タイムライン上のツイー…

WEB+DB PRESSでiOS開発の特集を執筆したのでiOSアプリ開発を振り返ってみます

最近iOSアプリ開発を振り返るタイミングがありました。どういうことかというと、いきなり宣伝になるのですが、先日発売したWEB+DB PRESSでiOSアプリ開発の最前線についての特集を同僚のid:cockscomb、id:yutailang0119と一緒に執筆しました。 gihyo.jp Macを…

ソースコードをパッと見せられてアルゴリズムの名前を答える早押しクイズをやりたかったので作った

ソースコードをパッと見せられてアルゴリズムの名前を答える早押しクイズやりたい— こーき@だん (@kouki_dan) 2021年2月5日 最近アルゴリズムの話題をよくTwitterで見かけるので、こういうクイズあったら面白いかも?と思ったので作ってみました こちらから…

iOSのネイティブアプリでWebRTCを使ったビデオチャットを実装する

こんばんは! id:kouki_dan です!株式会社はてなのネイティブアプリエンジニアです! この記事は、はてなエンジニア Advent Calendar 2020の8日目の記事です。 昨日は id:shallow1729 さんのAtcoder初心者が成績アップに繋がったと感じた考え方の工夫でした…

StorybookをVercelでホスティングするのが便利すぎる

Webコンポーネントをブラウザでサッと確認するのにStorybookが便利ですね。Storybookは自分で作ったコンポーネントをブラウザ上で一覧できるツールです。以下のようなコンポーネントを表示できるWebページを簡単に作ることができます。 始め方は簡単で、Reac…

Bitriseのカスタムステップを作る

モバイルアプリのCI/CDプロダクトとして有名なBitriseでは、ワークフロー上で行う処理をステップの組み合わせで実現しています。このステップは十分なものが公式やサードパーティが用意しているのですが、自分でカスタムステップを作ることもできます。最近…

SwiftUIでUIImagePickerControllerのカメラを使いたい

SwiftUIでカメラを扱いたくなって色々調べた&試したので記事にします。 SwiftUIでカメラを扱いたい! SwiftUIでカメラを直接扱うことは現在のところできず、UIKitで作ったカメラのビューを表示する必要があります。 カメラを使う一番簡単な方法は、UIImagePi…

Next.jsのアプリをFirebase Hostingでいい感じに連携する

最近Next.jsとFirebaseばかりやっています。って書きましたが、本当はこの一ヶ月どうぶつの森しかやってませんでした。どうぶつの森のプレイ時間は200時間を超えました。 そろそろエンジニアとしても生活したくなってきたのでエンジニアっぽい話をします。Ne…

Next.jsのアプリをGraphQLでスキーマファーストで開発する

最近Next.jsを使って開発することが多いです。ちょっとした物を作る時はFirebaseと組み合わせることが多いのですが、ガッツリAPIを作り込みたい時はGraphQLで書くこともあります。 GraphQLを使う時はGraphQL SDLでスキーマを定義することになると思います。…

Action ButtonでDeploymentに対応しました

ちょっと前にGitHub Actionsをデプロイに使いたいけどデプロイタイミングは自分で選びたかったのでこんなものを作りました kouki.hatenadiary.com ここで使ったrepository_dispatchイベントはとりあえずActionを走らせるためには便利なのですが、イベントで…

消えたApp Storeのトップセールスを追う

iOS 11でApp Storeからトップセールスのタブが消えたことを覚えていますでしょうか。 App Storeでは確認できなくなりましたが、この情報を見る方法が存在しています。 AppleはiTunesやApp Storeの情報を取得できるRSSを提供しています。 rss.itunes.apple.co…

SlackでクイズができるSlack Appsを作った

こんばんは! id:kouki_dan です! この記事は、はてなエンジニア Advent Calendar 2019の8日目の記事です。 昨日は id:hokkai7go さんのはてなSREチームにおけるスクラムの実践というタイトルでJuly Tech Festa2019に登壇しますでした。July Tech Festa2019…

GolangはテストのためにInterfaceで公開しない

最近は趣味でGolangとTypeScriptを書いています。Golangのドキュメントを見ていると気になる記述を見つけたのでブログに書き残します。 ここに書いてあることです。 github.com あるモジュールをテストしたい時に、モックのためにインターフェースで公開する…