SQLiteでは集計とグルーピングの対象外のカラムでも、集計関数がMAXとMINの場合はそれらの行由来の値を返すことが保証されている(例外あり)

AndroidでSQLiteがバックエンドのJetpack Roomを使っていた時の話題。 SELECT column_a, column_b, column_c, MAX(column_d) FROM foo GROUP BY column_a このようなSQLにおいて GROUP BY に使われる column_a と、集計関数(この場合は MAX )に使われる co…

GitHub Actionsのサードパーティーマネージドランナーの紹介

この記事は はてなエンジニア Advent Calendar 2023 の 2024年1月4日 の記事です。 GitHub Actionsの実行環境であるランナーには、GitHubが提供するGitHub ホステッド ランナーと、自分でランナーを用意・管理するセルフホステッド ランナーの大きく二種類が…

iOSDC Japan 2023 day2でLT登壇します #iosdc

すでに始まってしまったiOSDC Japan 2023。今年ははてな勢は4人でお邪魔しております。自分も2019年以来、4年振りのオフライン参加をとても楽しんでいます! X(Twitter)ではお知らせしていたものの、ブログには書いていなかったので改めて共有ですが、最終…

UISearchBarのデフォルトの背景色は `UIColor.tertiarySystemFill`

tertiarySystemFill | Apple Developer Documentation Use system fill colors for items situated on top of an existing background color. System fill colors incorporate transparency to allow the background color to show through. Use this color …

XcodeGenのpackagesをRenovateで更新するプリセットを用意しました

ikesyo.hatenablog.com この時の発表でXcodeGenの packagesをRenovateのregex managerで更新する方法を紹介してから、複数回言及・参照されることがありました。 あー XcodeGenのymlにSwiftPMのパッケージ書いてるとRenovateとの相性悪いな どうしようかな— …

Mojoのパラメータ(コンパイル時メタプログラミング)を使ったFizzBuzzを書いてみる

Mojoが発表されて早速盛り上がっていますね。 LLVMやSwiftの作者であるChris Lattner率いるチームが開発した新しい言語ということで、Swift好きな自分としてももちろん興味があります。現時点ではPlaygroundにアクセスするのにウェイトリストに並ぶ必要があ…

なぜ人はソースコードの複数行コメントで文が分かれているのに、改行を文区切りとしてしまって句点(。)を使わないのか?

改行されているときに、文が終わっている時もあれば、文が続いている時もあって、これは前の行からの続きなのか、別の文なのかを毎回意識する必要があって読みにくいなと思ってしまうパーソンです。皆さんはいかがですか?

YAPC::Kyoto 2023に参加した&GitHub Sponsorsに登録した

yapcjapan.org 京都、それも自宅から徒歩圏の会場で開催されるということもあり、去る3月19日に初めてYAPCに参加してきました。自分はPerlは(ほぼ)書いたことがないけど、YAPCはPerlに関係あるものないものも何でもありなカンファレンスという感じがして、…

『Production Ready GraphQL』の「Anemic GraphQL」

この記事は はてなエンジニア Advent Calendar 2022 の2023年1月3日の記事です。 昨日は id:onk で ストーリー性のあるプレゼン - id:onk のはてなブログ でした。 『Production Ready GraphQL』といえば Production Ready GraphQLはGraphQLを採用するなら必…

UIButton.Configuration.Sizeの各サイズごとのデフォルト状態での高さ

iOS

iOS 16.1シミュレーターで確認してみた。 @2x @3x UIButton.Configuration.Size.large 50.5 50.33… UIButton.Configuration.Size.medium 34.5 34.33… UIButton.Configuration.Size.small 28 28 UIButton.Configuration.Size.mini 28 28 特別にHuman Interfac…

UINavigationController配下でUIHostingControllerによって表示しているSwiftUIのViewからNavigationLinkは使えるのか

結論としては使えます。端的なPlaygroundのコードとしては次のようになります。 import UIKit import SwiftUI import PlaygroundSupport struct RootView: View { var body: some View { NavigationLink("This is NavigationLink") { Text("Hello World!") }…

iOSシミュレーター・Androidエミュレーターにアプリをインストールだけする(起動までしない)方法

なぜ アプリの初回起動時専用の特別な処理や画面遷移を行うケースで、そのデバッグ実行・動作確認をするため。 iOS まずインストールするためのアプリは Build For Running でビルドしておく。次にシミュレーターを起動しておいて xcrun simctl install boot…

RenovateのGemfileやPodfileの更新でリリースノートを取得する

Renovateは様々なデータソース・パッケージマネージャーに対応していて、もちろんRubyのBundlerのGemfileにも対応しているのだが、APIリクエストのレートリミットを回避する関係で、https://rubygems.org をデータソースとする場合はリリースノートの取得が…

GraphQLスキーマをサーバーサイドからクライアントサイドに自動同期し、変更履歴も確認したい

似たような話が先日ありましたね。 こちらはGraphQLではなくてOpenAPI、かつサーバーサイド側のリポジトリからクライアントサイド側のリポジトリにプッシュする方式でした。 今関わっているプロダクトでは、1つのGraphQLスキーマが複数のリポジトリから必要…

期間の扱い方とその名前

とあるAPIのスキーマの叩き台をクライアントサイドとして検討している際に、コンテンツの公開期間やイベントの開催期間のような期間について議論が少し盛り上がった。 要件としては、期間の開始と終了の日時をそれぞれ取得できたい。 期間を考える時、開始と…

Mockolo 1.7.0のビルド済みバイナリがarm64にしか対応していない

iOS

https://github.com/uber/mockolo/releases/download/1.7.0/mockolo.tar.gz に含まれる mockolo バイナリがarm64アーキテクチャーにしか対応していなかった。これだとAppleシリコンMacでは実行できるが、Intel Macでは実行できない。 $ file mockolo mockolo…

SwiftUIのTextは+演算子で結合できる(fontやforegroundColorなどを変えていてもできる)

SwiftUI.Text には + 演算子が用意されているので Text("Foo") + Text("Bar") のように結合ができる +(_:_:) | Apple Developer Documentation Text("Foo").font(.title) + Text("Bar").foregroundColor(.secondary) のように一部のmodifierを付けていても結…

CircleCI公式のDockerイメージにはyqがプリインストールされているので、自分で入れる必要はない

CI

CircleCIのダイナミックコンフィグとsetupワークフロー*1で、path-filtering Orbやcontinuation Orbを使う時の話題ですが、タイトルがすべてです。 github.com 設定ファイルをマージする用途でyqを使うために、自分でインストールするような記述を色んなブロ…

Open Test Reporting: platform-agnosticなテストレポートのフォーマット

たまたまJUnit 5.9.0のリリースノートを読んでいたら面白いものが目に着きました。 XML reports in new Open Test Reporting format テストレポートのフォーマットとしてはJUnitがデファクトスタンダードのようになっていて、様々なプログラミング言語やテス…

SwiftUI.ViewとUIHostingControllerの初期化順序の調整

UIHostingControllerを使ってSwiftUI.Viewを表示する時に、Viewの引数に渡すクロージャーの中でViewControllerを使いたいことが稀によくある(本当に?)。 素直に考えるとこうなる。 // 順序的にvcを使えない let view = FooView(onTap: { // vcで何かした…

RenovateのHandlebarsテンプレート用の`lowercase`ヘルパーを追加した

RenovateとHandlebarsのテンプレート Renovateでは様々な設定オプションや正規表現を用いるregex managerでHandlebarsのテンプレートを使用できる箇所があります。 例えばPRのdescriptionの内容を追加できるprBodyNotesなどがありますが、RenovateがPRを作る…

Renovateの「About us」というドキュメントにcontributorとしてノミネートされた

はい。 RenovateのAbout usというドキュメントにcontributorとして名前を載せていただきました。今後もできる範囲で貢献していければと思います!https://t.co/3qjx9Fa446https://t.co/cH06beUtqy— Sho Ikeda (@ikesyo) 2022年5月27日 こちらのページからご…

Accompanistの開発版のバージョニングが独特で、Renovateと相性が悪い

Accompanistとは Google公式の、Jetpack Composeを補完する拡張ライブラリーです。 Accompanistの開発版のバージョニング 直近の0.24系の開発版が次のようになっている。 v0.24.0-alpha v0.24.1-alpha v0.24.2-alpha v0.24.3-alpha v0.24.4-alpha v0.24.5-al…

potatotips #77で「RenovateによるiOSライブラリーの自動更新」という発表をしました&いくつかの補足

発表資料はこちらです 発表の中では時間の都合で触れられなかったところをいくつか補足しようと思います。 CocoaPodsでRealmを使っているとPodfile.lockが更新できない件 CocoaPodsとXcodeGenを併用しているとPodfile.lockが更新できない件 おわりに CocoaP…

actions/checkoutのアップデートで、gitのsafe.directoryの件が対策されていました

先週盛り上がっていた、gitのCVE-2022-24765に対する修正でreviewdogなど一部のGitHub Actions(Dockerコンテナのアクション)が動かなくなっていた問題ですが Git security vulnerability announced | The GitHub Blog 一部の reviewdog が `exit status 12…

GitHub ActionsのVirtual Environmentの更新でnpmのバージョンが変わったことでreviewdog/action-eslintが動かなくなったという面白事例

社内のとあるリポジトリ yarn workspacesを使っていた npm 7でworkspace機能が入ったので、npmでもpackage.jsonのworkspacesを認識する 4月4日にGitHub ActionsのCIが突然エラーになるようになった Virtual Environmentのバージョンが変わっているようだった…

React Nativeのアップデートのコツはビルドシステムやパッケージマネージャーの気持ちになること

半分ネタで半分本気です。 JS方面 Node.js npm/yarn TypeScript Babel, Metro iOS方面 Xcode CocoaPods Android方面 Android Studio Gradle 達と仲良くなり(詳しくなり)、あとはReact Native Upgrade Helperで差分をチェックすれば大体いけるはず。Let's u…

AndroidのNotification Channels is 通知チャンネル OR 通知チャネル

Android O(Android 8.0)から追加されたNotification Channelsですが、これの日本語訳がぶれていてどっちで会話すればいいのか困っています。 「通知チャンネル」 https://developer.android.com/guide/topics/ui/notifiers/notifications.html?hl=ja#Manag…

FirebaseのSwiftPM対応に伴ってGoogle Tag ManagerもSwiftPMでインストールできるようになっていた

iOS

iOS(ないしAppleプラットフォーム全般)のFirebaseといえばこれまでインストール方法はCocoaPodsが基本だったが、バージョン8.0.0からSwiftPMでもインストールできるようになっている。 https://firebase.google.com/docs/ios/installation-methods#swift-p…

チームでのスマホアプリエンジニア採用のために求人票について考えていた

こんにちは。近頃はSwiftUIでの新機能開発に勤しんでいる id:ikesyo です。 そんなこんなで自分が所属しているはてなのマンガアプリチームでは最近、iOSエンジニア・Androidエンジニアを積極採用しようと動き出しています。その中でまず求人票の内容を検討し…