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
炭酸飲料が飲めない学校で炭酸飲料を飲めるよにした話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Daniel
October 07, 2018
Programming
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
炭酸飲料が飲めない学校で炭酸飲料を飲めるよにした話
Daniel
October 07, 2018
More Decks by Daniel
See All by Daniel
Juliaで機械学習
peshogo
2
830
RISC-VボードでRustを動かす話
peshogo
1
980
一年生へ
peshogo
1
82
Other Decks in Programming
See All in Programming
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
110
Vite+ Unified Toolchain for the Web
naokihaba
0
360
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
600
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
600
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.8k
Lessons from Spec-Driven Development
simas
PRO
0
230
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
280
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
220
The NotImplementedError Problem in Ruby
koic
1
970
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
300
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
170
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Evolving SEO for Evolving Search Engines
ryanjones
0
230
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
870
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
Paper Plane (Part 1)
katiecoart
PRO
0
9.3k
The Cult of Friendly URLs
andyhume
79
6.9k
Faster Mobile Websites
deanohume
310
32k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Transcript
炭酸飲料が飲めない学校で 炭酸飲料を飲めるようにした話
⾃⼰紹介 ダニエル(⾼⽥勝悟) ⼋王⼦桑志⾼校システム情報分野 Python が好き
炭酸飲料が好きな⼈?
学校で炭酸飲料が買えない
炭酸飲料を売っている ⾃動販売機を作ってしまおう
その頃... Django ⾯⽩いな〜。 何か作ってみたいな〜。
⾃動販売機を管理するための Web アプリを作ろう
作ったもの 炭酸飲料を保管する箱 管理⽤Web アプリ
Django
データベース from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
データベース CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY
KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );
from ... import Person p1 = Person(first_name="Shogo", last_name="Takata") p1.save() p2
= Person() p2.first_name = "Shogo" p2.last_name = "Takata" p2.save()
Django データベース HTML テンプレート ルータ ユーザー認証
⾃動販売機 ユーザー認証 商品 残⾼
商品 class Item(models.Model): product_name = models.CharField(max_length=200) product_price = models.IntegerField() product_price_with_fee
= models.IntegerField() added_date = models.DateTimeField(null=True) seller = models.ForeignKey(User, on_delete=models.SET_NULL,
売る
買う
class Log(models.Model): product_name = models.CharField(max_length=200) product_price = models.IntegerField() product_price_with_fee =
models.IntegerField() added_date = models.DateTimeField(null=True) deleted_date = models.DateTimeField(null=True) seller = models.ForeignKey( User, on_delete=models.SET_NULL, null=True, related_name buyer = models.ForeignKey( User, on_delete=models.SET_NULL, null=True, related_name
残⾼ 1. ユーザーDB につける 問題が起きたときに⾯倒 2. ログを遡って残⾼を⾒る 問題の起きたログだけ消せばいい ⼊⾦出⾦ができない 3.
⼊⾦出⾦もログに⼊れよう 商品名をIn , Out にしてシステムに買わせる
起きた問題
2 度売られてしまう問題 売ったあとページの再読込をすると、もう⼀度売った 判定が出る
解決 ⼀度しか使えないトークンを⽤意する ↓ 同時アクセスに対応できない
⼊⾦
⼊⾦
⼊⾦額が合わない
集めた税から出す しっかり確認する(未実装)
学校が炭酸飲料を⼊れた
学校「炭酸飲料は⼊荷しません」 クラス「仕⽅ない、⾃分たちで作ろう」 3 ヶ⽉後... 学校「炭酸飲料⼊荷します」 クラス「?!?!」
実績
まとめ Django を使えばデータベースを使ったWeb アプリ を簡単に実装できる お⾦が絡むシステムで信頼ベースはきつい 都⽴⾼校って案外ちょろい