SlideShare a Scribd company logo
1 of 84
Download to read offline
ビルド番号の更更新について
ネットで教えてもらったこと
EZ-‐‑‒NET  熊⾕谷友宏    @es_̲kumagai
http://program.station.ez-‐‑‒net.jp/
•  Info.plist  &  Run  Script
•  agvtool
•  Info.plist  Preprocessor
⾃自⼰己紹介
@es_̲kumagai	
EZ-‐‑‒NET  IP  Phone	
 ⾳音で再配達ゴッド	
⾳音で再配達	
 ⾳音でダイヤル	
 いつもの電卓
for  iPad	
いつもの電卓
for  iPhone	
EZ-‐‑‒NET  熊⾕谷友宏  	
http://program.station.ez-‐‑‒net.jp/
書籍
こんなご時世ですが
ぜひ⼿手に取ってパラパラめくってみてください。
•  Xcode  全機能を網羅羅
•  プロジェクトの作り⽅方
•  ソースコード編集の効率率率化
•  ショートカットキーの紹介
•  オートレイアウトの使い⽅方
•  ローカライズの設定⽅方法
•  バージョン管理理の使い⽅方
•  ビルド設定とスキーム設定
•  ほか、とにかくいろいろ
特設サイト  ̶—  http://ez-‐‑‒net.jp/sp/xcode5/
話題
さて
ツイッターを眺めていたところ
話題
興味深いツイートが舞い込んできました。
agvtool  のお話とか。
話題
話題は  @tokorom  さん  のこちらのスライド
h"ps://speakerdeck.com/tokorom/agvtooldechao-­‐katukoyokubaziyoningudekimasuka	
  
Apple-‐‑‒Generic  Versioning  Tool
agvtool
Apple-‐‑‒Generic  Versioning  Tool
agvtool
プロダクトのバージョン管理理を⾏行行えるツール
Build  Settings  に関連する設定項⽬目がある
Apple-‐‑‒Generic  Versioning  Tool
準備
Apple-‐‑‒Generic  Versioning  Tool
Current  Project  Version  を設定
Versioning  System  で  “Apple  Generic”  を選択
Apple-‐‑‒Generic  Versioning  Tool
準備完了了
Apple-‐‑‒Generic  Versioning  Tool
プロジェクトファイルのある
ディレクトリで  agvtool  を実⾏行行する
あとは
だけ
Apple-‐‑‒Generic  Versioning  Tool
バージョンの確認
プロジェクトファイル内の
CURRENT_̲PROJECT_̲VERSION  が対象
agvtool  what-‐‑‒version  
Current  version  of  project  $(PROJECT_̲NAME)  is:
1
Apple-‐‑‒Generic  Versioning  Tool
バージョンの確認(簡潔に表⽰示)
プロジェクトファイル内の
CURRENT_̲PROJECT_̲VERSION  が対象
agvtool  what-‐‑‒version  -‐‑‒terse  
1
Apple-‐‑‒Generic  Versioning  Tool
バージョンの更更新
プロジェクトファイル内の
CURRENT_̲PROJECT_̲VERSION  が対象
agvtool  new-‐‑‒version  2
Apple-‐‑‒Generic  Versioning  Tool
CFBundleVersion  も同時更更新
プロジェクト内の  CURRENT_̲PROJECT_̲VERSION  と
全ターゲット  の  Info.plist  の  CFBundleVersion  が対象
agvtool  new-‐‑‒version  -‐‑‒all  3
Apple-‐‑‒Generic  Versioning  Tool
次のバージョン番号に更更新
⼩小数点以下がある場合は切切り捨てられる
agvtool  next-‐‑‒version  -‐‑‒all
Apple-‐‑‒Generic  Versioning  Tool
ターゲットバージョンの確認
プロジェクト内の全ターゲットの  Info.plist  にある
CFBundleShortVersionString  が対象
agvtool  what-‐‑‒marketing-‐‑‒version  
No  marketing  version  number  (CFBundleShortVersionString)  
in  native  targets...
Found  CFBundleShortVersionString  of  “1.0”  in
“PROJ.xcodeproj/../PROJNAME/PROJ-‐‑‒Info.plist”
Found  CFBundleShortVersionString  of  “1.0”  in
“PROJ.xcodeproj/../PROJNAME/PROJTest-‐‑‒Info.plist”
Apple-‐‑‒Generic  Versioning  Tool
ターゲットバージョンの確認(簡潔に表⽰示)
プロジェクト内の全ターゲットの  Info.plist  にある
CFBundleShortVersionString  が対象
agvtool  what-‐‑‒marketing-‐‑‒version  -‐‑‒terse  
“PROJ.xcodeproj/../PROJNAME/PROJ-‐‑‒Info.plist”=1.0
“PROJ.xcodeproj/../PROJNAME/PROJTest-‐‑‒Info.plist”=1.0
Apple-‐‑‒Generic  Versioning  Tool
ターゲットバージョンの確認(最初のひとつだけ)
最初のひとつを何で決めているかは不不明
agvtool  what-‐‑‒marketing-‐‑‒version  -‐‑‒terse1  
1.0
Apple-‐‑‒Generic  Versioning  Tool
ターゲットバージョンの更更新
プロジェクト内の  全ターゲット  の  Info.plist  にある
CFBundleShortVersionString  が対象
agvtool  new-‐‑‒marketing-‐‑‒version  2.0
Apple-‐‑‒Generic  Versioning  Tool
バージョン管理理システムと
連動できたりするらしい
詳細は未確認
Apple-‐‑‒Generic  Versioning  Tool
CVS  との連携機能もあるらしい
有効にしたバージョン管理理システムへ
コミットやタグ付けを連動して実⾏行行できるらしい。
defaults  write  agvtool  CVSEnabled  YES
defaults  write  agvtool  CVSSubmitByTag  YES
defaults  write  agvtool  CVSToolPath  PATH
Subversion  との連携機能もあるらしい
defaults  write  agvtool  SVNEnabled  YES
defaults  write  agvtool  SVNSubmitByTag  YES
defaults  write  agvtool  SVNToolPath  PATH
Git  との連携機能があるかは不不明
Apple-‐‑‒Generic  Versioning  Tool
VERSIONING_̲INFO_̲PREFIX
Versioning  Name  Prefix
話題のスライド中にあった
話題のスライドとは挙動が違う様⼦子
Apple-‐‑‒Generic  Versioning  Tool
VERSIONING_̲NAME_̲PREFIX  に
“dev-‐‑‒”  を設定してみたところ  …
Apple-‐‑‒Generic  Versioning  Tool
⾒見見知らぬ  “$(PROJECT_̲NAME)_̲vers.c”  ファイル内に
double  型の  “dev-‐‑‒”  で始まるシンボルが定義されている
ビルドエラーになりました。
Apple-‐‑‒Generic  Versioning  Tool
CURRENT_̲PROJECT_̲VERSION  の
値を保持するシンボル名のプレフィックス
として使われる様⼦子
VERSIONING_̲NAME_̲PREFIX  は
Apple-‐‑‒Generic  Versioning  Tool
Derived  Data  フォルダー内に
中間ファイル  (Intermediates)  として⾃自動⽣生成される
ちなみにこのファイルは
Apple-‐‑‒Generic  Versioning  Tool
$(PROJECT_̲NAME)_̲vers.c  ファイルは
ビルドされてアプリに組み込まれるようなので
ちなみに
Apple-‐‑‒Generic  Versioning  Tool
“extern”  すると使えたりします。
Apple-‐‑‒Generic  Versioning  Tool
agvtool  の設定項⽬目
Apple-‐‑‒Generic  Versioning  Tool
VERSIONING_̲SYSTEM
Versioning  System
必ず  “Apple  Generic”  を指定
する。
CURRENT_̲PROJECT_̲VERSION
Current  Project  Version
バージョン番号(この値を  
agvtool  で操作する)
VERSION_̲INFO_̲EXPORT_̲DECL
Generated  Versioning  Variables
中間ファイル内で定義される
各変数の宣⾔言の先頭に付与す
るキーワード  (export  等)
VERSION_̲INFO_̲FILE
Generate  Versioning  Source  Filename
中間ファイルとして⽣生成する
ファイル名(拡張⼦子を含む)
VERSION_̲INFO_̲PREFIX
Versioning  Name  Prefix
中間ファイル内で定義される
各変数に付けるシンボル名の
プレフィックス
VERSION_̲INFO_̲SUFFIX
Versioning  Name  Suffix
中間ファイル内で定義される
各変数に付けるシンボル名の
サフィックス
VERSION_̲INFO_̲BUILDER
Versioning  Username
未確認
Apple-‐‑‒Generic  Versioning  Tool
agvtool  を  Run  Script  などで使えば
ビルド番号を簡単操作できるのでしょう
たぶん。
#ifdef  DEBUG
話は変わって
話題のスライド中にあった記載
『Configuration  で切切り替えられるおかげで
#ifdef  DEBUG  を使う必要がなくなった』
それに対して  …
#ifdef  DEBUG
?!
Info.plist  プリプロセッサ…?
Info.plist  Preprocessor
Info.plist  プリプロセッサ
Info.plist  Preprocessor
プリプロセッサと⾔言えば
Objective-‐‑‒C  でもお馴染み
コンパイル前にソースコードを整える
C  ⾔言語でお馴染みの機能
Info.plist  Preprocessor
たとえば、こういうものたち。
#import  “MyClass.h”
#define  MyClassMaxValue  1000
#ifdef  DEBUG
NSLog(“Value  =  %d”,  object.value);
#endif
Info.plist  Preprocessor
Info.plist  プリプロセッサの
有効化
Info.plist  Preprocessor
Preprocess  Info.list  File  を  Yes  に設定
これで  OK
Info.plist  Preprocessor
Build  Settings  設定だけで
Info.plist  をプリプロセスする場合
Info.plist  Preprocessor
Info.list  Preprocessor  Definitions  に
KEY=VALUE  の形式で値を定義
複数の値を設定したい場合は、
半⾓角スペースを挟んで記載する。
Info.plist  Preprocessor
Info.plist  の置き換えたい部分で
Info.plist  Preprocessor  Definitions  で定義したキーを記載
ビルド時にキーの部分が値に置き換わる
Info.plist  Preprocessor
Configuration  毎に異異なる値も設定可能
Info.plist  Preprocessor
ヘッダーファイルを使って
Info.plist  をプリプロセスする場合
Info.plist  Preprocessor
1.  Info.plist  Preprocessor  Prefix  File  に
プリプロセスで使う  ヘッダーファイル名  を指定
2.  Info.plist  Preprocessor  Definitions  に
$(GCC_̲PREPROCESSOR_̲DEFINITIONS)  を指定
$(GCC_̲PREPROCESSOR_̲DEFINITIONS)  を指定することで
Preprocessor  Macros  で定義した値を使⽤用可能に
Info.plist  Preprocessor
Info.list  Preprocessor  Prefix  File  で指定したファイルに
#define  KEY  VALUE  の形式で値を定義
ここでプリプロセッサマクロを使⽤用可能
Info.plist  Preprocessor
Info.plist  の置き換えたい部分で
Info.plist  Preprocessor  Definitions  で定義したキーを記載
ビルド時にキーの部分が値に置き換わる
Info.plist  Preprocessor
Info.list  Preprocessor  Prefix  File  で
Info.plist  をプリプロセスする際の留留意点
値の更更新時はヘッダーファイルだけを
更更新しても  Info.plist  が更更新されない
変更更を反映するには
Info.plist  ファイルの更更新が必要
Info.plist  Preprocessor
INFOPLIST_̲PREPROCESS
Preprocess  Info.plist  File
これを  “Yes”  にすると  
Info.plist  がプリプロセスされる
INFOPLIST_̲PREFIX_̲HEADER
Info.plist  Preprocessor  Prefix  File
プリプロセス時に使⽤用する
キーと値が書かれたヘッダー
ファイル名を指定(任意)
INFOPLIST_̲PREPROCESSOR_̲DEFINITIONS
Info.plist  Preprocessor  Definitions
プリプロセス時に使⽤用する
キーと値を指定(半⾓角スペー
スで分けて複数指定可能)
INFOPLIST_̲OTHER_̲PREPROCESSOR_̲FLAGS
Info.plist  Other  Preprocessor  Flags
プリプロセッサに渡すフラグ
を指定(-‐‑‒DDEBUG=1  など)
Info.plist  プリプロセッサーで使⽤用できる設定項⽬目
Info.plist  Preprocessor
Based  on  Configuration  File  と合わせて使えば
Info.plist  の複雑な調整もできるかも?
ターゲットや  Configuration  毎に
設定内容を調整できる機能
宣伝
Xcode  5  徹底解説
9.10  Configuration  設定ファイルを使って
ビルド設定をテキストファイルで管理理する
Based  on  Configuration  File  については
をご覧下さい。
話題
いつしか話は次の展開へと進み  …
話題
ひとつの解が⽰示されました。
h"ps://github.com/kishikawakatsumi/BuildNumber
ビルド番号の更更新についての話題の中で…
解答の中で挙げられていた
「問題点」の但し書き
そこに意識識が留留まりました。
Info.plist  処理理のタイミング
『Compile  Sources  より前に
      Run  Script  を実⾏行行しても間に合わない』
Info.plist  処理理のタイミング
『間に合わない』
⾃自分も書籍執筆中に体験
Info.plist  処理理のタイミング
Info.plist  を  Run  Script  で
更更新してもビルドに間に合わない
そのときは
というもの
PlistBuddy
Info.plist  の更更新といえば
プロパティリストファイルを読み書きできるコマンド
/usr/libexec/PlistBuddy
PlistBuddy
Info.plist  の  CFBundleVersion  を更更新する例例
使⽤用例例
infoPlistFile="${SRCROOT}/${INFOPLIST_̲FILE}”
buildNumber=$(/usr/libexec/PlistBuddy
                -‐‑‒c  "Print  CFBundleVersion"  "${infoPlistFile}")
buildNumber=$((${buildNumber%%.*}  +  1))
/usr/libexec/PlistBuddy
                -‐‑‒c  “Set  CFBundleVersion  $buildNumber"  "${infoPlistFile}"
PlistBuddy
Print  KEY KEY  の値を出⼒力力
Set  KEY  VALUE KEY  に  VALUE  を設定
Copy  srcKEY  dstKEY srcKEY  とその値を  dstKEY  として複製
Delete  KEY KEY  とその値を削除
Add  KEY  TYPE  [VALUE] TYPE  型の  KEY  を追加(値は任意)
Clear  TYPE TYPE  型の  Root  要素として初期化(TYPE  
は  Array  や  Dictionary  を指定)
Merge  FILE  [KEY] FILE  で指定したプロパティリストの内容を  
KEY  の値として追加(KEY  の型は  FILE  の  
Root  要素と同じ型のものを指定,  省省略略時は  
Root  要素に追加)
Import  KEY  FILE Data  型の  KEY  を作成してファイルの内容
を値として設定
【書式】/usr/libexec/PlistBuddy
                                        –c  “コマンド”  “プロパティリストファイル”
Info.plist  処理理のタイミング
なぜ
間に合わないのか
Info.plist  処理理のタイミング
ビルドログを確認すると…
Target  Dependencies
[1] Compile  Sources
Link  Binary  With  Libraries
[2] Copy  Bundle  Resources
1
2
間に合いそうに
⾒見見えるのですが…
Info.plist  処理理のタイミング
今、試してみると
間に合うようなのですが  …
Info.plist  処理理のタイミング
調査当時は  なぜか
間に合いませんでした
Info.plist  処理理のタイミング
それはさておき。
Info.plist  処理理のタイミング
Info.plist  プリプロセッサを有効にしたとき
Target  Dependencies
Preprocess  Info.plist  File
[1] Compile  Sources
Link  Binary  With  Libraries
[2] Copy  Bundle  Resources
1
2
Preprocessed-‐‑‒Info.plist  
を⽣生成して処理理する様⼦子
Info.plist  処理理のタイミング
Target  Dependencies  Build  Phase  の直後に
Info.plist  のプリプロセスが完了了する
Info.plist  のプリプロセスに必要な情報を
Run  Script  Build  Phase  で揃えても間に合わない
Info.plist  処理理のタイミング
プリプロセス済みの  Info.plist  ファイルは
従来どおりのタイミングで組み込まれる
このプロジェクトの  Info.plist  ファイルは  もともと
Preprocessed-‐‑‒Info.plist  だったとみなせる  かも
ただし
Info.plist  書き換えの⼿手段
が⽬目標に掲げられていました。
今回の話題のスライド中では
『Info.plist  を直接書き換えずに調整したい』
厳Info.plist  書き換えの⼿手段
Preprocessed-‐‑‒Info.plist  を
直接  書き換えたらどうなるか
それなら
Info.plist  書き換えの⼿手段
ログを⾒見見る限りでは  …
Target  Dependencies
Preprocess  Info.plist  File
[*] Compile  Sources
[*] Link  Binary  With  Libraries
Copy  Bundle  Resources
*
Copy  Bundle  Resources  までの間
編集する猶予が得られそう
Info.plist  書き換えの⼿手段
Preprocessed-‐‑‒Info.plist  ファイルのパスは
事実から  “${TEMP_̲DIR}/Preprocessed-‐‑‒Info.plist”  と推定
Run  Script  はこのような感じに
infoPlistFile="${TEMP_̲DIR}/Preprocessed-‐‑‒Info.plist”
buildNumber=$(/usr/libexec/PlistBuddy
                -‐‑‒c  "Print  CFBundleVersion"  "${infoPlistFile}")
buildNumber=$((${buildNumber%%.*}  +  1))
/usr/libexec/PlistBuddy
                -‐‑‒c  "Set:CFBundleVersion  $buildNumber"  "${infoPlistFile}"
Info.plist  書き換えの⼿手段
更更新できました。
ビルドにも間に合う様⼦子
Info.plist  書き換えの⼿手段
Preprocess  Info.plist  File  を有効化  した状態で
$(SRCROOT)/${INFOPLIST_̲FILE}  を書き換える  と
留留意点
更更新が間に合わず
次回のビルドに繰り越される
Info.plist  書き換えの⼿手段
ちなみに
Info.plist  書き換えの⼿手段
バンドルに組み込まれた  Info.plist  を
直接  書き換えることも可能
⼀一応は  …
Info.plist  書き換えの⼿手段
これを  Copy  Bundle  Resources  よりも後に実⾏行行
Run  Script  はこのような感じに
infoPlistFile=“${BUILT_̲PRODUCTS_̲DIR}/
                                                              ${FULL_̲PRODUCT_̲NAME}/Info.plist”
buildNumber=$(/usr/libexec/PlistBuddy
                -‐‑‒c  "Print  CFBundleVersion"  "${infoPlistFile}")
buildNumber=$((${buildNumber%%.*}  +  1))
/usr/libexec/PlistBuddy
                -‐‑‒c  "Set:CFBundleVersion  $buildNumber"  "${infoPlistFile}"
Info.plist  書き換えの⼿手段
実⾏行行タイミングは、ここ
Target  Dependencies
Compile  Sources
Link  Binary  With  Libraries
[*] Copy  Bundle  Resources
Run  Script
*
Copy  Bundle  Resources  で
組み込まれた  Info.plist  を扱う
Info.plist  書き換えの⼿手段
原因は不不明
ただし、実機だと2回に1度度、
コード署名あたりでエラー  が発⽣生する様⼦子
Info.plist  書き換えの⼿手段
実機⽤用のビルドに限って  Build  Phases  終了了後に
パッケージング  と  コード署名  が⾏行行われる様⼦子
Info.plist  書き換えの⼿手段
1.  Run  Script  はパッケージングの前に処理理される
2.  Info.plist  が処理理されてから  Run  Script  までには
デバッグシンボルを⽣生成するログのみ
お詳しい⽅方へ!
どの辺りが
影響しているものなのでしょう?
ツイッターでの  Info.plist  の話をきっかけに
分かったことの紹介でした。
以上、

More Related Content

What's hot

心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of VeinTokoroten Nakayama
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へ
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へチーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へ
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へtoshihiro ichitani
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るUnity Technologies Japan K.K.
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
正しいものをともに考え、正しくともにつくる
正しいものをともに考え、正しくともにつくる正しいものをともに考え、正しくともにつくる
正しいものをともに考え、正しくともにつくるtoshihiro ichitani
 
その素敵なUI基盤を目指して・・・
その素敵なUI基盤を目指して・・・その素敵なUI基盤を目指して・・・
その素敵なUI基盤を目指して・・・KLab Inc. / Tech
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたTakahiro Miyaura
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説MinoDriven
 
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionSIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionYusuke Uchida
 
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方30分で理解するLet's Encryptの仕組みとSSL証明書の使い方
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方法林浩之
 
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -Takahiro Miyaura
 
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まるアジャイル開発はWhyから始まる
アジャイル開発はWhyから始まるtoshihiro ichitani
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 

What's hot (20)

心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へ
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へチーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へ
チーム仕事のはじめ方 〜「チームビルド」から「チームマージ」へ
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
3Dモデル類似検索
3Dモデル類似検索3Dモデル類似検索
3Dモデル類似検索
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
正しいものをともに考え、正しくともにつくる
正しいものをともに考え、正しくともにつくる正しいものをともに考え、正しくともにつくる
正しいものをともに考え、正しくともにつくる
 
その素敵なUI基盤を目指して・・・
その素敵なUI基盤を目指して・・・その素敵なUI基盤を目指して・・・
その素敵なUI基盤を目指して・・・
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみた
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
 
cvpaper.challengeについて
cvpaper.challengeについてcvpaper.challengeについて
cvpaper.challengeについて
 
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionSIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
 
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方30分で理解するLet's Encryptの仕組みとSSL証明書の使い方
30分で理解するLet's Encryptの仕組みとSSL証明書の使い方
 
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
HoloLensでコンテンツを操作する方法 - Gaze And Dwell -
 
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まるアジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 

Similar to Build 番号の自動更新スクリプトについて #cocoa_kansai

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストYoichiro Sakurai
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWSEiji Shinohara
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2Takao Tetsuro
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」fukuoka.ex
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説Akira Inoue
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識Daiyu Hatakeyama
 

Similar to Build 番号の自動更新スクリプトについて #cocoa_kansai (20)

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
Driverについて
DriverについてDriverについて
Driverについて
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 

More from Tomohiro Kumagai

最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_growTomohiro Kumagai
 
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせTomohiro Kumagai
 
_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swiftTomohiro Kumagai
 
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoominProperty Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoominTomohiro Kumagai
 
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料Tomohiro Kumagai
 
みんなで Swift 復習会
GO! in 札幌 – 10th′′
みんなで Swift 復習会
GO! in 札幌 – 10th′′みんなで Swift 復習会
GO! in 札幌 – 10th′′
みんなで Swift 復習会
GO! in 札幌 – 10th′′Tomohiro Kumagai
 
イニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswiftイニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswiftTomohiro Kumagai
 
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラTomohiro Kumagai
 
Swift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsapSwift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsapTomohiro Kumagai
 
iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftTomohiro Kumagai
 
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swiftTomohiro Kumagai
 
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販NightTomohiro Kumagai
 
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′Tomohiro Kumagai
 
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftTomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftTomohiro Kumagai
 
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconTomohiro Kumagai
 
みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′Tomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′Tomohiro Kumagai
 
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017Tomohiro Kumagai
 
みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料Tomohiro Kumagai
 

More from Tomohiro Kumagai (20)

最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
 
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせ
 
_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift
 
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoominProperty Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
 
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
 
みんなで Swift 復習会
GO! in 札幌 – 10th′′
みんなで Swift 復習会
GO! in 札幌 – 10th′′みんなで Swift 復習会
GO! in 札幌 – 10th′′
みんなで Swift 復習会
GO! in 札幌 – 10th′′
 
イニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswiftイニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswift
 
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議・文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
 
Swift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsapSwift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsap
 
iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swift
 
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swift
 
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Night
 
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′
 
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift
 
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
 
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質・追記版 #love_swift #ioscon
 
みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′みんなで Swift 復習会
GO! in 京都 – 6th′
みんなで Swift 復習会
GO! in 京都 – 6th′
 
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′
 
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017
 
みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料みんなで Swift 復習会 GO! in 福岡・発表資料
みんなで Swift 復習会 GO! in 福岡・発表資料
 

Build 番号の自動更新スクリプトについて #cocoa_kansai