Table of Contents
継続的デリバリーとは
ソフトウェアを安定的に開発運用するための方法です.
大まかに,以下のような流れからなります.
- チケットの要求に従い,コードなどの構成要素を更新する
- 更新が検知されると,自動テストが走る
- テストが成功すると,ソフトウェアが組み立てられる
- ソフトウェアが公開用サーバにアップロードされる
- 人間が「承認」ボタンを押すことで,ユーザーが利用可能になる
要は, 仕様のチェックや部品の組み立て,ファイルのアップロードなどの煩雑な手続きをコンピュータに任せることで, 人間が頭脳労働に集中するための手法です.
ソフトウェア開発の用語を,我々研究者の概念に置き換えると,以下のようになります.
- ソフトウェア: 報告書,プレゼンテーションファイル
- ユーザー: 業務委託元,国民
- チケット: 委託元からの課題,仕様変更,発覚したミス,改善案
- データ: 生物データ,物理データ,写真,手書きの図,文献リスト
- コード: 計算の手順,図表の作成手順,報告書の文章,図表の貼り付け位置
- テスト: データの仕様チェック,計算結果のチェック,誤字脱字チェック
- リリース: 報告書の公開
このセッションでは,質疑応答の時間を十分に確保し, 初級者から上級者まで,参加者全員が継続的デリバリーの概念を確実に理解することを目標とします.
キーワード
- バージョン管理
- チケット管理
- documentation as code
- infrasturucture as code
CUI に親しむ
マウスを使わずにコンピュータを操作する利点を理解し,実際にやってみましょう
- CUI と GUI
- プレーンテキストとバイナリファイル
- UNIX コマンド
- ファイルの本質と拡張子
プレーンテキストのちから
業務環境の基礎をプレーンテキストに置くことで,強力なコマンドの恩恵を受けられるようになります
- diff
- grep
- コラム: エンコードと改行コード
- 正規表現
- コラム: DRY 原則
コンテナ技術
環境を正準化するメリットを学び,実際にDockerを使ってみましょう
- Docker のインストール
- コンテナ内での作業
文書: 人間のためのテキスト
プレーンテキスト向けの執筆ツールに触れ,その利点と欠点について意見を交換しましょう
- エディタ
- アウトライナー
- pandoc
- LaTeX
コード: コンピュータと人間のためのテキスト
プログラミングが業務に占める割合が増えると,どのような問題が生じ得るかについて議論しましょう. 続いて,それらの問題を解決するためのプログラミングの基礎的な方法論を学びましょう. プログラミング言語には,R言語を使用します.
- スタイル
- 命名
- コメントは必要か
- インデント
- リンター
- データ構造
- ディレクトリ構造
- データと2次データ
- 関数化と高階関数
- コラム: YAGNI
- R言語の問題点
開発
ソフトウェア開発の現場で用いられている手法について概観し,我々が学ぶべき本質について議論しましょう.
- テスト駆動開発
- バージョン管理
- チケット管理システム
- 継続的インテグレーション
- コンテナ
- 継続的デプロイ
- アジャイル開発とカスケード開発
業務と研究への応用
我々が業務や研究の現場で課題解決に取り組むとき,満たしているべき要件は何でしょうか. それらを具体的に解決する方法はあるでしょうか.
業務
- Issueベースの課題解決
- 責任を負うのは誰か
コミュニケーション
円滑なコミュニケーションはプロジェクト成功の要です. 飛び交うコミュニケーションを構成している要素について考え,適切なツールについて議論しましょう.
- メールの問題点
- 開発者現場で使われるツールとその本質
研究
- バージョン管理
- データベースのブラッシュアップ
- プログラム化とパッケージ化
- DRY原則に基づく文書作成