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
43
[第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
760
最高の開発手法、アジャイルを捨てよう
notchman8600
0
21
[第2回] Webサービス開発講座
notchman8600
0
51
[第3回] Webサービス開発講座
notchman8600
0
62
本当に初心者目線で考えた時の技術選定の話
notchman8600
0
71
Pythonけものみち(という名のオレオレFWを作った言い訳)
notchman8600
0
21
Other Decks in Education
See All in Education
1127
cbtlibrary
0
170
Image Processing 1 : 1.Introduction
hachama
0
410
勉強する必要ある?
mineo_matsuya
2
2.2k
Library Prefects 2024-2025
cbtlibrary
0
120
Canva
matleenalaakso
0
470
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
14k
Adobe Analytics入門講座【株式会社ニジボックス】
nbkouhou
0
22k
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
190
オープンソース防災教育ARアプリの開発と地域防災での活用
nro2daisuke
0
200
Web Application Frameworks - Lecture 4 - Web Technologies (1019888BNR)
signer
PRO
0
2.6k
Tableau トレーニング【株式会社ニジボックス】
nbkouhou
0
22k
"数学" をプログラミングしてもらう際に気をつけていること / Key Considerations When Programming "Mathematics"
guvalif
0
610
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
How GitHub (no longer) Works
holman
311
140k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
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君へこっそり連絡を