2020/3/17にリリースされたGitHubモバイルアプリ


GitHubが3/17にAndroidとiOS向けの公式モバイルアプリをリリース

最近までテスト配信され、ようやくリリースされました。
このアプリはコードの編集はできませんが、Issueの管理やプルリクエストのマージなどができるアプリです。
エンジニアのほとんどがお世話になっているGitHubが一体どんなライブラリを使用して開発したのか気になりました。

iOSの設定アプリにOSSのライセンスが表記されていたので調査してみました。

  • 初期画面

  • ログイン後

  • 謝辞: Acknowledgements

一覧

  • Alamofire
  • AlamofireNetworkActivityIndicator
  • Apollo
  • CocoaLumberjack
  • ContextMenu
  • DropdownTitleView
  • Firebase
    • Crashlytics
    • Fabric
    • FirebaseAnalyticsInterop
    • FirebaseCore
    • FirebaseCoreDiagnostics
    • FirebaseCoreDiagnosticsInterop
    • FirebaseInstanceID
    • FirebaseMessaging
    • GoogleDataTransport
    • GoogleDataTransportCCTSupport
    • GoogleUtilites
    • nanopb
  • FLEX
  • Fuzi
  • Protobuf
  • R.swift
    • R.swift.Library
  • SDWebImage
  • SDWebImageSVGCoder
  • SnapKit
  • SnapshotTesting
  • SQLite.swift
  • SVGKit
  • TUSafariActivity
  • Valet

ライブラリについて

Alamofire

ど定番のHTTP通信ライブラリ

AlamofireNetworkActivityIndicator

Alamofireが提供しているインジケータライブラリ

NetworkActivityIndicatorManager.shared.isEnabled = true

Apollo

GraphQL APIと通信できるライブラリ

CocoaLumberjack

ログフレームワーク
NSLogよりも高速らしい...

ContextMenu

ポップアップのようなコンテキストメニューの表示できるライブラリ
Starはちょっと少なめ

DropdownTitleView

UINavigationItemを加工できるライブラリ
Starはちょっと少なめ

Firebase

Googleのなんでも提供してくれる優秀ツール

FLEX

iOS開発用のアプリ内デバッグツール

Fuzi

XML/HTMLのパーサライブラリ
Webページからの情報を取得、分析するために使っているのでしょう

Protobuf

GoogleのProtocol Buffer( "protobuf")オブジェクトシリアライズツールをappleが提供

R.swift

コード補完でリソースファイルにアクセスすることができる超便利ライブラリ

Before
let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indicator highlight")
let viewController = CustomViewController(nibName: "CustomView", bundle: nil)
let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")
After
let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
let viewController = CustomViewController(nib: R.nib.customView)
let string = R.string.localizable.welcomeWithName("Arthur Dent")

SDWebImage

かなり昔から使われている定番画像キャッシュライブラリ

SDWebImageSVGCoder

SDWebImageのSVGファイル対応プラグイン

SnapKit

AutoLayoutをソースコードで記述できる一番人気のライブラリ

SnapshotTesting

スナップショットテストライブラリ
View以外もテストできるみたい
これをつかってデグレを検知をしているのでしょう

SVGKit

SVGファイルを使えるようにするライブラリ
iOS13からガッツリSVG対応されるようになったので今後は使用することないかも...

SQLite.swift

データベースSQLiteのライブラリ

TUSafariActivity

「Safariで開く」を簡単に実行できるライブラリ

let URL =  NSURLstring" http://google.com ")!
let activity =  TUSafariActivity()
let activityViewController =  UIActivityViewControlleractivityItems[URL]applicationActivities[activity]

Valet

キーチェーンを簡単に操作できるライブラリ

感想

アプリを使用してみて、かなりシンプルでappleが提供しているようなアプリデザインと思った。
UIがシンプルということでUI関係のライブラリが多くない。
しかし、もともとのサービスがWebサービスということからネットワーク関連のライブラリが7割ほどでした。

意外だったのが、かなりマイナーなライブラリを使っているところですね。正直、TUSafariActivityは普通に実装できる軽量ライブラリですし、Starもかなり少ない。それをあえて導入していたのが驚きでした。

対象OSが12.2~ということでUIKitで開発されたのは間違い無いだろう。
でもUIをみるとデフォルトで提供されているUIパーツだらけなので、今後SwiftUIに移行するを検討しているのでは無いかと予想する。

とにかくライブラリをよくみる私にとっては最高のモバイルアプリである。

今後の予定

ライブラリ説明の充実