SlideShare a Scribd company logo
先取り Go 1.5
PFIセミナー
柏原秀蔵
Preferred  Networks,  Inc.
2015/07/09
先取り Go1.5
⾃自⼰己紹介
l  柏原秀蔵 (@suma90h) (Preferred Networks)
l  最近:Go⾔言語を書いてます
l  最近の活動
–  システム系論論⽂文輪輪読会(論論⽂文読み会)  主催
–  お菓⼦子作り(写真は古いですが、なんとか継続してます)
3
概要
l  発表概要
l  Go 1.5の開発ステータス
l  Go 1.5の新機能、変更更点
l  未リリースのリリースノートの先取り
–  Shared Library
–  Execution Tracing
–  Concurrent GC
–  Vendoring
l  Go 1.5を使ってみる
l  Goの開発を追うには
l  まとめ
4	
https://github.com/golang-samples/gopher-vector
より Creative Commons 3.0
発表概要
l  発表の主な対象者
–  Go⾔言語ユーザ(開発者)
–  Go製ツールのユーザも(好)影響ありそう
l  ※注意点:このスライド作成時点では、Go  1.5は未リリースでもあるのと、
私の調査不不⾜足が原因で記述が不不正確である可能性があります
l  Go  1.5について個⼈人的に気になる新機能/Release  notesをピックアップした
l  この資料料は「The  State  of  Go  (May)」とGolang  githubらを辿った要旨・各
種資料料へのポインタだと思って使っていただければ
–  https://talks.golang.org/2015/state-‐‑‒of-‐‑‒go-‐‑‒may.slide#1
–  https://github.com/golang/go/blob/master/doc/go1.5.html
5
Go  1.5の開発ステータス
l  Go  1.5リリースは2015年年8⽉月1⽇日予定  現在(7⽉月)からあと約1ヶ⽉月先!  
–  5⽉月時点で⼤大幅な作業は終わっていて、feature  freezeに⼊入っているらしい  
–  ここまで、The  State  of  Go  からの情報
–  締め切切りが正確なら、近⽇日Release  Candidateが出るかもしれないと想像
l  Goは1.5から年年2回リリースのリリース計画となった
–  2⽉月1⽇日、8⽉月1⽇日の半年年ごとのメジャー(1.x)  リリース
–  3ヶ⽉月は開発、3ヶ⽉月はtesting(feature  freeze)の期間を取る
–  http://golang.org/s/releasesched
6
Go  1.5で注⽬目したい新機能・⼤大きな差分
l  未リリースであるが、リポジトリ中のリリースノートから抜粋
l  期待の新機能
–  Shared  Library
–  Execution  Tracing  (go  trace  コマンド)
–  Concurrent  Garbage  Collection
–  “vendoring”  external  package
l  気になる差分
–  ツールチェーンからC⾔言語を排除(Go  1.5のビルドにGo  1.4以降降が必要)
u  https://talks.golang.org/2015/gogo.slide#1
u  https://golang.org/s/go13compiler
u  Go  1.5のブートストラップ化を⽬目指すGoogle
‒  http://www.infoq.com/jp/news/2015/02/golang-‐‑‒15-‐‑‒bootstrapped
7
Go  1.5の差分
l  GOMAXPROCS環境変数がデフォルトでCPUコア数になった
l  internal  packageの⾔言語ユーザへの導⼊入
–  http://qiita.com/taka011239@github/items/5735a1ec78bad06f5485
–  http://golang.org/s/go14internal
l  前述の通りリリース計画が変更更で、半年年ごとの年年2回リリースになった
l  ⾔言語の⼩小さな変更更点
l  などなど
8
Shared  Library
l  buildmodeというコマンドラインオプションが新たに追加され、shared  objec
tの⽣生成が可能になった
–  $  go  build  –buildmode=shared  〜~略略〜~
l  buildmode  (go  help  buildmodeの⼀一部をざっくり説明)
–  archive:  mainパッケージ以外を.aファイルにビルドする
–  c-‐‑‒archive: mainと必要なパッケージをC⽤用のアーカイブにビルドする。Goソース中
で“//export  funcname”  マークが必要
–  c-‐‑‒shared: c-‐‑‒archiveのshared  library作成版
–  shared: mainパッケージ以外をshared  library化して、-‐‑‒linksharedオプション
でリンクできるようにする
l  Golang  で  Shared  Library  を出⼒力力する。  -‐‑‒  Qiita
l  Go  Execution  Modes
l  Thanks  pepshiso!
9
Execution  Tracing
l  fine-‐‑‒grained  (細かい粒粒度度)でのパフォーマンスモニタリングができるように
なったらしい
l  監視できるstats:それぞれの開始時間と、要した時間
–  Heap(GC)
–  Goroutine
–  スレッド
–  GoのProcessorごとでのプロファイル
u  システムコールの呼び出し・スタックトレース
l  提案ドキュメントではnetwork  IOも対象だったが、パッチを⾒見見るとIO監視は
確認できなかった
l  Go  Execution  Tracer:  http://golang.org/s/go15trace
l  Groupsのスレッドでは、AMD  Code  AnalystやIntel  VTuneを意識識している発⾔言
も
10
“vendoring”  external  package
l  Go⾔言語における  import  (go  get)のバージョン問題に対する実験的取り組み
l  Goユーザの⼈人はご存じの通り、Goは依存する外部ライブラリのバージョン指
定する機能を提供してない
–  これを解決するためにGodepコマンドのようなhackがある
–  Go公式でvendoring(依存リポジトリを⾃自分のリポジトリに含める)⽅方法が実験的
にサポートされるようになる
l  vendoringの詳細は次のNakashimaさんのエントリがかなり詳しい
l  Go⾔言語のDependency/Vendoringの問題と今後.gbあるいはGo1.5  |  SOTA
–  http://deeeet.com/writing/2015/06/26/golang-‐‑‒dependency-‐‑‒vendoring/
l  https://golang.org/s/go15vendor
11
Concurrent  GC
l  GCはStop  the  worldとConcurrent  GCのハイブリッドを前から採⽤用していた。
1.5ではstop  the  worldからconcurrent  collectorになってGCによる停⽌止期間
を改善した様⼦子
–  GCのレイテンシを10ms以下を⽬目標としている
l  GCによる停⽌止期間を短く、その代わりCPUとメモリ消費が少し増加
l  ほとんどのケースでgoroutineの並列列時のCPU使⽤用効率率率が上がるらしい
l  デザインドキュメントあります(あまり読んでません)
–  https://golang.org/s/go14gc
–  https://golang.org/s/go15gcpacing
l  Go  1.5以降降のガベージコレクタについてのプラン  –  Qiita
–  http://qiita.com/ruiu/items/40a1d362417808c690a8
12
Go  1.5を使ってみる
l  ビルドは簡単
–  Go  1.5  以降降のビルド⼿手順  –  Qiita
–  http://qiita.com/orociic/items/b285cf205f75b7291a9d
l  trace  コマンドを紹介(Execution  Tracing)
–  $  go  test  -‐‑‒trace=/tmp/trace  -‐‑‒run=BenchName-‐‑‒bench=BenchName  –cpu=4
–  $  PATH=trace-‐‑‒viewer/tracing:$PATH  trace  -‐‑‒http=localhost:9876  path/to/
testbinary.test  /tmp/trace
–  解説:  http://golang.org/s/go15trace
13
traceの例例
14
Goの開発を追うには
l  開発者による発表資料料が公開されているので読む(リンクも辿る)
–  https://talks.golang.org
l  Design  Documentが公開されているので読む
l  Google  Groupsのgolang-‐‑‒devを⾒見見る
–  https://groups.google.com/forum/#!forum/golang-‐‑‒dev
l  githubのリポジトリ、issueを⾒見見る
–  今回は幸いにもリリース間近だったため、作成途中のリリースノートを参照できた
–  https://github.com/golang/go
15
まとめと感想
l  Go  1.5の新機能/変更更点を8⽉月予定のリリースに先⾏行行して紹介した
l  情報を調べるにあたって既存スライド、リポジトリ、Design  Documentなど
開発のコア・近しい情報源をあたった
–  1.5リリース後になれば、⽇日本語での資料料やまとめも増えてくると考えられる
l  Go⾔言語ランタイム/コンパイラの開発スタイルは今回の調査で把握した
–  Design  Documentを書いてGoogle  Groupsでコメントを募る形で議論論が進む
–  (よく読んでないが)「Contribution  Guidelines」もある
u  https://golang.org/doc/contribute.html
16

More Related Content

PDF
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
Aki Ariga
 
PDF
深層学習ライブラリのプログラミングモデル
Yuta Kashino
 
PDF
Deep Learningライブラリ 色々つかってみた感想まとめ
Takanori Ogata
 
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
PPTX
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
 
PDF
TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話
Yuya Kato
 
PPTX
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
PDF
Python札幌 2012/06/17
Shinya Okano
 
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
Aki Ariga
 
深層学習ライブラリのプログラミングモデル
Yuta Kashino
 
Deep Learningライブラリ 色々つかってみた感想まとめ
Takanori Ogata
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
 
TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話
Yuya Kato
 
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
Python札幌 2012/06/17
Shinya Okano
 

What's hot (20)

PDF
スクレイピングとPython
Hironori Sekine
 
PPTX
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
 
PDF
10分でわかるPythonの開発環境
Hisao Soyama
 
PPTX
Chainer meetup
kikusu
 
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
PPT
Mrubyの始め方
Masaki Muranaka
 
PDF
PyCharm入門
Yuki Nagai
 
PPTX
Pynyumon03 LT
drillan
 
PDF
Pyconjp2016 pyftplib
Shinya Okano
 
PDF
S12 t1 python学習奮闘記#5
Takeshi Akutsu
 
PPTX
Pythonでpdfをいじってみる
株式会社 システムヨシイ
 
PDF
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
 
PDF
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
PDF
S20 t1 stapyのこれまでとこれから
Takeshi Akutsu
 
PDF
Python3 プログラミング勉強会
Tetsuya Morimoto
 
PPTX
初心者が Python で戸惑ったところ
Emma Haruka Iwao
 
PDF
Python & PyConJP 2014 Report
gree_tech
 
PDF
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
 
PPTX
Python札幌201406
Shinya Okano
 
PDF
ODF PlugFestを味見しよう/Tasting Odf plug fest
Naruhiko Ogasawara
 
スクレイピングとPython
Hironori Sekine
 
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
 
10分でわかるPythonの開発環境
Hisao Soyama
 
Chainer meetup
kikusu
 
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
Mrubyの始め方
Masaki Muranaka
 
PyCharm入門
Yuki Nagai
 
Pynyumon03 LT
drillan
 
Pyconjp2016 pyftplib
Shinya Okano
 
S12 t1 python学習奮闘記#5
Takeshi Akutsu
 
Pythonでpdfをいじってみる
株式会社 システムヨシイ
 
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
 
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
S20 t1 stapyのこれまでとこれから
Takeshi Akutsu
 
Python3 プログラミング勉強会
Tetsuya Morimoto
 
初心者が Python で戸惑ったところ
Emma Haruka Iwao
 
Python & PyConJP 2014 Report
gree_tech
 
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
 
Python札幌201406
Shinya Okano
 
ODF PlugFestを味見しよう/Tasting Odf plug fest
Naruhiko Ogasawara
 
Ad

Viewers also liked (20)

PDF
イノベーションことはじめ
Preferred Networks
 
PDF
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
Preferred Networks
 
PDF
実世界の人工知能 〜交通,製造業,バイオヘルスケア〜
Preferred Networks
 
PDF
実世界の人工知能@DeNA TechCon 2017
Preferred Networks
 
PDF
IPAB2017 深層学習を使った新薬の探索から創造へ
Preferred Networks
 
PDF
特許をとろう (15/09/17 pfiセミナー )
Preferred Networks
 
PDF
ledgerで経理
Preferred Networks
 
PDF
systemdを始めよう
Preferred Networks
 
PDF
Chainerで流体計算
Preferred Networks
 
PPTX
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
Preferred Networks
 
PPTX
Amazon Picking Challenge 結果報告
Preferred Networks
 
PDF
対話における商品の営業
Preferred Networks
 
PDF
音声認識と深層学習
Preferred Networks
 
PDF
Deep Learningと自然言語処理
Preferred Networks
 
PDF
ディープラーニングが活かすIoT
Preferred Networks
 
PDF
ディープラーニングの最新動向
Preferred Networks
 
PDF
PFI Corporate Profile
Preferred Networks
 
PDF
PFIセミナー 2013/09/19 「Linux開発環境の自動構築」
Preferred Networks
 
PDF
ツイートID生成とツイッターリアルタイム検索システムの話
Preferred Networks
 
PDF
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Preferred Networks
 
イノベーションことはじめ
Preferred Networks
 
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
Preferred Networks
 
実世界の人工知能 〜交通,製造業,バイオヘルスケア〜
Preferred Networks
 
実世界の人工知能@DeNA TechCon 2017
Preferred Networks
 
IPAB2017 深層学習を使った新薬の探索から創造へ
Preferred Networks
 
特許をとろう (15/09/17 pfiセミナー )
Preferred Networks
 
ledgerで経理
Preferred Networks
 
systemdを始めよう
Preferred Networks
 
Chainerで流体計算
Preferred Networks
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
Preferred Networks
 
Amazon Picking Challenge 結果報告
Preferred Networks
 
対話における商品の営業
Preferred Networks
 
音声認識と深層学習
Preferred Networks
 
Deep Learningと自然言語処理
Preferred Networks
 
ディープラーニングが活かすIoT
Preferred Networks
 
ディープラーニングの最新動向
Preferred Networks
 
PFI Corporate Profile
Preferred Networks
 
PFIセミナー 2013/09/19 「Linux開発環境の自動構築」
Preferred Networks
 
ツイートID生成とツイッターリアルタイム検索システムの話
Preferred Networks
 
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Preferred Networks
 
Ad

More from Preferred Networks (20)

PDF
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
Preferred Networks
 
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Preferred Networks
 
PDF
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Preferred Networks
 
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
Preferred Networks
 
PDF
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Preferred Networks
 
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
PDF
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
PDF
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
Preferred Networks
 
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
 
PPTX
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
 
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
Preferred Networks
 
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Preferred Networks
 
PDF
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Preferred Networks
 
PDF
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
Preferred Networks
 
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
 
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
 
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Preferred Networks
 
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
Preferred Networks
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Preferred Networks
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Preferred Networks
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
Preferred Networks
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Preferred Networks
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
Preferred Networks
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
Preferred Networks
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Preferred Networks
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Preferred Networks
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
Preferred Networks
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Preferred Networks
 

Recently uploaded (11)

PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 

先取り Go1.5

  • 3. ⾃自⼰己紹介 l  柏原秀蔵 (@suma90h) (Preferred Networks) l  最近:Go⾔言語を書いてます l  最近の活動 –  システム系論論⽂文輪輪読会(論論⽂文読み会)  主催 –  お菓⼦子作り(写真は古いですが、なんとか継続してます) 3
  • 4. 概要 l  発表概要 l  Go 1.5の開発ステータス l  Go 1.5の新機能、変更更点 l  未リリースのリリースノートの先取り –  Shared Library –  Execution Tracing –  Concurrent GC –  Vendoring l  Go 1.5を使ってみる l  Goの開発を追うには l  まとめ 4 https://github.com/golang-samples/gopher-vector より Creative Commons 3.0
  • 5. 発表概要 l  発表の主な対象者 –  Go⾔言語ユーザ(開発者) –  Go製ツールのユーザも(好)影響ありそう l  ※注意点:このスライド作成時点では、Go  1.5は未リリースでもあるのと、 私の調査不不⾜足が原因で記述が不不正確である可能性があります l  Go  1.5について個⼈人的に気になる新機能/Release  notesをピックアップした l  この資料料は「The  State  of  Go  (May)」とGolang  githubらを辿った要旨・各 種資料料へのポインタだと思って使っていただければ –  https://talks.golang.org/2015/state-‐‑‒of-‐‑‒go-‐‑‒may.slide#1 –  https://github.com/golang/go/blob/master/doc/go1.5.html 5
  • 6. Go  1.5の開発ステータス l  Go  1.5リリースは2015年年8⽉月1⽇日予定  現在(7⽉月)からあと約1ヶ⽉月先!   –  5⽉月時点で⼤大幅な作業は終わっていて、feature  freezeに⼊入っているらしい   –  ここまで、The  State  of  Go  からの情報 –  締め切切りが正確なら、近⽇日Release  Candidateが出るかもしれないと想像 l  Goは1.5から年年2回リリースのリリース計画となった –  2⽉月1⽇日、8⽉月1⽇日の半年年ごとのメジャー(1.x)  リリース –  3ヶ⽉月は開発、3ヶ⽉月はtesting(feature  freeze)の期間を取る –  http://golang.org/s/releasesched 6
  • 7. Go  1.5で注⽬目したい新機能・⼤大きな差分 l  未リリースであるが、リポジトリ中のリリースノートから抜粋 l  期待の新機能 –  Shared  Library –  Execution  Tracing  (go  trace  コマンド) –  Concurrent  Garbage  Collection –  “vendoring”  external  package l  気になる差分 –  ツールチェーンからC⾔言語を排除(Go  1.5のビルドにGo  1.4以降降が必要) u  https://talks.golang.org/2015/gogo.slide#1 u  https://golang.org/s/go13compiler u  Go  1.5のブートストラップ化を⽬目指すGoogle ‒  http://www.infoq.com/jp/news/2015/02/golang-‐‑‒15-‐‑‒bootstrapped 7
  • 8. Go  1.5の差分 l  GOMAXPROCS環境変数がデフォルトでCPUコア数になった l  internal  packageの⾔言語ユーザへの導⼊入 –  http://qiita.com/taka011239@github/items/5735a1ec78bad06f5485 –  http://golang.org/s/go14internal l  前述の通りリリース計画が変更更で、半年年ごとの年年2回リリースになった l  ⾔言語の⼩小さな変更更点 l  などなど 8
  • 9. Shared  Library l  buildmodeというコマンドラインオプションが新たに追加され、shared  objec tの⽣生成が可能になった –  $  go  build  –buildmode=shared  〜~略略〜~ l  buildmode  (go  help  buildmodeの⼀一部をざっくり説明) –  archive:  mainパッケージ以外を.aファイルにビルドする –  c-‐‑‒archive: mainと必要なパッケージをC⽤用のアーカイブにビルドする。Goソース中 で“//export  funcname”  マークが必要 –  c-‐‑‒shared: c-‐‑‒archiveのshared  library作成版 –  shared: mainパッケージ以外をshared  library化して、-‐‑‒linksharedオプション でリンクできるようにする l  Golang  で  Shared  Library  を出⼒力力する。  -‐‑‒  Qiita l  Go  Execution  Modes l  Thanks  pepshiso! 9
  • 10. Execution  Tracing l  fine-‐‑‒grained  (細かい粒粒度度)でのパフォーマンスモニタリングができるように なったらしい l  監視できるstats:それぞれの開始時間と、要した時間 –  Heap(GC) –  Goroutine –  スレッド –  GoのProcessorごとでのプロファイル u  システムコールの呼び出し・スタックトレース l  提案ドキュメントではnetwork  IOも対象だったが、パッチを⾒見見るとIO監視は 確認できなかった l  Go  Execution  Tracer:  http://golang.org/s/go15trace l  Groupsのスレッドでは、AMD  Code  AnalystやIntel  VTuneを意識識している発⾔言 も 10
  • 11. “vendoring”  external  package l  Go⾔言語における  import  (go  get)のバージョン問題に対する実験的取り組み l  Goユーザの⼈人はご存じの通り、Goは依存する外部ライブラリのバージョン指 定する機能を提供してない –  これを解決するためにGodepコマンドのようなhackがある –  Go公式でvendoring(依存リポジトリを⾃自分のリポジトリに含める)⽅方法が実験的 にサポートされるようになる l  vendoringの詳細は次のNakashimaさんのエントリがかなり詳しい l  Go⾔言語のDependency/Vendoringの問題と今後.gbあるいはGo1.5  |  SOTA –  http://deeeet.com/writing/2015/06/26/golang-‐‑‒dependency-‐‑‒vendoring/ l  https://golang.org/s/go15vendor 11
  • 12. Concurrent  GC l  GCはStop  the  worldとConcurrent  GCのハイブリッドを前から採⽤用していた。 1.5ではstop  the  worldからconcurrent  collectorになってGCによる停⽌止期間 を改善した様⼦子 –  GCのレイテンシを10ms以下を⽬目標としている l  GCによる停⽌止期間を短く、その代わりCPUとメモリ消費が少し増加 l  ほとんどのケースでgoroutineの並列列時のCPU使⽤用効率率率が上がるらしい l  デザインドキュメントあります(あまり読んでません) –  https://golang.org/s/go14gc –  https://golang.org/s/go15gcpacing l  Go  1.5以降降のガベージコレクタについてのプラン  –  Qiita –  http://qiita.com/ruiu/items/40a1d362417808c690a8 12
  • 13. Go  1.5を使ってみる l  ビルドは簡単 –  Go  1.5  以降降のビルド⼿手順  –  Qiita –  http://qiita.com/orociic/items/b285cf205f75b7291a9d l  trace  コマンドを紹介(Execution  Tracing) –  $  go  test  -‐‑‒trace=/tmp/trace  -‐‑‒run=BenchName-‐‑‒bench=BenchName  –cpu=4 –  $  PATH=trace-‐‑‒viewer/tracing:$PATH  trace  -‐‑‒http=localhost:9876  path/to/ testbinary.test  /tmp/trace –  解説:  http://golang.org/s/go15trace 13
  • 15. Goの開発を追うには l  開発者による発表資料料が公開されているので読む(リンクも辿る) –  https://talks.golang.org l  Design  Documentが公開されているので読む l  Google  Groupsのgolang-‐‑‒devを⾒見見る –  https://groups.google.com/forum/#!forum/golang-‐‑‒dev l  githubのリポジトリ、issueを⾒見見る –  今回は幸いにもリリース間近だったため、作成途中のリリースノートを参照できた –  https://github.com/golang/go 15
  • 16. まとめと感想 l  Go  1.5の新機能/変更更点を8⽉月予定のリリースに先⾏行行して紹介した l  情報を調べるにあたって既存スライド、リポジトリ、Design  Documentなど 開発のコア・近しい情報源をあたった –  1.5リリース後になれば、⽇日本語での資料料やまとめも増えてくると考えられる l  Go⾔言語ランタイム/コンパイラの開発スタイルは今回の調査で把握した –  Design  Documentを書いてGoogle  Groupsでコメントを募る形で議論論が進む –  (よく読んでないが)「Contribution  Guidelines」もある u  https://golang.org/doc/contribute.html 16