LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog LINEで働くエンジニアに色々と話を聞いていく「LINE Engineer Insights」。LINEの技術組織で働く個々人に、何を重視して技術者としてのキャリアを歩んでいるのか、今LINEで何に取り組んでいるのか、今後実現していきたいことなどを聞いていきます。 今回登場するのは、出前館アプリを開発している黒澤 慎治。東京でiOSエンジニアとしてLINEに入社した後、京都異動をきっかけにReact Nativeの開発に携わるようになりました。 LINE、出前館それぞれの担当プロダクトや環境の違い、iOSとReact Nativeの違いから、キャリアについての考え方を聞きました。 iOSエンジニアとしてLINEに入社 ―― 前
はじめに SwiftPM 移行の準備 2021/12 〜 2023/02 (平和) 2023/02 中旬 〜 2023/03 上旬 (問題発生と対応) 一体どんな問題が起きていたのか? 調査結果の詳細 XcodeGen 実行時にクラッシュ Bitrise Xcode & OS 変更 SwiftPM 完全移行に向けて アプリクラッシュ おわりに We are hiring! はじめに N予備校 iOS アプリ 開発チームです。 数ヶ月前までの教育iOSアプリでは、パッケージマネージャに CocoaPods(Ruby製) を使用していました。 環境構築の手間や Apple 標準ではないという点で、Apple 標準のパッケージマネージャである SwiftPM 移行に向けてこつこつと準備をしてきました。 macOS や CocoaPods・Bitrise が関係する問題がきっかけで、2023年2月
こんにちは。 delyコマース事業部のJohn(@johnny__kei)です。 この記事は「dely #1 Advent Calendar 2020」の20日目の記事です。 adventar.org adventar.org 昨日はtakaoさん(takaoh717)の「エンジニアが始めるプロダクトマネジメント最初の一歩」という記事でした。 はじめに 今回は、iOS開発で試しに使っているTuistというツールを紹介したいと思います。 TuistはXcodeプロジェクトの生成、管理を楽にしてくれるコマンドラインツールです。 似たようなツールでXcodeGenがあります。 大きな特徴は、Project.swift というファイルでの中でプロジェクトの定義をSwiftで記述するところです。 ここがイケてるやんと思って使い始めました。 (↓サイトトップに記載されている例) import Proj
おはこんハロチャオ~!あなたの目玉をエレキネット!何者なんじゃ? id:yutailang0119 です! これははてなエンジニアアドベントカレンダー2022 24日目の記事です。 昨日は id:yajimasan の Postfix のサンドボックス環境をローカルに作る でした。 メールサーバー、何もわからない。 今回はWEB+DB PRESSの宣伝をしつつ、執筆事情についてお話します! WEB+DB PRESS Vol.121 特集2 「iOS 14最前線」に寄稿しました #wdpress - がんばってなんか書く WEB+DB PRESS Vol.116 特集1 「はじめてのトラブルシューティング」に寄稿しました #wdpress - がんばってなんか書く 宣伝 本日 2022/12/24 (土) 発売 WEB+DB PRESS Vol.132 に寄稿しました! 担当は特集2「iOS
Xcode 11.2 で Storyboard か xib で UITextView を使っていると iOS 13.2 より前のバージョンでクラッシュするという凶悪なバグが発生している。 実際にクラッシュを起こしてみると以下の様に _UITextLayoutView ってクラスは無いとエラーメッセージが表示された。 *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named _UITextLayoutView because no class named _UITextLayoutView was found; the class needs to be defined in source co
こんにちは、レシピサービス開発部と技術部兼務のヴァンサン(@vincentisambart)です。 Swift Concurrencyに関する中級の記事がまだ多くない気がしていたので、そういう記事を書くことにしました。 Swift Concurrencyの理解を深めたい人にはWWDC21の「Swift concurrency: Behind the scenes」がおすすめです。そのプレゼンの中でDispatchSemaphoreをSwift Concurrencyで使うべきではないと述べられました。 Swift Concurrencyに提供されているツールを見ると、セマフォがありません。でも提供されたものでセマフォを作れないでしょうか?セマフォを使いたい場面が多いわけではありませんが、良い勉強になると思います。 どういうツールが標準で提供されているのでしょうか?safe(安全に使えるもの
こんにちは。楽天ラクマ モバイルアプリケーション開発グループのdarquroです。 今回はラクマiOSアプリのフルSwift化を、約4年かけてやり遂げた話を書きたいと思います。 ことの始まり私は2018年10月1日に楽天グループに入社しました。 当時採用面接で驚いたのは、アプリエンジニアのチーム体制を聞いたところ、iOS1名、Android1名という状態だったことでした。 なので、私がiOSエンジニアとして入社し、やっとiOSアプリは2人体制になったというわけです。 2018年はラクマの前身である「フリル」を運営する株式会社Fablicを吸収合併し、それに伴い開発組織としても再構築していく時期でした。 そういったチャレンジングなタイミングに入社を決めたわけではありますが、iOSアプリのコードの状況はというと、Objective-Cという大きい技術的負債を抱えており、なかなかメンテナンスをし
Swift は 値型 を中心とした特徴的なプログラミング言語です。多くのプログラミング言語は 参照型 が中心のため、他のプログラミング言語の経験者でも、その違いに戸惑うことは少なくありません。 Swift がどのようなコンセプトの言語なのかを理解していないと、 Swift らしくない( Swifty でない)非効率なコードを書いてしまいがちです。そこで "Heart of Swift" と題して、筆者が Swift を学ぶ上で最も重要だと思うことをまとめたのが本書です。 Heart という単語には、「心臓」の他に「心」や「中心」などの意味があります。 "Heart of Swift" というタイトルには、 Swift の根幹をなす概念(中心)や、 Swift という言語がプログラマにどのようなコードを書くことを期待しているか(心)といった意味を込めています。本書が目指すのは、 Swift
こんにちは、Studyplus事業部モバイルクライアントグループの上原です。 中途入社でiOSエンジニアとして入社して、StudyplusのiOSアプリの開発を主にしています。 また、最近はiOS以外にもFlutterを触り新機能を開発したりしています。 趣味の方では、Apex Legendsを数年やっているのですが、最近愛用していた武器が弱体化&武器生成必須になりモチベーションがどんどん低くなっています。新しい複数人でやれて人口の多いゲームの発売を切実に期待しています。 さて、今回は、Swift 5.5から導入されたasync/awaitをStudyplusのiOSアプリに一部導入したことについて書きます。 docs.swift.org async/await導入以前の非同期コード iOSでは、ネットワーク処理などの時間がかかる処理で、非同期的に動作させるためにクロージャーを呼び出す必要
事の発端 元々以下のように数値を通貨形式の文字列フォーマットに変換する処理のユニットテスト書いてあったんだけど、Xcode11にしてからテストが失敗するようになってしまった。 let target = 1000 XCTAssertEqual(target.yenFormattedString, "1,000円") // "1,000 円" is not equal "1,000円" ちなみに、ここでやっている .yenFormattedString は以下のようなIntのExtension。 extension Int { var yenFormattedString: String { let formatter = NumberFormatter() formatter.locale = Locale(identifier: "ja_JP") formatter.numberStyle
背景 現在のiOSアプリ開発におけるパッケージマネージャのデファクトスタンダード(事実上の標準)としてCocoaPodsとCarthageがあります。Xcode 11からはSwift Pacakge ManagerがXcodeに統合されて利用できますが、ライブラリ側の対応が必要ということや、ベンダーライブラリなどを考えるとCocoaPodsは少なくとも当面は使われ続けるでしょう。 Carthageと違って、CocoaPodsは.xcodeprojに依存せず独自のビルドシステムを持つことや、(デフォルトでは)Workspaceにライブラリのプロジェクトを自動的に統合するので、リンクに関する設定をやらなくて済むという特徴があります。 しかし、これは長所でもあり短所でもあります。 リンクの設定を自動で追加するために、プロジェクトのビルド設定がCocoaPodsが自動で追加する記述によって非常に複
こんにちは! ZOZOTOWNやWEARのiOSアプリ開発をしている元と小野寺です。 先日、9/5から9/7まで3日間iOSDC Japan 2019が開催されました。今回ZOZOテクノロジーズでは12名のメンバーで参加し、弊社はスポンサーとして協賛しました。 この記事ではiOSDC Japan 2019にて発表されたセッションの一部を紹介すると共に、現場の盛り上がりの様子もお伝えします。 セッション ライブラリのインポートとリンクの仕組み完全解説 最初に紹介するセッションは弊社の技術顧問をされている岸川さんのセッションです。 iOSDC Japan 内容はライブラリを使うときに遭遇するimportエラーやlinkエラーに対してシステマチックに解決するために必要な知識についてです。 ライブラリやフレームワークのimportエラーやlinkエラーを解決するとき、このセッションの内容は非常に役
minne事業部モバイルチームのエンジニアをしております、@umatoshiです。最近はパルワールドに夢中で、全力で配合に取り組んでいます。 好きなパッシブスキルは脳筋です。 現在私は、minneのiOSアプリを開発しており、最新バージョンのXcode(執筆時点では15.2)対応とiOS15サポート終了予定等、2021年当時の記事からアップデートしたので、採用している新技術や開発効率を上げるための工夫をはじめとしたトピックを、minneのiOSチームに興味がある方へ向けて共有したいと思います。 去年はiOSDC 2023でブース出展もしていて、弊社から登壇もしていてminneについて紹介しています。こちらもどうぞ。 概要 まずiOS 14のサポートを終了しており、SwiftUI、 GraphQL、 SPM(Swift Package Manager)、 Combine、 Swift Con
The locations of any sparse SDKs that should be layered on top of the one specified by Base SDK (SDKROOT). If more than one SDK is listed, the first one has highest precedence. Every SDK specified in this setting should be a “sparse” SDK, for example, not an SDK for an entire macOS release.
日本語入力のキーボードアプリazooKeyを作り、12月頭からApp Storeで公開しています。iOS向けキーボードアプリを作る上でのハードルや、かな漢字変換の実装の話を書きます。 概要 azooKey(あずーきー)は自作したiOS向けのキーボードアプリです。統計的かな漢字変換システム Mozcを参考にしながらかな漢字変換をSwiftで書き、長らく標準キーボードに欲しいと思っていたカスタマイズ機能をつけて公開しました。 構成 統計的かな漢字変換システム Mozcを参考にして、辞書や変換機能を作成しました。 使用言語: Swift, Python ライブラリ/ツール: SwiftUI, MeCab(辞書はIPAdic/NEologd) 大きく「辞書」「変換」「UI」の三点に分割して考えながら作りました。それぞれに割いた時間は3:4:3くらいです。 変換は全てSwiftで書きました。現代のか
The Apple Worldwide Developers Conference is coming to a screen near you, June 7 to 11. Join the worldwide developer community for an all-online program with exciting announcements, sessions, and labs at no cost. You’ll get a first look at the latest Apple platforms, tools, and technologies — so you can create your most innovative apps and games yet. Stay tuned for additional details. Now through
はじめに 日曜日で暇なので, SwiftUIを使ってドラえもんを作ってみました. この記事で完成するドラえもんは以下の画像です. 口を開けているドラえもんは難しそうなので断念しました. かなり本物に近くないですか?笑 さぁ作って行きましょう. 土台づくり まず,以下の画像のような土台となる青の円とその中にある円から作って行きましょう. ドラえもんって意識してませんでしたが,地味に楕円なんだと感じました. 確かによくよく見たら楕円なんですよね. 土台の色のみ,Asset Catalogで色を管理しています. (鼻も管理した方が良さそう...) 以下コードです. struct base: View { var body: some View { ZStack { // 土台 Ellipse() .overlay( Ellipse() .stroke(Color.black,lineWidth:
Easily preview Mermaid diagramsLive update when editing in your preferred editorCapture screenshots with customizable marginsCreate PNG from the TerminalFree download on the Mac App Store MethodologyThe methodology and tools to create this article have been detailed in my previous posts. If you are interested, please refer to: Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOSEvolution of th
Streaming is available in most browsers, and in the WWDC app. Every programming language has a set of conventions that people come to expect. Learn about the patterns that are common to Swift API design, with examples from new APIs like SwiftUI, Combine, and RealityKit. Whether you're developing an app as part of a team, or you're publishing a library for others to use, find out how to use new fea
はじめまして、dely開発部のfunzinです。普段はクラシルのiOSアプリ開発を担当しています。 この記事は「dely #1 Advent Calendar 2020」の13日目の記事です。 adventar.org adventar.org 昨日はbababachiさんのコンテナサポートされたLambdaで湯婆婆実装してみたという記事でした。 Lambdaによる湯婆婆実装が丁寧に説明されているので、気になる方はぜひみてみてください! さっそく本題ですが、この記事ではCarthageで生成したframeworkの管理でRomeを導入したことについてまとめていきます。 Romeとは Romeは、Carthageで生成したframeworkを様々なストレージで管理することを可能にしてくれるツールです。保存先はローカル、AWSのS3などが指定可能です。 なぜ導入したか 元々クラシルでは、car
Tom Doron is a member of the Swift Core Team and the Swift Server Work Group. He manages a team working on server-side Swift libraries at Apple. It is my pleasure to announce a new open source project for the Swift Server ecosystem, Swift AWS Lambda Runtime. Distributed as a Swift package, the Swift AWS Lambda Runtime is designed to help Swift developers build serverless functions for the Amazon W
はじめに Swift5.3がリリース最終段階に入ったらしいので、変更が入った機能についてまとめた。 変更点は下記ページのProposalを元に確認した。 https://apple.github.io/swift-evolution/#?version=5.3 (理解が異なる箇所があればご指摘ください) リリースプロセス https://swift.org/blog/5-3-release-process/ https://github.com/apple/swift/tree/release/5.3 スナップショット https://swift.org/download/#releases 変更サマリ 品質とパフォーマンスの強化 Swiftが利用可能できるプラットフォームの拡張 Windowsサポート 対応Linuxディストリビューションの追加 0263-string-uninitial
SwiftのCompilerはOSSとして公開されているので、興味のある方はぜひチェックしてください。 github.com また、Swift Compilerのアーキテクチャについては、こちらの記事がとても分かりやすいです。 qiita.com 末尾再帰にしたとして、最適化を無効にしたときと有効にしたときで実行結果が変わってくるのであれば、Compilerの生成物も当然異なっているはずです。 それでは、最適化を無効にしたときと有効にしたときで、上記のどのタイミング(Component)でどのような生成物の違いがあるのか、見ていきます。 各Componentにおける差分 次の内容をsum.swiftとして保存し、生成物の差分を実際に見ていきます。 func sum(_ n: Int, _ res: Int) -> Int { if n == 0 { return res } return
はじめに 僕はもともとObjective-Cの時代からゲームを作っていました。 そして半年前からUnityでゲームを作るようになりました。 本記事では、この変更の理由とSwiftとUnityのテクノロジーの違いを書いています。 僕が使ったテクノロジーについて ここでは僕が使ってきたテクノロジーとそのテクノロジーを使わなくなった理由を書いていきます。 OpenGL2 ゲームと言ったら動的に動く物! という理由で調べたところアニメーションなどに適しているのがOpenGLだったため、一冊の本を買ってOpenGLを学びました。 OpenGLをObjective-Cで制御してシューティングゲームを作りました。 辞めた理由 OpenGLは2Dのゲームを描画するための技術なのですが、知識がないとかなり大変です。 例えばPNGファイルを取り込んで画面に出すだけでもかなり多くのコードを書く必要があります。
C/C++ on the bench, as US snoop HQ puts its trust in Rust, C#, Go, Java, Ruby, Swift The NSA has released guidance encouraging organizations to shift programming languages from the likes of C and C++ to memory-safe alternatives – namely C#, Rust, Go, Java, Ruby or Swift. "NSA recommends that organizations use memory safe languages when possible and bolster protection through code-hardening defense
こんにちは、モバイル開発のandrekandore (かんちゃん)だ! ※ この記事のどこかにiOSDC Japan 2023のチャレンジトークンが隠されているよ! はじめに この記事は、Kotlin Multiplatformを用いて実現しようとしたこと、運用してみた結果の振り返りについての紹介である。特にSwift・iOSの技術者の観点からどのような課題があったかについて解説する。 iOS / Androd 両プラットフォームをまたがる課題 モバイルアプリ開発においてよく課題としてあがるのは、各プラットフォームにまたがる「ビジネスロジック」の共通化である。 モバイルでは、ウェブとの差異はもちろん、AndroidやiOSアプリとの(仕様・実装の)差異が開発時間の増加につながってしまうことがある。各プラットフォームの差異を埋め合わせることに時間を割くことが、ユーザへの新規機能の実装時間を減
先日ラクマさんでも同様のツイートがありましたが、実はほぼ同時期にnoteのiOSアプリからもObjective-Cのコードが消えました。 今朝ついにラクマiOSアプリのObjC削除の最後のPRをマージしました。僕が入社してマネージャーを引き継ぎ、約4年かかりました。何で4年もかかったのかは別途ブログにでも書こうと思いますが、とにかく大変で、奇跡的に優秀なメンバーが揃ってみんなで成し遂げることができました。 pic.twitter.com/NY6V5kUhcI — だーくろ (@darquro) August 3, 2022 ちなみに僕が入社した頃のコード量を見てみましょう。(2020年4月) 1332 text files. 1161 unique files. 459 files ignored. github.com/AlDanial/cloc v 1.92 T=0.33 s (35
はじめに こんにちは。DevRelブロックの@wirohaです。2024年3月22日〜24日に「try! Swift Tokyo 2024」が開催されました。ZOZOはGOLDスポンサー・DIVERSITY & INCLUSIONスポンサーとして協賛し、ブースを出展しましたので現地のレポートをお届けします! 目次 はじめに 目次 会場 スポンサーブース アンケートの回答 印象に残ったセッション Swiftの型推論を学ぼう コード署名を楽しく乗り切る方法 Party、その他 アフターイベント LT1. SwiftPM マルチモジュール構成への第一歩 LT2. SwiftとC++を利用した画像処理プログラミング LT3. Introducing Pkl 感想戦 最後に 会場 会場は前回(2019年)と同じ、ベルサール渋谷ファーストです。try! Swiftのマスコットキャラクター「Riko」ち
Swift 5.5 では、待望の async/await 構文をはじめとした Swift Concurrency Roadmap における並行処理機能、いわゆる Swift Concurrency のサポートが多く開始され、WWDC21 でも各機能の使いかたや仕組みが詳細に解説されていました。 Swift Concurrency についてはすでに koher 氏の 『Swift 6 で来たる並行処理の大型アップデート近況』や『先取り! Swift 6 の async/await』 などの資料でも詳細に解説されています。この記事では WWDC の各セッションで行われた説明の紹介を中心に、この記事ひとつで Swift Concurrency についての現時点での概観を把握できる状態を目指して、改めてまとめてみました。 async/await Concurrency にまつわる様々なプロポーザル
iOSアプリで時間のかかる処理が発生すると何が起こるのでしょうか? デモアプリを用意したので、手元で確認しながら読み進めることをできるようにしています。 はじめに レビューをしていて時間のかかる処理に対して、iOSアプリではこれを使えば良いと示すのは簡単ですが、どうしてそれが必要なのか順序立てて説明するために今回の記事を書きました。 フレームワークが高度に抽象化し、良しなにやってくれるので、現代のプログラミングにおいては知らなくて良いことの一つかもしれません。 時間のかかる処理とは 例えば、以下のようなアプリがあったとして、「Push Me!」のボタンをタップしたとします。 すると、地球のアイコンがインジケーターに変わって回転のアニメーションが始まり、何か処理を行なっている様子を感じ取れます。しばらくすると、インジケーターが地球のアイコンに戻り、処理が完了した様子を感じ取れます。 iOSア
現在Swiftにマクロを導入しようという提案がSwift Evolutionのレビュー中*1です。 SwiftによってSwiftの構文を拡張できる、いわゆるメタプログラミングと呼ばれる機能です。 実はマクロの他にもSwiftでメタプログラミングを実現する機能の提案が複数提案*2*3されています。 Swift 6はメタプログラミングの時代になるかもしれません。 現代的なプログラミング言語のマクロ みなさんはマクロと聞いて、どのような機能を想像しますか? C言語のマクロは、プリプロセッサと呼ばれるコンパイル前のプログラムによってプログラムのソースコードに置換や文字列連結を行う機能でした。 原理的には単なる文字列操作なので、プログラムの構造や型を破壊する可能性がありました。 最初のマクロに関する投稿に対しての否定的なコメントは、C言語のマクロのような機能をSwiftに導入することは危険だという意
GitHub Actions で iOS アプリをビルドするときの Xcode のインクリメンタルビルドを有効にするためのキャッシュ設定について解説します。 CI でのビルドで Xcode のインクリメンタルビルドが使えるようになれば、毎回 CI 上でフルビルドし40分程度かかっていたプロジェクトが、差分のみのビルドでビルド時間が5分に短縮されたりすることが期待できます。 環境 この記事では、以下の環境で調査・検証した結果を記載しています。 ローカル環境 macOS Ventura 13.5.1 Xcode 14.3.1 (14E300c) APFS (Encrypted / Case Insentive) GitHub Actions 環境 macos-latest macOS Monterey 12.6.8 Xcode 14.2.0 (14C18) 結論 結論としては xcode-ca
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く