iOS

iOSアプリの継続課金コンテンツに無料トライアル機能を導入する方法

こんにちは! 最近暑いのでビール最高と感じている新事業創造部バックエンドエンジニアのりほやんです。 今回はAppleが提供しているお試し価格の機能のひとつである無料トライアル機能を紹介します。 お試し価格とは お試し価格とは自動更新の定期購読に対し…

CarthageでビルドしたフレームワークをGitにコミットせずに良さげに扱う

iOSチームの@hiragramです。 所属するプロジェクトでは依存管理にCarthageを使っていますが、Carthageの成果物である Carthage/ 以下をコミットするかどうかはよく議論になる話題かと思います。 私はコミットしない派なので、そのメリットを残しつつデメリッ…

大規模リファクタリングで痛感したSwiftのOptionalとの正しい付き合い方

iOSアプリチームの@hiragramです。 最近、ファーストリリース時からあった画面の大規模なリファクタリングを担当しました。 コードは遅かれ早かれ賞味期限が切れて少しずつ腐っていくものですが、その賞味期限を少しでも伸ばすために、普段コードを書く時にS…

大事故防止!iOSの自動更新購読型と消耗型の課金を共存させるときのサーバーサイドTipsまとめ

iOS

課金とPush通知攻略に邁進中のじょーです。 今回は、ひとつのアプリに自動更新購読型と消耗型を共存させたときのサーバーサイドで行うレシート検証のTipsを紹介します。 自動更新購読型課金のサーバーサイド実装について 自動更新購読型課金単体で実装する場…

Swift 4のUserDefaultsライブラリ: Default

VASILYのiOSエンジニアにこらすです。 今回のテックブログではiOS・macOS・watchOS・tvOSのUserDefaultsにユーザー設定などを保存するのに便利なラッパーライブラリ Default を作ったので紹介します。 github.com Defaultとは? Defaultは、Codableに準拠す…

iOSDC Japan 2017参加レポート

こんにちは。iOSエンジニアの遠藤です。 9/15〜17にかけiOSDC Japan 2017が開催され、VASILYでもiOSチーム全員で参加しました。 また、私はLTとしてShift_JISのURLデコードについて発表させていただきました。 以下、発表資料です。 speakerdeck.com M”e (@r…

アニメーションのイージングを自由に作る

iOSエンジニアの庄司です。最近Android開発をはじめて、Android Studioのコード補完力の高さに驚かされています。 iOS11のリリースが間近ですが、今回は最近開発したiOSアプリで実装したアニメーションについてご紹介します。 こんなものを作りました GitHub…

SwiftでLottieを使ってアニメーションを実装する

こんにちはフロントエンジニアの茨木です。一ヶ月ほど前からSwiftでiOSアプリ開発をやっています。iOS開発経験は浅いですが、Lottieというライブラリを使用し、いきなりアニメーションごりごりの画面を担当してみました。 LottieはAirbnb社が開発したライブ…

モダンなSwiftのExtensionについて - Targeted Extensions

VASILYのiOSエンジニアにこらすです。最近、Swift Evolutionに私の2つ目の提案がマージされました。 今回は、Swiftで型にExtensionを作る特殊な方法について説明します。 今回紹介する方法を使ってExtensionを作ると、名前空間が切り分けられ、コードの読み…

UIFeedbackGeneratorの使い方と便利に使えるライブラリ

iOSエンジニアの庄司です。 今回は開発中のアプリで使った UIFeedbackGenerator についてご紹介します。 UIFeedbackGeneratorとは、iOS 10以降で利用できるHaptic Feedback (触覚フィードバック) のAPIです。 この記事の要約 一般的なUIFeedbackGeneratorの…

新しいアプリを作るときによく使うSwift Extension集

iOSエンジニアの庄司 (@WorldDownTown) です。 最近、業務で新しいiOSアプリを立て続けにいくつか開発する機会に恵まれました。 そんな中、いくつもアプリを使っていると、どのアプリでもよく使う処理があぶり出されてきます。 そういう処理はSwiftのExtensi…

UIStackViewを使った詳細ページ実装のすすめ

UIStackViewを使用しての詳細ページの実装についてです

脱・文字列ハードコーディング

こんにちは、iOSエンジニアのにこらすです。 SwiftがiOSの主な開発言語になってから、多くの良いプログラミング習慣が標準になっています。 型安全な設計やコンパイル時のエラー検出が当たり前になりましたが、まだSwiftの型システムを活用せずに、Objective…

iQONをSwift 3.0.1にアップデートしたときに対応したポイント

iOSエンジニアの庄司 (@WorldDownTown) です。 iOS 10.1 のリリースから遅れること3日、Xcode 8.1 がリリースされました。この Xcode 8.1 では Swift のバージョンが 3.0.1 にアップデートされています。 iQON の iOS アプリでは、Xcode 8 リリース後すぐに …

Swift 3の変更点の裏側 (アクセス制御 / @escaping)

こんにちは。VASILYのiOSエンジニアのにこらすです。 2015年の12月からSwiftがオープンソースになり、 Swift Evolution(Swift言語の新しい仕様について提案する場所)で多くの開発者の提案が採用されました。 今回はSwift 3の アクセス制御 と @escaping につ…

Embedded Frameworkを導入してXcodeのビルドパフォーマンスをあげる

iOS

iOSエンジニアの遠藤です。 先日iQONで、Xcodeのビルドパフォーマンス改善の一環としてEmbedded Frameworkの導入を行いました。 今回は、そのEmbedded Frameworkの導入について紹介したいと思います。

iOSの月額課金レシート検証をサーバーサイドで行うときのTipsまとめ

こんにちは、バックエンドエンジニアのjoeです。 みなさんはお気に入りのアプリに月額課金をしたことがありますか?したことがない人は今すぐお気に入りのアプリをみつけて月額課金しましょう! 実際にiOSで月額課金をすると、課金の証明としてAppStoreがレ…

画像がズームインしながら画面遷移するSwiftライブラリを公開しました

iOSエンジニアの庄司(@WorldDownTown)です。 iQONのiOSアプリ内部で使われている画面遷移処理をOSSライブラリ化したのでご紹介します。 TL;DR UINavigationControllerでの遷移時に、タップした画像をズームして遷移するトランジション処理をSwiftライブラリ…

iOSチームでのインターンシップのすすめ

こんにちは、iOSエンジニアの遠藤です。 学生の皆さん、夏のインターンシップはもう決めましたか? 各社で様々な形式のインターンシップがあると思いますが、今回はiOSチームを例にVASILYでのインターンシップについて紹介をしたいと思います。 記事には実際…

カスタムmitmproxy入門

VASILYのiOSエンジニアにこらすです! 今回はプロキシツールmitmproxyのカスタムスクリプト機能について説明したいと思います。 モバイル開発をする際にAPIリクエストのデバッグツールとして mitmproxy はとても役に立ちます! カスタムスクリプトを使うと何…

iPhoneでテザリング中にレイアウトが崩れる問題の解決方法

iOSアプリを開発しているエンジニアの庄司です。 今回は、iPhoneでのテザリング中や通話中に、ステータスバーの高さが変わることによる表示崩れの対応について紹介します。 TL;DR iPhoneでテザリング中、UITabBarが画面からはみ出したりすることへの対応方法…

UIPageViewControllerをつかって無限スクロールできるタブUIを実装してOSSとして公開しました

こんにちは、エンジニアの遠藤です。 最近iQONアプリのホーム画面のデザインをリニューアルしました。 タブを使ったデザインにすることで、iQON内にある多くのコンテンツが見やすくなりました。 今回はこのタブ機能の実装についてざっくりと紹介しようと思い…

SequenceTypeの利便性 in Swift 2.2

Making Sequences work for you こんにちは! VASILYのiOSエンジニアにこらすです。 SwiftのコントリビューターとSwift EvolutionSE-0053の作者です。 他のOSSプロジェクトにも貢献してるので興味があればGithubでフォローしてください。 今回のトピックはSw…

アプリのAPIリクエストのトレースはどうするのが効率的か?

こんにちは。iOSエンジニアの庄司です。 普段のアプリ開発において、バックエンドチームから「○○のページで△△のデータ取得するためにリクエストしているURLってどんなの?」と聞かれることがよくあります。 その都度、APIリクエストとリクエスト結果をprint…

【iOS】一定以上スクロールするとタブの位置が固定されるUIの実装について

iOS

こんにちは。iOSエンジニアの遠藤です。 最近のiQONはコンテンツ量が増えてユーザーの詳細ページに表示する情報が多くなってきました。今のデザインでは情報量が多すぎて詳細ページが見づらい状況になっています。そこで以下のようなコンテンツをタブで管理…

Carthageクイックスタートガイド

Carthageとは? こんにちはVASILYでiOSエンジニアをしているニコラスです。今回はCarthageの紹介をしたいと思います。 CarthageはiOS / OS X開発のための分散型の (decentralized) パッケージマネージャーです。 既にプロジェクトでCocoaPodsを使っていても…

Swiftで会社の受付アプリを作った話とCADisplayLink

iQONのiOSアプリはまだ全てObjective-Cで記述されています。 Swiftへの移行については「たいしてパフォーマンスが上がるわけでもないし…」と思って渋っていました。 そんな中、オフィスの移転をきっかけに来客の受付システムをiPadアプリで作ることになりま…

WWDCの現地に来るべき7つの理由 [2014年版]

iOS

VASILY iOSエンジニアの庄司です。 同じくiOSエンジニア荒井とチーム全員(2名)でサンフランシスコで開催中のWWDCに来ています。 今回のKeynoteは既にご存知の通り、「OS X Yosemite」、「iOS 8」、新言語「Swift」など盛りだくさんの内容でした。 SwiftはRub…

WWDC 2014現地から

VASILYのiOSエンジニアは今年もWWDCへ参加しています。 同時に、WWDCへ参加する世界各国のエンジニアたちとの交流も深めています。 和服で来ています

iQONエンジニアセミナーの資料を一挙公開!〜グロースエンジニアリングなど〜

iOSエンジニアの庄司です。 先月2月20日、『【第2回】iQONエンジニアセミナー ~進化し続けるiQONを支えるグロースハック的エンジニアリング手法とは?~』と題して、エンジニアセミナーを開催しました。 会場となった弊社オフィスにたくさんのエンジニアの…