Slide 1

Slide 1 text

Webサービス開発講座 第1回 この資料はenPiT2023向けのものです。 第3者へのリンクの配布等は 作者(@notch_man8600)を提⽰した上でお願いします (ついでに感想もいただけると私が泣いて喜びます)

Slide 2

Slide 2 text

2 DISCLAIMER ● この講座は⼤学講義レベルのプログラミング履修者が対象です ● 即座にサービスを作れる実践的なテクニックは学びません ● 本講座はPythonを中⼼に進めますが作者はPythonが嫌いです ● 本サンプルコードを実⾏したことによる、いかなる責任を作者 は⽼いません At your OWN risk!!

Slide 3

Slide 3 text

3 ⾃⼰紹介 クラウドソーシングサービスなどを 開発しています notch_man twitter: @notch_man8600 ● 認定スクラムマスター(CSM) ● ラボのシステム開発の全責任を負う(辛い) ● 学類パンフに載ったけど留年したよ(笑) ● 現場で都合良く使われています [概要] ● 2020年3月 香川高専卒業 ● 2021年4月 筑波大編入 ● enPiT2021(受講)&2022~(メンター) [略歴]

Slide 4

Slide 4 text

4 おしながき 1. 自己紹介 2. この講座のゴールについて 3. 本講座の概要説明 4. 雑な実施計画 5. 進め方について 6. 心構えについて 7. あの現場は今

Slide 5

Slide 5 text

5 この講座のゴールについて 1. シンプルなWebアプリを作れるようになる 2. Webアプリケーションを作る上でのお作法を学ぶ 3. 汎用的なスキルとノウハウを知る 4. オレオレFWを作りたくなる気持ちになる 5. オレオレFWを安易に使うと火傷をすることを知る 6. 巷のFWが何故受け入れられたのか考えられるようになる 7. おまけ話を聞いて世間を知る ⽬標段階のレベルを定義しました。 これらいずれかを⽬指しましょう!

Slide 6

Slide 6 text

6 レベル1: シンプルなWebアプリを作れるようになる ● コピペしたらフロントとバックエンドが動くコードを作ります ○ Pythonなので分かりやすい! ○ クリーンなコードでGPL v3だから使いやすい! ● それを写経したら何かが作れます ● ちょっと弄ると自分らしさが出せます ● 良い感じに弄られるようになると、色々なサービスが作れます ○ ロジックとかで使い回せるようになると非常に楽になります

Slide 7

Slide 7 text

7 レベル2: Webアプリケーションを作る上でのお作法を学ぶ ● REST APIと言われて反応できるようになる ● CRUDが何か説明できる ● 何のために〇〇を立てたり実装するかが理解できる ○ ex.) リレーショナルデータベース ● Webアプリを作る時の手順が何となくみえる

Slide 8

Slide 8 text

8 レベル3: 汎⽤的なスキルとノウハウを知る ● 〇〇を作ってと言われたら何となく手順が分かる ● ex.) 配車アプリを作って ○ データモデルは... ○ テーブル構造は... ○ とりあえずLAMPで頑張れば1000人くらいまでは耐えそう ○ フロントはHTMLとCSSで頑張るぞ ○ おらおら実装するぞ!

Slide 9

Slide 9 text

9 レベル4: オレオレFWを作りたくなる ● ORMの苦しい点を知る ● フレームワークのイケていないところを知る ● Pythonのイケていないところを知る ● イケていないことの解決策に”自分で何とかする”という選択肢を加える ● 実際に作って“何とかしてみる”経験をする

Slide 10

Slide 10 text

10 レベル5: オレオレFWで⼤⽕傷を負う ● 実際に作って“何とかしてみる”経験をする ● さて、それを他の人にも広めてください! ○ う~ん、辛い ● あなたのFWは誰の何の課題を解決しましたか? ○ オレオレFW is only for you ● あなたの課題はあなただけの課題であることを知る ○ そのレベルを超えたやつはgithubのissueを見てくれ => 100回に1回くらいは他の人も思ってる

Slide 11

Slide 11 text

11 レベル6: 巷のFWに回帰しよう ● FlaskやFast APIの思想を知る ● 巷のFWが受け入れられた理由を考えてみる ● FWの意義を知る ● FWでは何とかならん世界があることも知る ○ そういうところではオレオレFWが大活躍します ○ そういうのが興味がある人はビッグテックとか基盤開発しているところに行きましょう

Slide 12

Slide 12 text

本講座の概要など

Slide 13

Slide 13 text

13 本講座概要:何を作るの? [初心者向け] ● 他の人とチャットできるWebサービスを開発できます [中級者向け] ● WebSocketとRESTを話すチャットサーバーを作ります [上級者向け] ● 自作ライブラリでルーティングとDB層を抽象化したオレオレFWを作りつつ、 オマケでチャットサーバーを作ります

Slide 14

Slide 14 text

14 本講座概要:何が達成できるの? [初心者向け] ● 初めてのWebアプリを作ることができます [中級者向け] ● WebSocketを使ったメッセージング機能でたっぷり遊べます [上級者向け] ● FWの存在意義を考えることができます ● 厨二病を克服できます

Slide 15

Slide 15 text

15 本講座概要 ● 基本的に初心者向けコンテンツから進んでいきます ● 回を重ねる事にレベルがアップしていきます ● 自分が目指すゴールを目標に頑張って食らいついてください ● 質問は24H365Dいつでもおkです ● ツールのインストールから辛いという人は適宜discordでサポートします(あ まりに人が増えたら考えます) ● ナンモワカランけど質問しまくるなどして頑張ってついてきてくれる人が居る と、主催者は泣いて喜びます

Slide 16

Slide 16 text

16 本講座の進め⽅ ● スライド+notion資料とサンプルコードで進みます ● たまに動画を撮ります ● 水・金の空いている時間にQ&Aをやります ● 過去のコンテンツの質問もwelcomeです ● 質問はとりあえずtimes_notchmanへ気軽に投稿してください ● というか困ったらすぐdiscordに投げてください(⼤事) a. 通知が⾶ぶことを恐れるな!こういう講座の主催者は通知が受講⽣から通知がくる と泣いて喜びます

Slide 17

Slide 17 text

17 中上級者向け:取り扱う技術スタック ● コア⾔語‧機能 ○ Python, SQL, YAML ● フレームワーク‧ライブラリ ○ FastAPI, オレオレFW(route,repository,db_infra) ● インフラ ○ MySQL,Docker ● その他 ○ REST, WebSocket

Slide 18

Slide 18 text

⼼構えについて

Slide 19

Slide 19 text

初⼼者welcome

Slide 20

Slide 20 text

ただし

Slide 21

Slide 21 text

⾃分で頑張る部分は多い

Slide 22

Slide 22 text

22 ⼼構え ● 1~10まで全部教えることはできません ● 自分で手を動かしたり調べたりして唸りましょう a. できなくても良いです、手を動かす経験が一番大切です ● 分からなかったら気軽に人に聞きましょう a. 恥ずかしがらずに聞きましょう、分からない事を飲み込む方が恥ずかしいですし、そういう のは主催側から見えてしまいます ● できなかったり、理解できなかったことを恥じないでください a. 最初は誰も何も分からないです b. 手を動かして失敗する経験が一番大事です( 1の成功より10の失敗の方が良き) ● 必死に食らいついてくれる人が居ると嬉しいです(n回目)

Slide 23

Slide 23 text

おま〇け

Slide 24

Slide 24 text

あの現場は今?

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

26 あの現場が抱えている課題 ● 10年前のコードベースを抱えている ● 当時の開発者は誰もいない ● テストコードもない ● 現状、インフラが壊れた場合に誰も元に戻せない ● 独自言語のトランスパイラが存在する ● 1人の病を患った若き兵士が日夜戦い続けている

Slide 27

Slide 27 text

27 レガシーと戦う ● コードは作られた瞬間にレガシー化します a. あなたの書いたコードを3年後に動かしてください => 多分、無理だと思います ● 継続的な開発の難しさ a. サービスとしての新しい価値(?)を出す b. サービスの価値とは何か? c. レガシーの返済とサービスの価値向上との位置づけ

Slide 28

Slide 28 text

28 さいごに:おまけパートの⽴ち位置 ● こういう話をtimes_notchmanとかで聞きましょう ● あるいはtimes_notchmanなどで色々ぼやきます ● 雑談のネタとしてもどうぞ ● 初歩的な質問から上級的な質問、まさかりまで何でもおkです ● 皆さんでよりよりWeb開発について知見を積み上げたいです

Slide 29

Slide 29 text

レガシーを克服しサービスを提供したい⼈ 現場の知⾒を得ながらものづくりをしたい⼈ 融合知能デザイン研究室に興味のある⼈ notch_man君へこっそり連絡を