Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[第1回] Webサービス開発講座
Search
notch_man
August 23, 2023
Education
0
42
[第1回] Webサービス開発講座
2023年度の筑波大学enPiTで使用した資料です。全4回+αでWeb開発の基礎を学ぶことが出来ます。
※notion資料は近日公開予定です。
notch_man
August 23, 2023
Tweet
Share
More Decks by notch_man
See All by notch_man
[第4回] Webサービス開発講座
notchman8600
0
27
新人的ソフトウェアサバイバルガイド:荒野に向かい、瓦礫にぶつかり、迷子になり、広野に赴く
notchman8600
1
740
最高の開発手法、アジャイルを捨てよう
notchman8600
0
21
[第2回] Webサービス開発講座
notchman8600
0
51
[第3回] Webサービス開発講座
notchman8600
0
60
本当に初心者目線で考えた時の技術選定の話
notchman8600
0
69
Pythonけものみち(という名のオレオレFWを作った言い訳)
notchman8600
0
21
Other Decks in Education
See All in Education
RSJ2024学術ランチョンセミナー「若手・中堅による国際化リーダーシップに向けて」資料 (河原塚)
haraduka
0
220
HCI Research Methods - Lecture 7 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
700
オープンソース防災教育ARアプリの開発と地域防災での活用
nro2daisuke
0
170
謙虚なアジャイルコーチ__アダプティブ_ムーブ_による伴走支援.pdf
antmiyabin
0
260
Chapitre_1_-__L_atmosphère_et_la_vie_-_Partie_2.pdf
bernhardsvt
0
200
勉強する必要ある?
mineo_matsuya
2
1.5k
2409_CompanyInfo_Hanji_published.pdf
yosukemurata
0
310
Flinga
matleenalaakso
2
13k
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
2.6k
Zoom-ohjeet
matleenalaakso
7
7.2k
HCI and Interaction Design - Lecture 2 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
810
Evaluation Methods - Lecture 6 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
690
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
700
Designing for humans not robots
tammielis
250
25k
For a Future-Friendly Web
brad_frost
175
9.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
400
Measuring & Analyzing Core Web Vitals
bluesmoon
3
79
A better future with KSS
kneath
238
17k
Visualization
eitanlees
145
15k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Transcript
Webサービス開発講座 第1回 この資料はenPiT2023向けのものです。 第3者へのリンクの配布等は 作者(@notch_man8600)を提⽰した上でお願いします (ついでに感想もいただけると私が泣いて喜びます)
2 DISCLAIMER • この講座は⼤学講義レベルのプログラミング履修者が対象です • 即座にサービスを作れる実践的なテクニックは学びません • 本講座はPythonを中⼼に進めますが作者はPythonが嫌いです • 本サンプルコードを実⾏したことによる、いかなる責任を作者
は⽼いません At your OWN risk!!
3 ⾃⼰紹介 クラウドソーシングサービスなどを 開発しています notch_man twitter: @notch_man8600 • 認定スクラムマスター(CSM) •
ラボのシステム開発の全責任を負う(辛い) • 学類パンフに載ったけど留年したよ(笑) • 現場で都合良く使われています [概要] • 2020年3月 香川高専卒業 • 2021年4月 筑波大編入 • enPiT2021(受講)&2022~(メンター) [略歴]
4 おしながき 1. 自己紹介 2. この講座のゴールについて 3. 本講座の概要説明 4. 雑な実施計画
5. 進め方について 6. 心構えについて 7. あの現場は今
5 この講座のゴールについて 1. シンプルなWebアプリを作れるようになる 2. Webアプリケーションを作る上でのお作法を学ぶ 3. 汎用的なスキルとノウハウを知る 4. オレオレFWを作りたくなる気持ちになる
5. オレオレFWを安易に使うと火傷をすることを知る 6. 巷のFWが何故受け入れられたのか考えられるようになる 7. おまけ話を聞いて世間を知る ⽬標段階のレベルを定義しました。 これらいずれかを⽬指しましょう!
6 レベル1: シンプルなWebアプリを作れるようになる • コピペしたらフロントとバックエンドが動くコードを作ります ◦ Pythonなので分かりやすい! ◦ クリーンなコードでGPL v3だから使いやすい!
• それを写経したら何かが作れます • ちょっと弄ると自分らしさが出せます • 良い感じに弄られるようになると、色々なサービスが作れます ◦ ロジックとかで使い回せるようになると非常に楽になります
7 レベル2: Webアプリケーションを作る上でのお作法を学ぶ • REST APIと言われて反応できるようになる • CRUDが何か説明できる • 何のために〇〇を立てたり実装するかが理解できる
◦ ex.) リレーショナルデータベース • Webアプリを作る時の手順が何となくみえる
8 レベル3: 汎⽤的なスキルとノウハウを知る • 〇〇を作ってと言われたら何となく手順が分かる • ex.) 配車アプリを作って ◦ データモデルは...
◦ テーブル構造は... ◦ とりあえずLAMPで頑張れば1000人くらいまでは耐えそう ◦ フロントはHTMLとCSSで頑張るぞ ◦ おらおら実装するぞ!
9 レベル4: オレオレFWを作りたくなる • ORMの苦しい点を知る • フレームワークのイケていないところを知る • Pythonのイケていないところを知る •
イケていないことの解決策に”自分で何とかする”という選択肢を加える • 実際に作って“何とかしてみる”経験をする
10 レベル5: オレオレFWで⼤⽕傷を負う • 実際に作って“何とかしてみる”経験をする • さて、それを他の人にも広めてください! ◦ う~ん、辛い •
あなたのFWは誰の何の課題を解決しましたか? ◦ オレオレFW is only for you • あなたの課題はあなただけの課題であることを知る ◦ そのレベルを超えたやつはgithubのissueを見てくれ => 100回に1回くらいは他の人も思ってる
11 レベル6: 巷のFWに回帰しよう • FlaskやFast APIの思想を知る • 巷のFWが受け入れられた理由を考えてみる • FWの意義を知る
• FWでは何とかならん世界があることも知る ◦ そういうところではオレオレFWが大活躍します ◦ そういうのが興味がある人はビッグテックとか基盤開発しているところに行きましょう
本講座の概要など
13 本講座概要:何を作るの? [初心者向け] • 他の人とチャットできるWebサービスを開発できます [中級者向け] • WebSocketとRESTを話すチャットサーバーを作ります [上級者向け] •
自作ライブラリでルーティングとDB層を抽象化したオレオレFWを作りつつ、 オマケでチャットサーバーを作ります
14 本講座概要:何が達成できるの? [初心者向け] • 初めてのWebアプリを作ることができます [中級者向け] • WebSocketを使ったメッセージング機能でたっぷり遊べます [上級者向け] •
FWの存在意義を考えることができます • 厨二病を克服できます
15 本講座概要 • 基本的に初心者向けコンテンツから進んでいきます • 回を重ねる事にレベルがアップしていきます • 自分が目指すゴールを目標に頑張って食らいついてください • 質問は24H365Dいつでもおkです
• ツールのインストールから辛いという人は適宜discordでサポートします(あ まりに人が増えたら考えます) • ナンモワカランけど質問しまくるなどして頑張ってついてきてくれる人が居る と、主催者は泣いて喜びます
16 本講座の進め⽅ • スライド+notion資料とサンプルコードで進みます • たまに動画を撮ります • 水・金の空いている時間にQ&Aをやります • 過去のコンテンツの質問もwelcomeです
• 質問はとりあえずtimes_notchmanへ気軽に投稿してください • というか困ったらすぐdiscordに投げてください(⼤事) a. 通知が⾶ぶことを恐れるな!こういう講座の主催者は通知が受講⽣から通知がくる と泣いて喜びます
17 中上級者向け:取り扱う技術スタック • コア⾔語‧機能 ◦ Python, SQL, YAML • フレームワーク‧ライブラリ
◦ FastAPI, オレオレFW(route,repository,db_infra) • インフラ ◦ MySQL,Docker • その他 ◦ REST, WebSocket
⼼構えについて
初⼼者welcome
ただし
⾃分で頑張る部分は多い
22 ⼼構え • 1~10まで全部教えることはできません • 自分で手を動かしたり調べたりして唸りましょう a. できなくても良いです、手を動かす経験が一番大切です • 分からなかったら気軽に人に聞きましょう
a. 恥ずかしがらずに聞きましょう、分からない事を飲み込む方が恥ずかしいですし、そういう のは主催側から見えてしまいます • できなかったり、理解できなかったことを恥じないでください a. 最初は誰も何も分からないです b. 手を動かして失敗する経験が一番大事です( 1の成功より10の失敗の方が良き) • 必死に食らいついてくれる人が居ると嬉しいです(n回目)
おま〇け
あの現場は今?
None
26 あの現場が抱えている課題 • 10年前のコードベースを抱えている • 当時の開発者は誰もいない • テストコードもない • 現状、インフラが壊れた場合に誰も元に戻せない
• 独自言語のトランスパイラが存在する • 1人の病を患った若き兵士が日夜戦い続けている
27 レガシーと戦う • コードは作られた瞬間にレガシー化します a. あなたの書いたコードを3年後に動かしてください => 多分、無理だと思います • 継続的な開発の難しさ
a. サービスとしての新しい価値(?)を出す b. サービスの価値とは何か? c. レガシーの返済とサービスの価値向上との位置づけ
28 さいごに:おまけパートの⽴ち位置 • こういう話をtimes_notchmanとかで聞きましょう • あるいはtimes_notchmanなどで色々ぼやきます • 雑談のネタとしてもどうぞ • 初歩的な質問から上級的な質問、まさかりまで何でもおkです
• 皆さんでよりよりWeb開発について知見を積み上げたいです
レガシーを克服しサービスを提供したい⼈ 現場の知⾒を得ながらものづくりをしたい⼈ 融合知能デザイン研究室に興味のある⼈ notch_man君へこっそり連絡を