Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドッグフーディング用機能開発のススメ
Search
fromkk
November 25, 2016
Technology
1
740
ドッグフーディング用機能開発のススメ
チームで開発してると自分の把握してない場所でバグが発生している事がある。そんな時に原因を探す為にアプリの中にGitのブランチを表示させたらどうかという提案です。
fromkk
November 25, 2016
Tweet
Share
More Decks by fromkk
See All by fromkk
note社の全員野球で品質向上活動について / note_qa_challenge #iOS_test_teatime
fromkk
3
1.9k
1年分のデータが見たいと言われてやったこと/yearly_data_with_note
fromkk
0
1k
note iOSチームの自動化 ver.2021/automation_with_iOS_team_on_note_ver2021
fromkk
0
2k
Bitrise体験会説明資料/bitrise_explore
fromkk
1
1.1k
noteのiOSアプリで実装したアクセシビリティの全て #iosdc #a /a11y_with_iOS_App_on_note
fromkk
2
4.3k
dSYMのアップロードで SPMを活用する/use_spm_with_upload_dsyms
fromkk
1
3.1k
Bitriseのリモートアクセス機能 #bitrise_meetup/remote_access_of_bitrise
fromkk
1
630
note社でのMagic Pod活用事例 #af_iosdc/magicpod_with_note
fromkk
2
11k
iOSには無いmacOS独自機能をCatalystで実装する #iosdc #d/make_macos_apps_with_catalyst
fromkk
9
2.2k
Other Decks in Technology
See All in Technology
文字列の並び順 / Unicode Collation
tmtms
3
580
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
170
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
350
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
230
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
120
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
130
手動から自動へ、そしてその先へ
moritamasami
0
300
SREには開発組織全体で向き合う
koh_naga
0
180
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
670
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
140
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
180
乗りこなせAI駆動開発の波
eltociear
1
1.1k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.7k
[SF Ruby Conf 2025] Rails X
palkan
0
520
For a Future-Friendly Web
brad_frost
180
10k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
GraphQLとの向き合い方2022年版
quramy
50
14k
Bash Introduction
62gerente
615
210k
Thoughts on Productivity
jonyablonski
73
5k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The Language of Interfaces
destraynor
162
25k
Writing Fast Ruby
sferik
630
62k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Transcript
υοάϑʔσΟϯά༻ػ ೳ։ൃͷεεϝ shinagawa.swift #1 (C) fromkk. 2016 1
ࣗݾհ ২Ԭɹ࠸ Timers inc.ͷiOSΤϯδχΞ Twitter: @fromkk Github: fromkk (C) fromkk.
2016 2
એ Χοϓϧ͚ΞϓϦͷPairy ͱ Ո͚ࣸਅڞ༗ΞϓϦͷ Famm ΛӡӦ͍ͯ͠Δ Ͱ ΤϯδχΞΛืू ͍ͯ͠·͢ʂ ڵຯͷ͋Δํֻ͓͚ɺ͘͠
http://timers-inc.com/ ΑΓ͓͍߹ΘͤԼ͍͞ʂ (C) fromkk. 2016 3
ૣͰ͕͢ (C) fromkk. 2016 4
νʔϜͰ։ൃͯ͠Δͱ ͜Μͳࣄ͋Γ·ͤΜ͔ʁ (C) fromkk. 2016 5
͜Μͳࣄ͋Γ·ͤΜ͔ʁ • ࣾһʮ͜͜όάͬͯΔΜ͚ͩͲʯ • ʢϏϧυ൪߸͔Β͏ͷେม...ʣ • ʮ...֬ೝ͢Δ͔Βͪΐͬͱͬͯʯ • ʢΘ͔ΜͶʔΑɺ͜Ε୭ͷϏϧυͩΑ...!ʣ (C)
fromkk. 2016 6
ϒϥϯν໊͕͔Ε ୭͕ॻ͍ͨͷͳͷ͔͔Δͷʹʂ (C) fromkk. 2016 7
ʢ։ൃதͷʣ ΞϓϦͷதʹϒϥϯν໊ Λग़ͯ͠͠·͓͏ʂ (C) fromkk. 2016 8
खॱ • Xcodeʹ Branch.plist ͱ͍͏ϑΝΠϧΛ࡞ • Edit Scheme ʹҠಈ •
εΩʔϜΛ Shared ʹมߋ • Build -> Pre Actions ΛΫϦοΫ • ϏϧυλʔήοτΛ Provide build setting from *** ʹมߋ • Scheme/Build/Pre-actions/Run Script ʹ࣍ͷίʔυΛՃ ※ https://github.com/fromkk/GitBranchName ʹαϯϓϧΛΞοϓ͍ͯ͠·͢ʂ (C) fromkk. 2016 9
खॱ branch="master" if [ ! -z "${CIRCLE_BRANCH+x}" ]; then branch=$CIRCLE_BRANCH
elif [ ! -z "${TRAVIS_BRANCH+x}" ]; then branch=$TRAVIS_BRANCH elif [ ! -z "${BITRISE_GIT_BRANCH+x}" ]; then branch=$BITRISE_GIT_BRANCH else git_path=$(which git) if [ -e $git_path ]; then branch=$($git_path --git-dir=$PROJECT_DIR/.git rev-parse --abbrev-ref HEAD) fi fi plistName=$PROJECT_DIR/Branch plistPath=$plistName.plist if [ ! -e $plistPath ]; then touch $plistPath fi chmod u+wr,g+wr,o+r $plistPath defaults write $plistName "branch" $branch (C) fromkk. 2016 10
खॱ • Ϗϧυͯ͠ΈΔ • Branch.plist ʹݱࡏͷϒϥϯν໊͕ө͞Ε͍ͯΔࣄΛ֬ ೝ • ࣍ͷ༷ͳίʔυͰϒϥϯν໊Λऔಘͯ͠ը໘ʹදࣔ (C)
fromkk. 2016 11
खॱ struct Branch { private enum Constants { static let
defaultBranch: String = "master" static let plistFileName: String = "Branch" static let branchNameKey: String = "branch" } static var current: String { guard let path: String = Bundle.main.path(forResource: Constants.plistFileName, ofType: "plist") else { return Constants.defaultBranch } guard let plist: [String: String] = NSDictionary(contentsOfFile: path) as? [String: String] else { return Constants.defaultBranch } return plist[Constants.branchNameKey] ?? Constants.defaultBranch } } let branch: String = Branch.current (C) fromkk. 2016 12
Demo (C) fromkk. 2016 13
·ͱΊ • ࢪࡦ͕ଟ͍ͱݪҼ͕ࢄΒΔͷͰࠞཚͷݩ • ݪҼΛٻͯ͠ରԠ͢Δҝʹ൜ਓ୳͕͠ඞཁͳࣄ͋Δ • ։ൃதͷෆ۩߹ϒϥϯν໊͕͔Δͱ৭ʑḿΔʂ • ෆໟͳݪҼ୳͜͠ΕͰΦαϥόʂ (C)
fromkk. 2016 14
͍ͬͯ͏༰ͰiOS Advent Calendar 2016ʹهࣄΛॻ͘ͷͰ ετοΫ ͍͍Ͷ Լ͍͞ʂ (C) fromkk. 2016
15
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ (C) fromkk. 2016 16