CI to CD、
ソフトウェア開発の
継続的アプローチ
プログラミング生放送勉強会
第28回@東北大学
2014/05/31(土) You&I
ジコ、ショウカイ。
 H/N: You&I(読み:ユーアンドアイ)
 SNS: @you_and_i
 出身: 生まれも育ちも名古屋市
 年齢: 30代中盤
 本職: 商学部出身の職業プログラマ
 言語: C++, C#他
 所属...
AGENDA
1. アジャイル開発とは
2. CIの概念
3. CIからCDへの展開
4. まとめ
CI to CD、ソフトウェア開発の継続的アプローチ
1.アジャイル開発とは
CI to CD、ソフトウェア開発の継続的アプローチ
BIGLOBEのアジャイルちゃんってどうなったん?
http://engineer.biglobe.ne.jp/201304/article_1.html
1.アジャイル開発とは(1/12)
アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセス...
1.アジャイル開発とは(2/12)
私たちは以下の原則に従う:
1. 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
2. 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけること
によって、お客様の競争力...
1.アジャイル開発とは(3/12)
アジャイル開発と言えば、アジャイル
マニフェスト!
アジャイルマニフェストでは4つの価
値と12の原則が定義されています。
そしてそのアジャイルマニフェストに
基づいたアジャイルプラスティスが多
数存在...
1.アジャイル開発とは(4/12)
 196X年:トヨタ生産方式体系化
 1986年:Scrum命名元論文「The New
New Product Development Game」
発表
 1988年:リーン生産方式命名記事
「Triu...
1.アジャイル開発とは(5/12)
今、アジャイル開発と言えばScrumを
採用する事が多いです。
またScrumにXPのプラクティスを組
み合わせる事も多いです。
そのXPのプラクティスの1つに今回の
テーマのCI(Continuous...
1.アジャイル開発とは(6/12)
1986年のScrum命名元論文発表
 Scrumは1986年に野中 郁次郎&竹内 弘
高 両教授により発表された論文「The
New New Product Development
Game」にて日本の...
1.アジャイル開発とは(7/12)
 1993年のScrum体系化
 1986年の野中 郁次郎&竹内 弘高 両教授によ
り発表された論文を受けて、1993年にKen
Schwaber博士とJeff Sutherland博士によっ
てScru...
http://scrumprimer.org/jp/anime
1.アジャイル開発とは(9/12)
1960年頃にトヨタ生産方式が体系化
 トヨタ生産方式の概念
 http://www.toyota.co.jp/jpn/company/vi
sion/production_system/index.h...
1.アジャイル開発とは(10/12)
 1988年のTriumph of the Lean
Production Systemの記事発表
 リーン生産方式は、MITの研究者がトヨタ生
産方式を研究し再体系化したものです。リー
ンという言葉が...
1.アジャイル開発とは(11/12)
 1999年のXP体系化
 XPは、Kent Beck氏による著書「eXtreme
Programming explained」 (日本語訳:XP
エクストリーム・プログラミング入門)とし
てまとめられ...
http://www.extremeprogramming.org/map/project.html
CI to CD、ソフトウェア開発の継続的アプローチ
2.CIの概念
CI to CD、ソフトウェア開発の継続的アプローチ
CI ≠ 超 祝う
2.CIの概念(1/9)
ここまでの説明流れで、CIの概念が出
てくるまでに随分と掛かってしまいま
した。
ここからはCIという概念がどのような
ものなのか解説していきます。
先程、何故トヨタ生産方式の説明をし
たのかが実はここで繋がって...
2.CIの概念(2/9)
まずは用語から
 Continuous:継続的
 動詞「continue」の形容詞版ですね。
 連続したとか絶え間ないという意味です。
 Integration:インテグレーション
 動詞「integrate...
2.CIの概念(3/9)
CIサーバー製品
 OSS
 Jenkins(旧Hudson)
 GitLab CI
 商用
 Microsoft Visual Studio Online/TFServer
 Rational Team...
2.CIの概念(4/9)
 CIサーバーで出来る事
1. タスク実行
 実行タイミング制御
 スケジュール
 RPC(Remote Procedure Call)
 バージョン管理リポジトリへの接続
 ソースコードの統合処理 ※後述...
2.CIの概念(5/9)
 ソースコードの統合処理の詳細
 静的解析処理
 コーディング規約チェック
 コードの重複チェック
 ビルド
 コンパイル
 リンク
 メモリ使用量計測(mapファイル)
 テスト
 ユニットテスト...
2.CIの概念(6/9)
 CIサーバーが目指している事
 アジャイルマニフェストと照らし合わせる
と・・・
 包括的なドキュメントよりも動くソフトウェア
を価値とする。
 顧客満足を最優先し、価値のあるソフトウェア
を早く継続的に提供...
2.CIの概念(7/9)
CIサーバーが目指している事 (続)
 そして大事なのは、手順の再現性と属人
性の排除です。自動化により、ソース
コードの統合処理の手順は何度実行して
も同じ結果が得られます。
 まず前提として、Scrumが製造...
2.CIの概念(8/9)
CIサーバーが目指している事 (続2)
 ここから、トヨタ生産方式のにんべんの
付いた自動化に繋がる話になりますが、
豊田自動織機はエラーが発生した際に自
動停止する事で不良品を減らし、且つ織
機の属人性を排除する...
2.CIの概念(9/9)
 CIサーバーが目指している事 (続3)
 ソフトウェア開発は知識創造作業だと先程説明し
ましたが、ソフトウェア開発作業の中には工場の
ライン生産のように繰り返し同じ手順を踏む作業
があります。ビルドやテストがそう...
3.CIからCDへの展開
CI to CD、ソフトウェア開発の継続的アプローチ
ワタシハ プロナマチャン シンザングミ デス
I am a newcomer of the Pronama-Chan Fan Community.
3. CIからCDへの展開(1/7)
CIについて理解が深まった所で、いよ
いよCD(Continuous Delivery:継続
的デリバリー)です。
CDはCIに加えて、動くソフトウェア
を実行する為の環境を提供する仕組み
の事を指しま...
3. CIからCDへの展開(2/7)
ここでまたアジャイルマニフェストと、
照らし合わせてみると、
 顧客満足を最優先し、価値のあるソフト
ウェアを早く継続的に提供します。
 動くソフトウェアを、2-3週間から2-3ヶ
月というできるだけ...
3. CIからCDへの展開(3/7)
OSSなライブラリやフレームワークな
どでは良くNightlyビルドが行われて
いたりしますが、Nightlyビルドの
パッケージはただパッケージングした
だけで、動くソフトウェアである保証
はありません...
3. CIからCDへの展開(4/7)
そして短い時間間隔で何度もリリース
する行為もとても重要です。
開発の終盤に1回きりでリリースする
場合、リリースパッケージには何を含
めるのかを膨大な成果物からかき集め
てきたり、実行に必要な設定を調...
3. CIからCDへの展開(5/7)
継続的デリバリーは、近年のクラウド
サービスでのデプロイだけではなく、
TFServerやVagrant等のように仮想環
境と組み合わせて実行したり、デスク
トップアプリならばインストーラーを
作成する事...
3. CIからCDへの展開(6/7)
継続的デリバリーで重要な事は、ツー
ルを使ったりする事よりも、開発して
いるアプリケーションに合わせて、実
行環境を構築する手順(=デプロイメ
ントパイプライン)を作成し、それを
自働化する事です。
CI...
3. CIからCDへの展開(7/7)
CIやCDの環境を構築するのは手間が
掛かりますが、CI&CDを実施する事
による恩恵はとても大きいです。
昨年伊勢神宮の式年遷宮がありました
が、CI&CD環境を1度構築してお終
いでは技術継承が行わ...
4.まとめ
CI to CD、ソフトウェア開発の継続的アプローチ
4.まとめ
準備の時間がなくてツールを使ったデ
モは今回ありません。
ソフトウェア開発は、工場のライン生
産とは異なり、知識創造作業です。
CIやCDの仕組みは、自働化により煩
わしい繰り返し作業から開発者を解放
し、その分を知識創造作業...
参考書籍
継続的インテグレーション入門
継続的デリバリー
チーム開発実践入門
CI to CD、ソフトウェア開発の継続的アプローチ
Upcoming SlideShare
Loading in...5
×

CI to CD、ソフトウェアの継続的アプローチ

836

Published on

プログラミング生放送勉強会 第28回@東北大学の発表資料。
http://pronama.azurewebsites.net/2014/03/29/pronama-28-at-sendai/

Published in: Software
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
836
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
8
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

CI to CD、ソフトウェアの継続的アプローチ

  1. 1. CI to CD、 ソフトウェア開発の 継続的アプローチ プログラミング生放送勉強会 第28回@東北大学 2014/05/31(土) You&I
  2. 2. ジコ、ショウカイ。  H/N: You&I(読み:ユーアンドアイ)  SNS: @you_and_i  出身: 生まれも育ちも名古屋市  年齢: 30代中盤  本職: 商学部出身の職業プログラマ  言語: C++, C#他  所属: プログラミング生放送勉強会 名古屋支部 名古屋アジャイル勉強会 わんくま同盟 名古屋勉強会 CI to CD、ソフトウェア開発の継続的アプローチ
  3. 3. AGENDA 1. アジャイル開発とは 2. CIの概念 3. CIからCDへの展開 4. まとめ CI to CD、ソフトウェア開発の継続的アプローチ
  4. 4. 1.アジャイル開発とは CI to CD、ソフトウェア開発の継続的アプローチ BIGLOBEのアジャイルちゃんってどうなったん? http://engineer.biglobe.ne.jp/201304/article_1.html
  5. 5. 1.アジャイル開発とは(1/12) アジャイルソフトウェア開発宣言 私たちは、ソフトウェア開発の実践 あるいは実践を手助けをする活動を通じて、 よりよい開発方法を見つけだそうとしている。 この活動を通して、私たちは以下の価値に至った。 プロセスやツールよりも 個人と対話を、 包括的なドキュメントよりも 動くソフトウェアを、 契約交渉よりも 顧客との協調を、 計画に従うことよりも 変化への対応を、 価値とする。すなわち、左記のことがらに価値が あることを認めながらも、私たちは右記のことが らにより価値をおく。 CI to CD、ソフトウェア開発の継続的アプローチ
  6. 6. 1.アジャイル開発とは(2/12) 私たちは以下の原則に従う: 1. 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。 2. 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけること によって、お客様の競争力を引き上げます。 3. 動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリ リースします。 4. ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなり ません。 5. 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が 無事終わるまで彼らを信頼します。 6. 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話を することです。 7. 動くソフトウェアこそが進捗の最も重要な尺度です。 8. アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に 維持できるようにしなければなりません。 9. 技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。 10. シンプルさ(ムダなく作れる量を最大限にすること)が本質です。 11. 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。 12. チームがもっと効率を高めることができるかを定期的に振り返り、それに基づい て自分たちのやり方を最適に調整します。 CI to CD、ソフトウェア開発の継続的アプローチ
  7. 7. 1.アジャイル開発とは(3/12) アジャイル開発と言えば、アジャイル マニフェスト! アジャイルマニフェストでは4つの価 値と12の原則が定義されています。 そしてそのアジャイルマニフェストに 基づいたアジャイルプラスティスが多 数存在します。 ちょっと時系列でアジャイル開発の歴 史を見てみましょう。 CI to CD、ソフトウェア開発の継続的アプローチ
  8. 8. 1.アジャイル開発とは(4/12)  196X年:トヨタ生産方式体系化  1986年:Scrum命名元論文「The New New Product Development Game」 発表  1988年:リーン生産方式命名記事 「Triumph of the Lean Production System」発表  1993年:Scrum体系化  1996年:eXtreme Programming体系化  2001年:アジャイルマニフェスト制定 CI to CD、ソフトウェア開発の継続的アプローチ
  9. 9. 1.アジャイル開発とは(5/12) 今、アジャイル開発と言えばScrumを 採用する事が多いです。 またScrumにXPのプラクティスを組 み合わせる事も多いです。 そのXPのプラクティスの1つに今回の テーマのCI(Continuous Integration: 継続的インテグレーション)がありま す。 CI to CD、ソフトウェア開発の継続的アプローチ
  10. 10. 1.アジャイル開発とは(6/12) 1986年のScrum命名元論文発表  Scrumは1986年に野中 郁次郎&竹内 弘 高 両教授により発表された論文「The New New Product Development Game」にて日本の製造業における 新製品開発の流れがラグビーのスクラム に例えて説明された事にその名前は由来 します。  詳細は平鍋健児さんと野中先生による著 書「アジャイル開発とスクラム」を読ん でみて下さい。 CI to CD、ソフトウェア開発の継続的アプローチ
  11. 11. 1.アジャイル開発とは(7/12)  1993年のScrum体系化  1986年の野中 郁次郎&竹内 弘高 両教授によ り発表された論文を受けて、1993年にKen Schwaber博士とJeff Sutherland博士によっ てScrumは体系化されました。  Scrumの特徴  三本柱:検査、適応、透明性  チーム構成:プロダクトオーナー、開発チー ム、スクラムマスター  成果物:プロダクトバックログ、スプリント バックログ、プロダクトインクリメント  イベント:スプリント、スプリント計画ミー ティング、デイリースクラム、スプリントレ ビュー、スプリントレトロスペクティブ CI to CD、ソフトウェア開発の継続的アプローチ
  12. 12. http://scrumprimer.org/jp/anime
  13. 13. 1.アジャイル開発とは(9/12) 1960年頃にトヨタ生産方式が体系化  トヨタ生産方式の概念  http://www.toyota.co.jp/jpn/company/vi sion/production_system/index.html  自働化 (にんべんの付いた自動化)  Just-In-Time  この2つの概念を実現する為に、絶え間 ない改善活動が行われ、かんばん方式な どの手法が生み出されてきました。  詳細は、大野 耐一著「トヨタ生産方式」 を読んでみて下さい。 CI to CD、ソフトウェア開発の継続的アプローチ
  14. 14. 1.アジャイル開発とは(10/12)  1988年のTriumph of the Lean Production Systemの記事発表  リーン生産方式は、MITの研究者がトヨタ生 産方式を研究し再体系化したものです。リー ンという言葉が最初に使われたのがこの記事 になります。  このようにトヨタ生産方式の概念は、その理 念や原則を元に様々な分野に応用されていま す。  最近だとリーンスタートアップ等がその一例。 CI to CD、ソフトウェア開発の継続的アプローチ トヨタ 生産方式 リーン 生産方式 リーンソフト ウェア開発 アジャイル 開発
  15. 15. 1.アジャイル開発とは(11/12)  1999年のXP体系化  XPは、Kent Beck氏による著書「eXtreme Programming explained」 (日本語訳:XP エクストリーム・プログラミング入門)とし てまとめられたアジャイル開発手法の一つで す。  XPのプラクティス(一部)  1週間サイクル(イテレーション)、ユーザース トーリー、コーディング規約、スタンドアップ ミーティング(朝会)  ペアプログラミング、YAGNI(You Aren‘t Going to Need It.)、Spike  CI(継続的インテグレーション)、 TDD(テスト駆 動開発)、リファクタリング、コードの共同所有 CI to CD、ソフトウェア開発の継続的アプローチ
  16. 16. http://www.extremeprogramming.org/map/project.html CI to CD、ソフトウェア開発の継続的アプローチ
  17. 17. 2.CIの概念 CI to CD、ソフトウェア開発の継続的アプローチ CI ≠ 超 祝う
  18. 18. 2.CIの概念(1/9) ここまでの説明流れで、CIの概念が出 てくるまでに随分と掛かってしまいま した。 ここからはCIという概念がどのような ものなのか解説していきます。 先程、何故トヨタ生産方式の説明をし たのかが実はここで繋がってきます。 繋がるはずです。 CI to CD、ソフトウェア開発の継続的アプローチ
  19. 19. 2.CIの概念(2/9) まずは用語から  Continuous:継続的  動詞「continue」の形容詞版ですね。  連続したとか絶え間ないという意味です。  Integration:インテグレーション  動詞「integrate」の名詞版ですね。  ソフトウェア開発ではちょくちょく使われる 単語ですね  SIer = System Integrater  IDE = Integrated Development Environment  統合とか結合という意味です。 CI to CD、ソフトウェア開発の継続的アプローチ
  20. 20. 2.CIの概念(3/9) CIサーバー製品  OSS  Jenkins(旧Hudson)  GitLab CI  商用  Microsoft Visual Studio Online/TFServer  Rational Team Concert  Atlassian Bamboo  Travis CI CI to CD、ソフトウェア開発の継続的アプローチ
  21. 21. 2.CIの概念(4/9)  CIサーバーで出来る事 1. タスク実行  実行タイミング制御  スケジュール  RPC(Remote Procedure Call)  バージョン管理リポジトリへの接続  ソースコードの統合処理 ※後述 2. タスク実行結果の通知  E-mail  Chat  XFD(eXtreme Feedback Device)  パトランプ的なデバイス 3. プラグイン拡張 CI to CD、ソフトウェア開発の継続的アプローチ
  22. 22. 2.CIの概念(5/9)  ソースコードの統合処理の詳細  静的解析処理  コーディング規約チェック  コードの重複チェック  ビルド  コンパイル  リンク  メモリ使用量計測(mapファイル)  テスト  ユニットテスト  SILS(Software In the Loop Simulation)  ベンチマーク  コミットのリバート  デプロイ ※CIからCDの項で解説 CI to CD、ソフトウェア開発の継続的アプローチ
  23. 23. 2.CIの概念(6/9)  CIサーバーが目指している事  アジャイルマニフェストと照らし合わせる と・・・  包括的なドキュメントよりも動くソフトウェア を価値とする。  顧客満足を最優先し、価値のあるソフトウェア を早く継続的に提供します。  動くソフトウェアを、2-3週間から2-3ヶ月とい うできるだけ短い時間間隔でリリースします。  動くソフトウェアこそが進捗の最も重要な尺度 です。  CIは、短い時間間隔で継続的に動くソフト ウェアをリリースする為のアジャイルプラク ティスって事ですね。 CI to CD、ソフトウェア開発の継続的アプローチ
  24. 24. 2.CIの概念(7/9) CIサーバーが目指している事 (続)  そして大事なのは、手順の再現性と属人 性の排除です。自動化により、ソース コードの統合処理の手順は何度実行して も同じ結果が得られます。  まず前提として、Scrumが製造業の新製 品開発のやり方に由来しているように、 ソフトウェア開発は知識創造作業です。  ソフトウェア開発は、手順は同じになる 事はあっても、毎回異なる作業内容にな るはずで、間違っても工場でのライン生 産作業とは異なる性質を持ちます。 CI to CD、ソフトウェア開発の継続的アプローチ
  25. 25. 2.CIの概念(8/9) CIサーバーが目指している事 (続2)  ここから、トヨタ生産方式のにんべんの 付いた自動化に繋がる話になりますが、 豊田自動織機はエラーが発生した際に自 動停止する事で不良品を減らし、且つ織 機の属人性を排除する事で、1人の作業 者が複数台の織機を管理できるようにな りました。  そして自動車生産では、エラーが発生し た事を周りに知らせる行灯(あんどん)の ような仕組みも出てきました。つまりは XFDですね。 CI to CD、ソフトウェア開発の継続的アプローチ
  26. 26. 2.CIの概念(9/9)  CIサーバーが目指している事 (続3)  ソフトウェア開発は知識創造作業だと先程説明し ましたが、ソフトウェア開発作業の中には工場の ライン生産のように繰り返し同じ手順を踏む作業 があります。ビルドやテストがそうですね。  こういう部分について属人性を排除して自働化す る事で、ミスが減り作業の効率が上がります。  その自働化を実現するツールがCIサーバーになる 訳です。 CI to CD、ソフトウェア開発の継続的アプローチ
  27. 27. 3.CIからCDへの展開 CI to CD、ソフトウェア開発の継続的アプローチ ワタシハ プロナマチャン シンザングミ デス I am a newcomer of the Pronama-Chan Fan Community.
  28. 28. 3. CIからCDへの展開(1/7) CIについて理解が深まった所で、いよ いよCD(Continuous Delivery:継続 的デリバリー)です。 CDはCIに加えて、動くソフトウェア を実行する為の環境を提供する仕組み の事を指します。 CDの環境は、基本的にCIサーバーに 実行環境を加えたものになります。 CI to CD、ソフトウェア開発の継続的アプローチ
  29. 29. 3. CIからCDへの展開(2/7) ここでまたアジャイルマニフェストと、 照らし合わせてみると、  顧客満足を最優先し、価値のあるソフト ウェアを早く継続的に提供します。  動くソフトウェアを、2-3週間から2-3ヶ 月というできるだけ短い時間間隔でリ リースします。 折角動くソフトウェアを作っても、動 かせる環境がなくては意味がありませ んね。そもそも動くって言えません。 CI to CD、ソフトウェア開発の継続的アプローチ
  30. 30. 3. CIからCDへの展開(3/7) OSSなライブラリやフレームワークな どでは良くNightlyビルドが行われて いたりしますが、Nightlyビルドの パッケージはただパッケージングした だけで、動くソフトウェアである保証 はありません。そういう意味で継続的 デリバリーとは異なります。 CI to CD、ソフトウェア開発の継続的アプローチ
  31. 31. 3. CIからCDへの展開(4/7) そして短い時間間隔で何度もリリース する行為もとても重要です。 開発の終盤に1回きりでリリースする 場合、リリースパッケージには何を含 めるのかを膨大な成果物からかき集め てきたり、実行に必要な設定を調査し たりと、リリース準備にも手間が掛か ります。 開発初期からリリース準備を積み重ね る事で、テスターの方にも実行環境を いち早く提供できるようになります。 CI to CD、ソフトウェア開発の継続的アプローチ
  32. 32. 3. CIからCDへの展開(5/7) 継続的デリバリーは、近年のクラウド サービスでのデプロイだけではなく、 TFServerやVagrant等のように仮想環 境と組み合わせて実行したり、デスク トップアプリならばインストーラーを 作成する事で実行環境を提供する事が 出来ます。 CI to CD、ソフトウェア開発の継続的アプローチ
  33. 33. 3. CIからCDへの展開(6/7) 継続的デリバリーで重要な事は、ツー ルを使ったりする事よりも、開発して いるアプリケーションに合わせて、実 行環境を構築する手順(=デプロイメ ントパイプライン)を作成し、それを 自働化する事です。 CI to CD、ソフトウェア開発の継続的アプローチ
  34. 34. 3. CIからCDへの展開(7/7) CIやCDの環境を構築するのは手間が 掛かりますが、CI&CDを実施する事 による恩恵はとても大きいです。 昨年伊勢神宮の式年遷宮がありました が、CI&CD環境を1度構築してお終 いでは技術継承が行われません。 定期的にデプロイメントパイプライン を見直し、CI&CD環境を再構築する 事も重要です CI to CD、ソフトウェア開発の継続的アプローチ
  35. 35. 4.まとめ CI to CD、ソフトウェア開発の継続的アプローチ
  36. 36. 4.まとめ 準備の時間がなくてツールを使ったデ モは今回ありません。 ソフトウェア開発は、工場のライン生 産とは異なり、知識創造作業です。 CIやCDの仕組みは、自働化により煩 わしい繰り返し作業から開発者を解放 し、その分を知識創造作業に集中させ る事が出来ます。 アプリケーション毎のデプロイメント パイプラインを構築し自働化しましょ う。 CI to CD、ソフトウェア開発の継続的アプローチ
  37. 37. 参考書籍 継続的インテグレーション入門 継続的デリバリー チーム開発実践入門 CI to CD、ソフトウェア開発の継続的アプローチ
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×