Sawachin::TECH::CAMP
澤田が始める新感覚「プログラミング講座」
名前が怒られそうtsawada.icon
このプログラミング講座で大事にしていること
「コードが書ける」ではなく「システムが作れる」
「仕事で作りそうだけど、今いらないもの」ではなく「作った人を知らないけど、確かに私の役に立つもの」
「フレームワークを使ってきれいに作る」ではなく「綺麗で、便利な仕組みは必要になったら使う」
つまり、実戦で使えるプログラミング力をつけてもらうのです
このTECH::CAMPを受けるにあたっての注意事項
Sawachin::TECH::CAMP 受講生に必要なもの
Sawachin::TECH::CAMP で講師が手伝うこと
Sawachin::TECH::CAMPの課題進め方
https://gyazo.com/066ded6b2a4ac062bded350be3298fed
https://gyazo.com/099b25ab0715b5e6e3e7dc0e51cb01bf
https://gyazo.com/8cfea0e82a8db8b38cc4f6f19278d54b
このプログラミング学習で、作ってもらおうと思っているものは以下
https://gyazo.com/8f88db5d7a866b7fe5039b8fae21d84e
Level1「簡単なプログラムを通してweb site, URLの仕組みを学ぶ」
1. UserCSSでScrapboxをBlogに大変身
2. 有益なBookmarklet(スクマ)作り
3. 有益なBookmarklet(今日のPage)作り
4. UserScriptで日記作り
URLの仕組み
ここでいくつか講座と「Macの設定」をする
「エンジニア」を取り巻く世界を知る
「PC(Macとか)」「サーバー」「ネットワーク」の関係性
歴史から機能を知る
開発の歴史。エンジニア分業の歴史。そしてコンテナ,Git, CD/CI, Serverless。
研究、データ処理とPython。そしてJupyter Notebook
ITの巨人の肩に乗る
「設定ファイル」「ソースコード(指示書)」なくしてPCは動かない
オープンソース。Github
API, webhook
DBとIFは分ける世界
IFとしてのslack, Alfred
Qiita, Stackoverflow
実は○○もGithubに
Macを開発用にキリキリチューニング
dotfilesのfork。ダウンロード。適用
Terminalを快適に使う
Mac defaults
使うAppをinstall
githubの準備
Level2「業務Hack。ちょっとしたプログラミングで業務効率があがる感覚を得る」
ここまで出来れば「個人業務効率化」力はほぼMax
5. Pythonでweb siteの情報を全部持ってくる
https://www.youtube.com/watch?v=HyU3XL2F9GE
https://www.youtube.com/watch?v=LgZ8Li97yoM
https://www.youtube.com/watch?v=0-fZ47QudYo
https://www.youtube.com/watch?v=-5v7CuXm7Ns
https://www.youtube.com/watch?v=nfOeBBotc2k
https://www.youtube.com/watch?v=tSdQeNOWUl4
Python
Jupyter Notebook
Docker
6. PythonでFileの一括rename
Git
ここで、「真に価値を生む開発の仕方」を学ぶ
チーム開発のメリットと問題
ドキュメントか、ソースコードか?そしてアジャイル ソフトウェア宣言へ
スクラムとカンバン。
エクストリームプログラミングとTDD・YAGNI
共有するための創意工夫
モブプログラミング
リーダブルコードとユビキタス言語
フルスタックエンジニア
複雑性を回避する
マイクロサービスアーキテクチャ
疎結合とAPI
内部品質を担保する
レビューとCD/CI
振り返りと朝会
SREとSLA
悪意のあるアクセスとガード
DOS攻撃
Level3「上手く作ればお金になる。APIを学ぶ」
ここが出来ると「Level2までで作ったシステムを他の人にも使ってもらう」ことができます
7. GASでslack botを作成
API
OAUTH
APIを使ってみることで「ITで解決できるもの」をよりひろく知る
「自社に合わせたカスタマイズをしやすいサービス」と「しにくいサービス」の判断がつきやすく。
社内ツールの選定力が格段に上がる
8. 半自動応答Formの作成
GoogleFormにて投稿されると、「slackに通知」されて、「slack上で選んだ対応」がされる仕組み作り
これは、汎用性がとても高い仕組み&技術sawachin.icon
無料ツールの組み合わせで実装できる。
出来上がった仕組み・UIは「普段触っている商用サービス」と遜色ない
実利用例
案件のインバウンドフォーム
社内問い合わせ、部署間依頼の半自動化
9. Lambda+Dynamo DBでslack botを作成
8で作った内容を「AWS」で作り直してみる
Google系の無料サービスで適当に作ったものと、「1億人とかに使われる商用サービス」の作り方って大体一緒やん。と思っていただく
「今まで自分のやってきたこと」と「AWSでの設定」を紐づけていくことで、どこかの会社にエンジニアとして入った時に「資料がなくても、ソースコードやAWSの中を見せてもらえれば一つずつ自分で理解できる」を目指す
「同じこと」を違うやり方で実現することで、「技術選定」の感覚を得る。かけられる費用や、実は求められている非機能要件を考慮して、最適なやり方を選ぶ
Level4「商業levelの仕組みを一人で作ってみる」
ここが出来ると「ネットにいる不特定多数に提供しても問題ない。お金を払ってもらえる」システムが作れます
お題が書いてありますが、「自分でお題を考える」でも大丈夫ですsawachin.icon
ただ、お題はsawachin.iconがユーザーのものがおすすめです。
sawachin.iconがユーザーじゃないと「このお題でいいんだっけ…こんなシステムでいいんだっけ‥」が常に不確定で進むので
ヘルシオ特化の「自動献立ツール」
これはtsawada.iconが欲しいと思ったもの
web serviceを一通り学べる
多分、お金取れる
self 複式簿記
DB設計
ワークフロー可視化・整理
これが高レベルできると、CTOレベル
「数年〜10年くらいは大規模改修がいらないシステム」が作れたら、最強
seleniumで高Levelなslack bot作成
selenium(UIテストツール)
ここで「大規模組織における継続的なサービス改善」について学ぶ
Level∞「規模対応・不正対応から学ぶ非機能要件」
セキュリティエンジニア、インフラエンジニアの守備範囲
IPOできるlevelの会社であれば必ず居る。
Level4までで作成したProgrammを「数十万人が一気に使ったら?」「ハッキングされたら?」と考える
学習内容
セキュリティ
OAuth:2.0
分散処理
serverをなぜweb, app, DBと分けるのか
microservices
システムモニタリング
チーム開発
git
アジャイル開発
システム仕様書(要件定義書、WBS、要求整理書 etc…)