転職のお知らせ(LINEヤフー株式会社に入社しました)

from:株式会社はてな(マンガアプリチーム) to:LINEヤフー株式会社 2024年9月1日付でLINEヤフー株式会社に入社しました。LINEアプリのMDX(モバイル・ディベロッパーエクスペリエンス開発チーム)というチームで、LINEアプリのクライアントサイドの開発基盤…

38歳になりました&はてな退職のお知らせ

本日7月29日で38歳になりました。アラフォーですね。 直近では「少年ジャンプ+」アプリのリニューアルを担当していたのが大きなトピックでした。 そんな現職の株式会社はてなを2024年8月31日付で退職します。最終出社日は8月2日です。転職先は入社日以降に…

xcprettyだとXCTestExpectationのタイムアウトエラーやXCTSkipが結果に反映されず、xcbeautifyだと問題なく動く

まだxcprettyを使っていませんか?今こそxcbeautifyに置き換えよう! by ikesyo | プロポーザル | iOSDC Japan 2024 #iosdc - fortee.jp で想定していた内容の一部の供養です(落選)。 社内のとあるプロジェクトで、XCTestExpectationがタイムアウトしてい…

情報・メディアの生存期間の長さを意識する

数年前に社内でとあるプルリクエストのレビュー中に考えたことを放流したのを外向けにも書き溜めておく。 (フロー情報とストック情報とも近いような違うような感じなのだけれど)ある情報(を書いたメディア)の生存期間の長さはよく意識している。ざっくり…

try! Swift Tokyo 2024でOpen Source Swift Workshopの講師をしました

@giginetさん、@kitasukeさんと自分の3人でワークショップ講師をさせていただきました。自分はswift-corelibs-foundationのコミッターとして、FoundationやApple公式のライブラリ群についての概観や現状を紹介しました。 speakerdeck.com ワークショップ全体…

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 …

モバイルアプリ(に限らずWebもでだが)のデザインは静的ではないけど、デザインツールはどうしても静的なので困っちゃうね

昔に社内のグループウェアに書いていた話の輸出。 例えばiOSでは、スクロール領域の端っこにいると、ナビゲーションバーやタブバーが(デフォルトでは)透過されるとか。 iOS 15でNavigationBarとTabBarがデフォルトで透過される デバイスによる表示の違い(…

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…