nikkie-ftnextの日記

イベントレポートや読書メモを発信

LPIC Lv.1学習メモ | パッケージ管理(dpkgとAPT)

はじめに

LPICの勉強を再開しました、nikkieです。
パッケージ管理が4種類あってぐちゃぐちゃなので、整理してみました。
今回はDebianパッケージを管理するdpkgとAPTです。
アクションだけでなく、引数のタイプ(パッケージファイル名なのか、パッケージ名なのか)も合わせて覚えるのがいいのではないかと考えています。

注意:動作については未確認です。今後環境構築し、確認予定です。

dpkg

Linux - Debianパッケージ管理の使用

一般にはAPTが使われるそうなので、資格をとるためにしか使いみちのない知識のような気がします。

引数 用途 例文
なし インストール済み全バッケージ一覧表示
dpkg -l
(注:アクションは小文字のL)
dpkg --list
 
パッケージのインストール状態を検査
dpkg -C
dpkg --audit
パッケージファイル名 インストール
dpkg -i tree_1.6.0-1_i386.deb
(注:wgetでダウンロードしてある前提)
dpkg --install tree_1.6.0-1_i386.deb
 
インストール
(インストールしようとしているものより新しいバージョンがインストール済みなら、インストールを行わない)
dpkg -Gi tree_1.6.0-1_i386.deb
 
パッケージファイルの情報を表示
dpkg -I tree_1.6.0-1_i386.deb
(注:アクションは大文字のi)
 
パッケージに含まれるファイルの一覧を表示
dpkg -c tree_1.6.0-1_i386.deb
パッケージ名 パッケージからインストールされたファイルを一覧表示
dpkg -L tree
dpkg --listfiles tree
 
指定したパッケージの詳細情報を表示
dpkg -s tree
dpkg --status tree
 
パッケージ削除
(設定ファイル残す)
dpkg -r tree
dpkg --remove tree
 
パッケージ削除
(設定ファイル削除)
dpkg -P tree
dpkg --purge tree
ファイル ファイルがどのパッケージからインストールされたか表示
dpkg -S /usr/bin/tree
dpkg --search /usr/bin/tree

 

APT

Linux - Debianパッケージ管理の使用(APTツールの紹介)

apt-get
引数
用途
例文
なし 最新のパッケージ情報を取得する
apt-get update
(/etc/apt/sources.listに設定したサイトに接続)
 
全パッケージを最新版にアップグレード(ただし、他のパッケージを削除しないものに限る)
apt-get upgrade
 
ディストリビューションを最新版にアップグレード
apt-get dist-upgrade
パッケージ名 パッケージのインストール
apt-get install apache2
 
パッケージのアンインストール
apt-get remove apache2

 

apt-cache

apt-cacheは対象のパッケージがインストールされていなくても動作する。

引数
用途
例文
パッケージ名 パッケージについての情報表示
apt-cache show apache2
 
パッケージの依存関係を表示
apt-cache depends apache2
キーワード キーワードを含むパッケージの検索
apt-cache search apache2

 

aptitudeについては優先度を下げています。
今回まとまったサイトを見つけられたので、今後の勉強が捗りそうです。

追記(3/28):以下の教材で学習しています。(ネット上のリソースは必要に応じて使っています)

 

イベントレポート | MANABIYA DAY1 1限「成長を止めない機械学習のやり方」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYA 1日目の「成長を止めない機械学習のやり方」(クックパッド 染谷さん)の聴講メモをまとめました。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

2016年7月の発足以来、クックパッドの研究開発部は機械学習を用いた様々なプロジェクトに取り組んで来ました。
本セッションではまず機械学習を取り入れた組織における価値創造を阻害あるいは鈍化させる幾つかの要因を指摘し、
それらの要因について開発基盤やエンジニアリング、チーム構成様々な角度から考察します。
またさらに、そのような課題に対するクックパッドの取り組みを紹介します。

案件で機械学習をやっているので聞きに行きました。(MANABIYAを通してAI枠の講義に積極的に行っています)
2月のPyDataで登壇された方だったので、その時のスライドを確認してから講義に臨みました。

PyData.Tokyo Meetup #17 - データ分析の現場 - connpass 

 
 

成長を止めない機械学習のやり方

speakerdeck.com

第3次AIブームの後の幻滅期を乗り越えていくために:『成長を止めない機械学習のやり方』
クックパッドの知見を中心に『成長を止めない機械学習のやり方』を考えていく

 

組織編

問題:サービス開発とモデルの開発/デプロイのスピード感にギャップがある
モデル開発/デプロイの効率化 
  • デプロイ:API化、そのための共通基盤整備
    →詳しくは前掲のPyDataスライド

 

個人編

  • 個人にとって、目標/目的の具体化が重要
  • 実務でやるのが一番の近道
    現場でやるべきことは多く、これをやれとは言えない状態。
    1冊1冊の本で学べないことが多い
  • データ分析系のコンペもよい
    与えられた問題が明確というのが現場と違うが、
    限られたデータと時間でスコアを上げていくのが実務に近い
 

感想

個人にとっての成長を止めない機械学習のやり方は、やはりkaggleに行き着くんですね。
これはやるしかないな、kaggle!(kernelを覗いて勉強する予定)
幻滅期を見越した上で、地に足をつけて価値を生み出し続けるという姿勢を見習い、
一歩一歩機械学習を進めていきたいと思います。
 
自社サービスでの機械学習の利用については、こんな世界なのかと聞いていました。
私の機械学習の取り組みの中では色々と失敗がありましたが、
クックパッドさんも機械学習でやりたいことと現場の成熟度にギャップがあり、
多少の失敗をしつつも進めているのかもという印象です。
(どこも機械学習で苦い経験をしているんじゃないかと思います)

お話しいただいた染谷さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。

イベントレポート | MANABIYA DAY2 1限「技術者としての成長のための技術トレンド」 #MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYA 2日目の及川 卓也さん基調講演
「技術者としての成長のための技術トレンド」の聴講メモを公開します。

 

講演の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

ITは日進月歩に進化しており、1個人ですべての領域で最新技術を把握し続けることは難しくなっています。
技術者として、スキルを深め、領域を広げるとしても、そこには戦略が必要です。
たとえば、機械学習、IoT、XR (VR, AR, MR)、ブロックチェーンのような技術のどこまでを基礎教養的に知る必要があるのでしょうか。
また、どの領域の専門性を高めていく必要があるのでしょうか。
そこに万人に適用できる1つの解があるわけではありません。
個人個人が自分の目指す技術者像を考え、さまざまな試行をし続けることが重要です。
今回、私からはエンジニア、エンジニアリングマネージャー、プロダクトマネージャー、技術アドバイザーとしての働いた経験を元に、技術トレンドを技術者としての成長に活かす方法をお話します。

2日目参加の決め手になったのはこの基調講演でした。
機械学習、IoT、XR、ブロックチェーンといった現在の技術トレンドを十分に把握できているとはいえない中での手がかりになりそうなので期待していました。
(私が理解できているのは機械学習の一端にすぎません。ディープラーニングまでは立ち入れていません)
講演後の私の感想は以下です。ここに肉付けしていきます。

 

技術者としての成長のための技術トレンド

www.slideshare.net

以下のトピックからなります。

  • 知識を技能に発展させる
  • 異なるドメインを増やす
  • 自分が興味をもてる技術トレンドを追う
重要度順として、逆順で振り返ります。
 

いちばん大事なのは、自分が興味をもてるかどうか

機械学習に学ぶ
  •  強化学習(スライド59)

    →人間には動機が必要

    ・外発的動機づけ 給料上がる

    ・内発的動機づけ 自らの興味で学びたい

  • 転移学習:特定ドメインで学習したモデルを別ドメイン

    類似したドメインの技術は習得しやすい(スライド62)

トレンドと動機づけで考える、技術を習得するか否かのフロー:スライド69
  • 仕事で必要ならば習得
  • 仕事で必要ないがトレンドとして出てきた
     異なるドメインで興味持てる→習得
     異なるドメインだが心躍らない→やらない
仕事で必要でないことを仕事で必要なようにしてしまう手もある(スライド72)
これは英語を学ばなくてもいい状況がリスキーと考え、学ばざるをえない環境に身を置くということ(スライド45)
興味を持った技術に注目する:スライド74
  • 破壊的イノベーションは登場当時はおもちゃと呼ばれる(スライド75)
  • トレンドを追っていくときは、おもちゃを見つけた子供のような気持ちを大事に(スライド79)

 

成長戦略:異なるドメインを増やす

T型人間 基礎教養(広く浅く)+1つの専門性
T型人間の進化:スライド51
  • 専門外にも深める領域を作る

    ・Tの横棒(基礎教養)を厚くする=フルスタック

    ・π 専門性(軸)を増やす

  • 専門を深める(Tの縦棒を伸ばす)

  • 専門を広くする(Tの縦棒を太くする)

Tの縦棒(専門性)について
専門性の2軸目が1軸目と近いと価値が出ない→別方向のベクトルとする
n次元幾何学空間における容積を最大化する(スライド52)

藤原さん「レアカード化する」 希少化 =差別化
1万時間で100人のうちの一人
 仕事後の3時間で10年かかる (仕事中なら10年かからない)
1/100を3回掛け合わせる
このときベクトルが異なると価値が高まる(スライド53)

習得済みドメインの技術と同じドメインの技術は習得しやすい
→自分の汎用性が高まる:2つの異なるドメインを習得していれば、それぞれの関連技術を習得し、仕事に持ち込める(スライド55)

 

技能習得のためには、経験を含めた学習ループを回し、知識を技能へと発展させる必要がある

エンジニアとしての成長=知識を身に着けて、技能に発展させる(=使いこなす)(スライド31)

知識にはグラデーションがある:知っている、使える、使いこなせる(スライド32)

知識だけではプロとしては使えないレベル。プロは使える、使いこなせる

学習ループ:学習→知識→経験→学習→(スライド36)
知識を身につけるには学習
いくら勉強しても技能には発展しない
技能にするには経験や実践が必要
 学んだことを使い続けなければ技能に発展していかない
 (プログラミングスクールは使い続けるが足りない)
 →座学と実践がペア
経験そのものには価値はない。経験により何を学ぶか→スキルになる
経験3年が大事でなく、その内訳(スキル)が大事
 経験=ある環境において活かされるかどうか
ループは学習から始める:知らないものについて実践しようとは思わない→機会損失
 
自分史と技術トレンド振り返り:スライド29
  • 第2次AIブームは仕事として学べなかったトレンド
    乗れなくてもそのトレンドを体感していることが大事とのこと
  • インターネット×Windowsのかけ算で強みを出せた

 

感想

興味を持った技術トレンドを追うというのはシンプルな上に説得力もあります。
全て追う必要はなく、興味のある領域だけでよい、
追っていないトレンドも体験していることが後で効いてくるというメッセージに
全て追い切れないという不安を和らげていただきました。

1月から取り組んだ機械学習に興味を持てたので、kaggleで勉強を続けます。
仕事上の案件は4月から変わり、機械学習とは無関係になるかもしれませんが、
自分の心が踊る機械学習分野を追っていきます。

大学時代バリバリプログラミングをやってきたわけではない自分は
業務経験2年(実装に携わったのは半分程度)ではまだT字は形成できていないと実感しています。
心躍る分野を追って、短くても細くてもいいからT字の縦棒をまずは作りたいと思います。

私を含め、今の会社の新人エンジニアは軸が形成できていないように思えます。
案件を定期的に変えることで、若いうちに色々と経験させるという狙いなのかもしれませんが、
専門性なしに異なる技術トレンドの案件を渡り歩くループの中では、
T字の縦棒が形成できないんじゃないかと不安です。
(たどり着くのはTではなく、でこぼこしたー(いち)なのでは)
心躍る領域で軸を形成したいと強く思うのであれば、転職も有力な選択肢と認識しました。

及川さん、ならびに運営スタッフの皆さま、
貴重なお話とそれを聞く機会をどうもありがとうございました。

イベントレポート | 【サポーターズCoLab勉強会】Python勉強会(LINE Botハンズオン)#spzcolab

はじめに

だんないよ、nikkieです。
サポーターズさんで開かれた「Python勉強会」のレポートです。

 

勉強会の概要

【サポーターズCoLab勉強会】Python勉強会 - サポーターズCoLab より抜粋します。

今回の勉強会では、ハンズオン形式でPythonでLINEボットを作ります。

こんな話をします

実際にPythonでLINEボットを作ったアプリの話や、LINEの開発者登録、

アプリ登録、Python用のSDKの簡単な使い方について話します。

PythonでのLINE Botハンズオンということで興味をもちました。
 

ハンズオンの流れ

  1. Python3系インストール
  2. ngrokダウンロード
  3. LINEのチャンネル設定
  4. サンプルコードを動作させて疎通確認

 

LINEのチャンネル設定

ハンズオン中はPCブラウザからLINEにログインできず、チャンネル設定が進められませんでした。
(LINEからパスワードを変更し、それを入力してもログインできなかった)
同様の症状の方から、スマホのLINEを最新にしたらPCからログインできたという情報もありました。
帰宅後、パスワード管理ツールからパスワードをコピーしたら私もログインできました。
ハンズオン中はちょうどパスワード管理ツールが壊れていたので、目コピしたパスワードの入力間違えだったようです。(釈然としませんが。。)

Messaging APIのチャンネル作成後、以下の設定が必要でした。
(公開資料60スライド目から。今後機能追加するときの備忘録として記載します。)

メッセージ送受信設定:

  • アクセストークンを発行する
  • Webhook送信を「利用する」に変更
  • Webhook URLにはngrokのhttpsのアドレスを設定する。
    これはngrokを起動するたびに変わるようなので、都度変更が必要なようです。

LINE@の機能の利用:

  • 自動応答メッセージは「利用しない」に設定する

 

サンプルコードを動作させて疎通確認

  • pip install line-bot-sdk Flask
    ※Python3系の仮想環境(後述)を作って動作させています。
    Flaskは明示的にインストールしないといけないらしい
    (line-bot-sdkのインストールの中で自動的に入るわけではないらしい)

    GitHub - line/line-bot-sdk-python: SDK of the LINE Messaging API for Python.

  • 以下のサンプルコードをコピーし、「sample_app.py」として保存

    StudyContents/sample_app.py at master · PythonStudyGroupJP/StudyContents · GitHub

    (↑ソースコードパス変更によるリンク切れを発見したので、修正。2018/06/10)
    【フォルダ配置参考】
    python-line-bot/ ←ハンズオン用のフォルダ
     ├ env/ ←Python3系仮想環境(後述)
     └ sample_app.py
  • サンプルコードを実行:python sample_app.py
    Flaskはポート5000をデフォルトにするようなので、ngrokもポート5000指定で立ち上げる必要あり(スライド94、98、101)。
    公開資料をもとに進めた時、ここにハマりました
    (ngrokを立ち上げるたびにLINEチャンネルのWebhook URLの設定が必要になります)
  • 公開資料のようにsample_app.pyを修正したところ、ngrokとサンプルコードの間で疎通確認に成功しました!
    (ngrokとサンプルコードが同じフォルダになくても疎通確認まではできるようです)

f:id:nikkie-ftnext:20180326180257p:plain

 

感想

ひとまず疎通確認までできたのでブログ化しました。
今後は勉強会の他のソースコードを見てBotと会話してみたり、機能追加をしてみる予定です。
nkjmさんのQiita記事が機能追加の参考になりそうですね。

LINEのBot開発 超入門(前編) ゼロから応答ができるまで - Qiita

エンジニアとしてPythonを軸にしたいので、Pythonで今後LINE Botが開発できそうなことが大変嬉しいです。
画像や位置情報が取れるので、他のAPIマッシュアップ試してみます。

講師のFumiさん、準備〜ハンズオン〜資料公開とお疲れさまでした。
公開いただいた資料に沿ってひとまず疎通確認までできました。
勉強会の開催と資料の公開をしてくださり、本当にありがとうございます!
微力ながら次回はメンターや運営の手伝いなどお手伝いしたいと思いますので、お気軽にお声がけください。

 

終わりに:仮想環境の話

私がPythonを知ったのは、PyNyumonというイベントです。
そこで仮想環境(venv)を知り、以降は仮想環境を使うようにしています。

pynyumon/1_python_basics.md at master · pynyumon/pynyumon · GitHub

最近やっているDjangoチュートリアルでもvenvが使われていました。

Djangoをインストールしよう · workshop_tutorialJP
Pythonを始めようという方はvenvまで知っておくといいのではないかと思います。

私個人は最近、機械学習の勉強でフォルダを作るたびに
必要なパッケージ(numpy、pandas、jupyterなど)を仮想環境にpip installするのが手間に感じています。
それを解決するにはanacondaなのかなと考えはじめています。
(venvとどう使い分けるかというところから調査が必要な状態です)

 

今回のハンズオン出席者の皆さま、お疲れさまでした。
公開資料で皆さんもLINE Botが動かせることを願っています。

 

LT報告 | MANABIYA LT大会 AI枠 #MANABIYA

はじめに

だんないよ、nikkieです。
機械学習歴3ヶ月の私ですが、機械学習を始める方への提案をまとめ
3/23のMANABIYAでLTしてきました。

 

勉強会の概要

manabiya.tech

会場がもと学校ということで学び舎感に満ちていました。
AI枠のトークセッションでは深層学習をバリバリやっている方が登壇されていたので、
まだ深層学習まで進めてない身でLTしていいのか?とだいぶ憂鬱でした笑

LT「機械学習をはじめたいあなたへ」

gitpitch.com

概要

機械学習を始めたい」という気持ちの裏には機械学習で実現したいことがあると考えます。
私が趣味で開発するときは、実現したいことの達成を最優先にしています。(=やりたいことファースト)
そんなスタンスの私から、機械学習で実現したいことを最優先で達成するとして
機械学習を始めるならこうしてみてはいかがでしょうと提案してみました。

やりたいこと:「画像になにが写っているか知りたい」

→提案:機械学習でモデルを作らなくてもいい。Web APIを使えば画像解析ができる

これは実体験からの提案です。Web APIを叩くのは本当に簡単でした。

Python入門者でもComputer Vision APIを叩くのは怖くない - Qiita

Web APIの裏にはベンダ(上の例ではMicrosoft)が学習させたAIがあります。
APIを叩くことで学習部分を丸々ベンダに任せて機械学習のモデルを使っているわけです。

この種のAPIはたくさんあり、私もその一部しか把握できていません。
例えば、MANABIYAでハンズオンされた来栖川電算さんも
docomo developer supportから画像認識や動作推定のAPIを提供しているそうです。
会社紹介スライド(84, 91スライド目):

MANABIYA Machine Learning Hands-On

 

やりたいこと:「手元のデータで機械学習をやりたい」 

→提案:

  1. 自分にあった機械学習のツールを使おう
    Pythonを学んでも学ばなくても、数学の知識がなくても機械学習は可能
  2. 機械学習の考え方を勉強したら実務で役立った
  • カテゴリ値の扱い:one-hotエンコーディング
  • トレーニングデータとテストデータの分け方:ホールドアウト法/k分割交差検証

 

やりたいこと:「機械学習を勉強したい」

※私はやりたいことなしに勉強することはあまりやりません。
機械学習を勉強したいという方も一定数いらっしゃるようなので、
自分が今後勉強していきたいところを紹介しました。

→提案:探索的データ解析のやり方をkaggleのkernelから勉強しよう

 

他の方のLT

  • React Nativeは簡単なアプリならiOSAndroidでコードを共通化できるが、
    複雑なことをやろうとすると、React NativeとiOSAndroidの3つをいっぺんに学ぶ機会になるらしい
  • XR系のデバイスの被る問題、女性は髪が崩れるので嫌という意見は聞いたことあるけど、
    一人がかぶってほかの人は傍観者っていうのも言われてみれば問題だなー。
    みんなで同じものを見るって経験がしにくいデバイスということか。
  • VRエンジニアは数が足りてないので、違う分野からでも勉強すれば転身できるとのこと。人工知能エンジニアもきっと同じ

 

感想 

LTする前は引け目を感じてましたが、
準備からLTまででこの3ヶ月の総括ができたので、やっぱりLTしてよかったなと思います。
LTの機会をいただき、ありがとうございました!
当ブログは引き続きMANABIYA関連でアウトプットしていきます。

イベントレポート | 【サポーターズCoLab勉強会】初めてのGoogle Datastudio #spzcolab

はじめに

だんないよ、nikkieです。
サポーターズさんのGoogle Datastudioの勉強会に行ってきました。
PowerBIを使った経験があるのですが、Google Datastudioも同じことができるのか気になっていました。

 

勉強会の概要

【サポーターズCoLab勉強会】初めてのGoogle Datastudio - サポーターズCoLab

イベント概要

Google Datastudioとは、大量のデータを美しく可視化する
Google Cloud Platformから提供されているデータビジュアライゼーションツールです。
多様なデータソースにアクセスし、魅了的なグラフやチャートを簡単に作成できます。
可視化のためにコードやクエリは不要。共同編集もでき、権限も簡単に管理です。
あなたの管理するエクセルデータ、溜まり続けたログなど、
Datastudioを活用することで、新たな活用の緒を見つけることが出来るかもしれません。

Google Datastudioは触ったことがなかったので、以下の記事を確認してから参加しました。

Google Data Studio を使ってみよう!メリットや超初心者向け使い方・Analyticsとの連携方法をご紹介します - ウェブ企画ラボ

勉強会のデモで使ったデータは以下からダウンロードできるようです。

https://public.tableau.com/s/resources

タイタニック号の乗客名簿
マグニチュード 6 以上の地震

 

勉強会でわかったこと

  • Google Datastudioはデータの可視化に特化したツール
  • ブラウザ上でデータ可視化
  • カスタムフィールドやMySQLのビューを組み合わせて使う

データの可視化に特化

BIツールの4機能

Datastudioはレポーティング機能とダッシュボード機能を提供。
→データを可視化して共有しやすくすることが得意

ブラウザ上でデータ可視化

  • レポート:可視化されたものを見るもの
  • データソース:可視化されたものがどこにあるかを示す(例:Cloud SQLに接続)

データソースを作成した後、レポートに追加する。

フィルターを使えば、データソース(=テーブル)を条件で絞って動的に表示できる。
MySQLでselect whereするイメージ)

カスタムフィールドやMySQLのビューを組み合わせて使う

  • カスタムフィールド使用例:
    Datastudio専用の構文を使い、男性なら1、そうでなければ0を入れたフィールドを追加
    →フィールドの合計をとると、乗客のうちの男性の人数を数えられる。
    (最近できるようになったらしい)
  • MySQLのビュー
    データソースとして追加し、レポートに添付する。
    ※データソース同士のJOINはDatastudio上ではできないようなので、JOINしたビューを用意する必要がある
    表示させたいものをデータソースにする必要がある

 

感想

Datastudioは探索的データ解析(*)のツールとして使えるのかが気になっていましたが、
現時点では厳しそうという印象です。
(*)機械学習でデータの傾向を把握すること。BIツールの4機能ではデータマイニングにあたりそう

PowerBIでは、男性/女性の人数の円グラフで男性の側をクリックすると、
レポートの他のグラフも男性についての情報に動的に変わります。
これはDatastudioでもできるだろうと期待していたのですが、現時点ではできないようです。
Datastudioを使ってデータの傾向を把握するというよりは
傾向を把握済みで何を可視化するべきかわかっているデータの可視化に使うツールのようです。

現時点で探索的データ解析のツールとして最有力なのがPowerBIです。
今後はOSSのRedashを触ったり、Jupyterでの可視化を練習したりして、
これだという探索的データ解析ツールを見つけたいと思います。

今回の勉強会関係者と出席者の皆さま、貴重なお話とそれを聞く機会をありがとうございました。

イベントレポート | 【サポーターズCoLab勉強会】Circle CI 入門 #サポーターズ

はじめに

だんないよ、nikkieです。
手動テスト中心の社風に辟易しているので、
CI入れたら業務楽になるのかなと「Circle CI 入門」に話聞きにいってきました。

 

勉強会の概要

イベント概要

最近CI環境をとりいれている企業も増えてきていると思います。

GitHub / BitBucketのPUSHに反応して、色々出来るやつです。

TravisCI,Jenkins,CircleCI・・・などたくさんあるCIサービスの中から今回は

CircleCIを重点的にお話します。

こんな方にオススメ

  • CIをやってみたいけど、やったことない方

  • テストコードやったことないけどやってみたい方

  • そもそもCIって何おいしいのって方

 

資料

スライド

speakerdeck.com

以下、勉強会中のメモをもとに書いていきます。
 

CIとは?

XP

 

Circle CIとは

  • CIを行う環境を提供するSaaS
  • できること:GitHubやBitbucketとの連携、自動テスト、通知、自動デプロイ
  • 料金は月1500分まで無料。(無料枠は1コンテナのみなので並列に実行できない)

 

サンプルコード解説

  • CircleCI設定ファイル:.circleci/config.yml
  • jobの中で行うコマンドを書いていく
    例:ソースコード取得→Dockerコンテナ立てる
    →DB用意する→テスト実行→結果を表示

 

他のCIツール

  • Jenkins CIのデファクトスタンダードと言えそう。
    インストールして使う。最近はSaaS版も出た
  • TravisCI
    プライペートリポジトリ版が有料(割高)
    OSSで使われていることが多い(設定ファイル参考にできる)

 

CI構築するときに考えること

  • CIツールはなんでもできるので、どのくらいで始めるかが重要
  • 目的・どういうことをやるかを考える(lintにとどめるのか、単体テストまでやるのか)
  • バージョン管理システムによってどのCIツールを使うかが決まってくる
  • CIを動かす粒度を考える
  • CIを設定するコストメリットを考える
    テストが書かれていないコードにCIを導入するのは大変
    一番簡単なのはlinterを入れること。
    次のステップが単体テストのコードを書いて導入。テストを書いたことがないならテストを書くのに慣れることを目指す。

 

CircleCIまとめ

  • Dockerでやるから環境依存解決楽
  • SaaSだからインフラ維持コスト少ない(CircleCIの裏はAWSらしい)
  • CIを回すと便利だが、導入は少しずつ理解を得ていく

 

感想

PythonではDjangoとFlaskのサンプルが公式ドキュメントに用意されているので
触ってどんなものなのかを体験しないといけないですね。(分かった気で終わらせてはいけない)

Language Guide: Python - CircleCI

CircleCIにはDockerの知識がどの程度いるのか気になります。(つかむためにも触らないと)
講師の木村さんは2017年末にDocker勉強会の講師もされていたので、
Docker使えるとエンジニアとしてできることが違うんだろうなと感じさせます。
私、Dockerが使えるエンジニアになりたい。

CIのC(継続的)はわかるけどI(インテグレーション)ってなんだってところが実はスタートでした。
予習につまみ食いした『チーム開発実践入門』でおぼろげながらつかめました。
(読まないでいったらちんぷんかんぷんだったかも。。)

https://www.amazon.co.jp/dp/4774164283

 

講師の木村さん、そして運営・出席者の皆さま、
貴重なお話とそれを聞く機会をありがとうございました。