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
[第3回] Webサービス開発講座
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
notch_man
August 23, 2023
Education
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[第3回] Webサービス開発講座
2023年度の筑波大学enPiTで使用した資料です。全4回+αでWeb開発の基礎を学ぶことが出来ます。
※notion資料は近日公開予定です。
notch_man
August 23, 2023
More Decks by notch_man
See All by notch_man
[第4回] Webサービス開発講座
notchman8600
0
62
新人的ソフトウェアサバイバルガイド:荒野に向かい、瓦礫にぶつかり、迷子になり、広野に赴く
notchman8600
1
1.3k
最高の開発手法、アジャイルを捨てよう
notchman8600
0
43
[第1回] Webサービス開発講座
notchman8600
0
63
[第2回] Webサービス開発講座
notchman8600
0
73
本当に初心者目線で考えた時の技術選定の話
notchman8600
0
110
Pythonけものみち(という名のオレオレFWを作った言い訳)
notchman8600
0
54
Other Decks in Education
See All in Education
批判的応用言語学ワークショップ(2026-08-12 お茶の⽔⼥⼦⼤学)
terasawat
0
190
2026年度春学期 統計学 第13回 不確かな測定の不確かさを測る ― 不偏分散とt分布 (2026. 6. 25)
akiraasano
PRO
1
180
Examen de Selectividad. Geografía julio 2026 (Convocatoria Extraordinaria). UCLM
juanmartin2026
1
13k
AI-Based Speaking Assessment of a Short-Term Study Abroad Program
uranoken
0
480
[2026前期火5] 論理学(京都大学文学部 前期 第9回)「正規化の停止性——ヒドラゲームによる証明」
yatabe
0
270
Visionary Initiative: Future Intelligence 「未来の知性と社会の礎を築く」|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
1.6k
AIでアウトプットできる時代だからこそ、自分の言葉で考えることの大切さ / What's Left to Think, When AI Can Write?
masakiokuda
1
230
輻射安全管理系統2.0暨輻防e++學園平台說明會
aecrp
0
2k
医師がスタッフに AI を教えるとき、どんな内容を話しているか
osawaux
1
120
「答えを出す」より「わかる」をつくる
kzkmaeda
1
290
Course Review - Lecture 13 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
2.4k
2026年度春学期 統計学 第10回 分布の推測とは - 標本調査,度数分布と確率分布 (2026. 6. 4)
akiraasano
PRO
0
210
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
870
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Abbi's Birthday
coloredviolet
3
9.8k
New Earth Scene 8
popppiees
3
2.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
530
Claude Code のすすめ
schroneko
67
230k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Product Roadmaps are Hard
iamctodd
55
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
260
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
Webサービス開発講座 第3回 この資料はenPiT2023向けのものです。 第3者へのリンクの配布等は 作者(@notch_man8600)を提⽰した上でお願いします (ついでに感想もいただけると私が泣いて喜びます)
2 DISCLAIMER • この講座は⼤学講義レベルのプログラミング履修者が対象です • 即座にサービスを作れる実践的なテクニックは学びません • 本講座はPythonを中⼼に進めますが作者はPythonが嫌いです • 本サンプルコードを実⾏したことによる、いかなる責任を作者
は負いません At your OWN risk!!
3 おしながき 1. 第3回の雑な説明 2. 第3回の雑な解説 3. お〇まけトーク 4. 技術選定の話(⽔曜にやる予定だった物のLT)
4 各種資料 [Web開発基礎講座] https://overjoyed-yew-99e.notion.site/Web-cd8dcd9eee9e46cfa5591ec e2179a4a5 [第3回notion資料] https://overjoyed-yew-99e.notion.site/3-OreChat-91d84ca65de74c82b 2d446b99fa95367
5 ⾃⼰紹介 クラウドソーシングサービスなどを 開発しています notch_man twitter: @notch_man8600 • 認定スクラムマスター(CSM) •
ラボのシステム開発の全責任を負う(⾟い) • 学類パンフに載ったけど留年したよ(笑) • 現場で都合良く使われています [概要] • 2020年3⽉ ⾹川⾼専卒業 • 2021年4⽉ 筑波⼤編⼊ • enPiT2021(受講)&2022〜(メンター) [略歴]
6 この講座のゴールについて 1. シンプルなWebアプリを作れるようになる 2. Webアプリケーションを作る上でのお作法を学ぶ 3. 汎⽤的なスキルとノウハウを知る 4. オレオレFWを作りたくなる気持ちになる
5. オレオレFWを安易に使うと⽕傷をすることを知る 6. 巷のFWが何故受け⼊れられたのか考えられるようになる 7. おまけ話を聞いて世間を知る ⽬標段階のレベルを定義しました。 これらいずれかを⽬指しましょう!
7 本⽇の⽬標:シンプルなWebアプリを作れるようになる • コピペしたらフロントとバックエンドが動くコードを作ります ◦ Pythonなので分かりやすい! ◦ クリーンなコードでGPL3だから使いやすい! • それを写経したら何かが作れます
• ちょっと弄ると⾃分らしさが出せます • 良い感じに弄られるようになると、⾊々なサービスが作れます ◦ ロジックとかで使い回せるようになると⾮常に楽になります
皆さんできましたか??
9 第2〜3回で作るもの • OreChatというチャットサービスを作ります ◦ WebSocketというイケてる(主観)技術を学べます ◦ HTML+CSS+JSというシンプルな構成です • Web開発の⼀連のお作法を学ぶことが出来ます
◦ フロントエンドとは? ◦ バックエンドとは? ◦ Webサービスが実際に⽴ち上がるまで
10 Web開発のお作法 • フロントエンド ◦ 情報を提⽰するために使う ◦ HTML+CSS+JavaScriptなどで記述されることが多い ◦ イケてるライブラリやフレームワークとしてはReactやVueなどがある
• バックエンド ◦ 定時する情報を保存するために使う ◦ GoやGoやPythonやTypeScriptなどが⽤いられることが多い
11 フロントエンド 1. ユーザーに親切なHTMLを表⽰する 2. ユーザーからのイベントを受け取る 3. サーバーに(データを送り)処理をリクエストする 4. リクエストに対するレスポンスを受け取りユーザーに⾒せる
12 バックエンド 1. ユーザーからのリクエストを受け付ける 2. ユーザーからのリクエストを受け取り、何らかの処理する 3. ユーザーに対してリクエストの結果を返す
13 未知の問題との戦い⽅ 1. 静的解析ツールを使う 2. GitHubを頼る 3. StackOverflowを漁ってみる 4. ChatGPTに聞いてみる
14 静的解析ツールに頼る • クラスや構造体のプロパティ名を⾒る • 基底クラスの定義を覗いてみる • 参照先を追跡して挙動を追う
15 GitHubやStackOverflowを頼る • エラーコードでググると⼤体いろいろなサイトが出てくる ◦ GitHubとStackOverflow以外はあまり信⽤できない • GitHubのissuesやpull requestsを⾒ると同じ課題に直⾯した⼈が居る
16 ChatGPTに聞いてみる • 良い感じに聞くと答えを教えてくれます • 私の研究のコードはChatGPTが100倍以上早くなりました
17 開発⼒を⾼める • ものごとを何とかする道筋を知識と知る • 未知の問題を解くための道筋の開き⽅を経験する • トライアンドエラーを繰り返して知恵を得る
18 次回予告 • 未定
おま〇け
Python漫談
Pythonを捨てよう
キーワード:Webサービス
Pythonの可愛らしい点(⽋点)を上げよ!
24 Pythonの可愛らしい点 • ゆるふわな辞書型 ◦ あらゆるデータ構造を扱える • interfaceが無いのが⾟い ◦ 旅をしてしまうクラス
• そもそも実⾏速度が遅い • 型を安⼼して書けないので⾟い • 静的解析ツールもオレオレしており⾮常に苦しい(あと重い) • ライブラリがブロークンに変わる
25 可愛らしいdictの例 request = { "data": 1, "user_id": "example-user-id", "password":
"password", "method": "add", } router = { "/add": lambda a, b: a + b, "/sub": lambda a, b: a - b, } if "method" in request: print(router[request["method"]](request["data"], 2)) try: print(request["1"]) # もしパスワードカラムみたいなものがあったら削除しよう request.pop("password") except Exception as e: pass print(request["user_id"]) ex.) 辞書を使ったルーターの様な物体
26 可愛らしいdictの例 • key-valueの型が揺れる ◦ 静的解析で追跡しにくい ◦ ⾃由に値を書き換える • 気軽に抽象クラスでエラーを掴んでしまう
◦ エラータイプが分からん ◦ passの恐ろしさ • 無い物が⽣まれたり、あるものが無くなったり • ありとあらゆることが⾃由にできる
27 私がPythonをサービス開発で使いたくない理由 • 静的解析が効きづらい ◦ 後任が苦しむ ◦ バグの温床になる(静的解析はテストの1⼿法) • エラーハンドリングが弱い
◦ エラーに型があるため、基底クラスで掴みがち ◦ ゆるふわにpassをするサンプルが多いため死んでしまう • パフォーマンスが遅い ◦ FastAPIとかを使うとある程度は解決できるが... • FWがブロークンに変わる(まあ⾔語も...)
28 私がPythonをサービス開発で使いたくない理由 • サービスは⻑⽣きしてしまう ◦ うっかり、作ったサービスが10年以上 • あなたは毎年リプレイス(という名の終わらない作り直し)をやる? • ソフトウェアの品質特性を担保するのが苦しい
◦ 信頼性 ◦ 保守性 ◦ 機能性
29 サービス開発の⼿段として抑えて欲しい点 • とりあえず、3年は⽣かしてくれ ◦ 3年は⼤幅には壊れない技術選定 ◦ メンテナンスし続けられる技術選定 ◦ ブロークンに変わる可能性の低い技術選定
• コードの中と外に頼れるものであるか? • コードの中に頼れるか ◦ コメントアウト、型宣⾔‧型ヒント、docstring • コードの外に頼れるか ◦ テスト、静的解析、フォーマッタ...
それでも
それでも
それでも
Pythonでサービスを作りたい
よおこそ、けもの道へ
次回予告
Python漫談
Pythonけものみち 〜Pythonで3年⽣かせるコードを⽬指して〜
おたのしみに
39 本⽇のまとめ • Pythonでサービスを作るのは⾟い ◦ ⾃由が故に⾃由に翻弄され、責任は誰も負わない • サービス開発をする上で⼼得て欲しい点 ◦ 90%の⼈が分かる技術選定である
◦ 直し⽅が現実的で傷跡が分かりやすいものである ◦ テストや静的解析など外から傷をフォローできる • 3年は⽣きるコードを書いてくれ!
レガシーを克服しサービスを提供したい⼈ 現場の知⾒を得ながらものづくりをしたい⼈ 融合知能デザイン研究室に興味のある⼈ notch_man君へこっそり連絡を