Image for post
Image for post
SwiftUI + Verge

In the development of the app that is kind of SNS or large application, it can often grow in complexity due to display a massive number of a state(data) correctly that scattered across many UI components.

Primarily, UIKit applications differ with Data-driven UI frameworks such as React and Vue, it functions as Event-driven, and each component(e.g., UIView) has a state itself. This means the number of the state that we should handle is so much larger than Data-driven application.

In this article, I introduce this framework Verge in iOS app development and what it allows us.

Manages the state with Store-pattern

Lately, Flux state management strategy has been started to be used in mainly web-application. …


Image for post
Image for post

この記事は「Eureka Advent Calendar 2020」1日目の記事です。

Head of iOS & Pairs iOSアプリ開発責任者のMuukiiです。
本記事ではPairs iOSアプリとPairs Engage iOSアプリが活用している状態管理の方法についてお話します。

この記事はFlux等のUnidirectional-data-flowについてある程度の知識と経験がある方向けとなっています。

Image for post
Image for post

概要

  • Fluxのコアコンセプトとしてストアパターン(store-pattern)の説明
  • ストアパターンの目線で設計を考えることでより効果的なソフトウェア改善に取り組むことができる。
  • Fluxやストアパターンのようなデータを中心とした考え方は簡単だが扱いは難しい
  • その難しさはパフォーマンスを維持すること …


Image for post
Image for post

The bulletproof UI, this word from Storybook.
Storybook is a library for developing UI components in web applications.
This gives us a place to create UI where is detached from the main application.
This is the main purpose of this library.

Today, we’ve created a library for iOS application development inspired by the original Storybook.

Making a place to create UI where is detached from the main application

Storybook-ios absolutely inherits the main purpose of the original Storybook

Making a place to create UI where is detached from the main application

Technically, we can get this with creates a new application beside of main application to launch Storybook. And then import the UI components code and displays with initializing. …


Image for post
Image for post
Creating UI Component using Texture + TextureSwiftSupport

In this article, I’m going to talk about “Creating UI with code and how we could write like SwiftUI’s syntax with Texture

As a premise, the targets people in this article:

  • Trying to create UI without Interface Builder. (It means writing the code to set the layout constraints up.)
  • And feels tired with so many constraints and hard to recognize a layout from the source-code.

About creating UI with the code.

What can we get from creating UI without Interface-Builder?
That means writing setting AutoLayout up or managing the frame of view or layer manually.

In a massive project, it would have so many screens and dependencies on each other to get screen transitioning.
And we’ll see so many patterns of layout and UI components on a screen. …


(最終更新日:2020/12/01)

この記事は「eureka Advent Calendar 2019」16日目の記事です。

15日目はPairs JP Web Teamの新(@ooDEMi)による「Building Design System for Pairs」でした。

エウレカのiOSエンジニアのMuukiiです🤠
Pairsの日本版と台湾・韓国版 iOSアプリの開発を担当しております。

今回はSwiftUIとそのためのアプリケーション設計についてお話をします。

Pairs全体的に利用しているVergeというフレームワークの運用と開発による知見からの考察となります。

2019年はWWDCでSwiftUIが発表されて大きな話題となっています。
もちろんエウレカの中でもSwiftUIについて研 …


Pairs事業部のiOSエンジニアの木村です。

この度、Pairs の iOSアプリ Version 81.0.0にて発生した問題である、

「Pairs(v81.0.0)をインストールすることでiOSの設定アプリが強制終了してしまう問題」

この事象についての技術的な解説を行います。

また、今回発生した問題についてはこちらの記事にて解消方法が記載されておりますが、

現在公開されている最新のバージョン(v82.0.0)ではこの問題は解消しておりますので、現在も問題でお困りの方がいらっしゃいましたらAppStoreにてPairsのバージョンアップをお試しください。

こちらにつきまして、ご迷惑をおかけしたことをお詫び申し上げます。

発生した問題について

問題の事象についての詳細は次のとおりです。

  • Pairs(v81.0.0)をインストー …


Image for post
Image for post

この記事は、開発するiOSアプリの中で、レイアウトパフォーマンスを上げるため、部分的にAutoLayout以外のレイアウトエンジンを用いた場合に、どのようにAutoLayoutの世界と接続することが出来るか。という考察です。

考え方の基本として、AutoLayoutからしたらその他のレイアウトエンジンはFrameベースで行うマニュアルレイアウトと同じものになるので、

AutoLayoutの制約の中でマニュアルレイアウトで作られたカスタムUIViewのコンポーネントを正しく動かすには?

を考えることになります。

先に結論

考察の結論として、スッキリしたものではないが、

  • マニュアルレイアウトで作られたカスタムコンポーネントはUILabelのサブクラスを使う
  • UILabelの持つtextRectメソッドをOverride …


Image for post
Image for post

こんにちは iOSエンジニアの muukiiです🤠

今回はView(UI)コンポーネントの開発のアイデアのひとつを紹介します。

私の経験に基づいた事例として、Viewコンポーネントのユースケースとして次のようなものがありました。

  • 単体で使用される (Viewにそのまま貼り付け)
  • UICollectionViewまたはUITableViewで複数表示される (Cellとして表示)
  • タップ可能
  • 配置する場所による見た目の変化は無し

このようなケースにたまに遭遇することがあります。

この場合Viewコンポーネントはどのように設計し、実装すべきでしょうか。

コンポーネントが持つ機能や目的は同じだとするとコードの共通化は狙えそうです。

しかし、UICollectionViewまたはUITableViewが表示先だとUICol …


Image for post
Image for post
Image for post
Image for post
対応の比較動画 (体感2倍)

エウレカ iOS エンジニアの muukii (Twitter) です🥃

私が開発を担当しているPairs Global (Pairsの海外向けアプリ)はアプリの起動がとても遅いのです。

一体なぜなのか。

OSはアプリを起動してAppDelegate (厳密にはmain関数)が呼び出されるまでには様々な処理を行います。
この部分の処理を最適化することでアプリが起動していない状態からの起動の高速化が期待できます。

アプリ起動高速化のための前置き (長め)

まず、用語について、厳密には FrameworkとLibaryは異なるものですが、性質は近いので本記事では次のように用語を用います。

Static Framework または Static Libraryを まとめて 「Static Framework」と呼びます
Dynamic Fr …


Image for post
Image for post
a wall of a container

この記事は eureka Advent Calendar 2018 2日目の記事です。

こんにちは、Pairs Global事業部のiOSエンジニアのmuukiiです 🤠

今回はクライアントサイドにおけるデータの保管方法についての話をします。

最近ではGraphQLやProtocol Buffersなどの利用機会が増え、サーバーAPIが返却するレスポンスは美しくネストされた構造化が進んでいます。

構造化を行うことは反復的な表現を表すのに優れ、ネーミングの明快さを向上し、データを見やすく保つことに貢献します。

GitHub API v4 GraphQLを用いたレスポンス

レスポンス構造と保存時の構造は必ずしも一致するわけではない

しかし、このような構造はあくまで通信先にデータを渡すときに作り上げられるものであり、レスポンス構造と保存時の構造は必ずしも一致するわ …

About

Muukii (Hiroshi Kimura)

iOS Engineer & Head of iOS at Eureka, Inc.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store