Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
脱なんちゃってフロントエンド/frontend_to_properly
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Masahiko Sakakibara
July 14, 2018
3.3k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
脱なんちゃってフロントエンド/frontend_to_properly
Masahiko Sakakibara
July 14, 2018
More Decks by Masahiko Sakakibara
See All by Masahiko Sakakibara
決済端末ビジネスを、決済会社だけのものにしない/stripe_terminal_business
rdlabo
0
61
JavaScriptで始める店舗インフラ決済構築/stripe_terminal_workshop
rdlabo
0
58
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
710
本当に欲しかったのはモノレポツールではなく、tsconfigの設定だった / monorepo-tsconfig
rdlabo
1
420
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
590
プライベートプロダクト戦略 - フロントエンドカンファレンス沖縄 / private_product_frontend
rdlabo
3
4.9k
GitHubをCMSとして使う話/ using_github_as_CMS
rdlabo
0
730
JavaScriptから デバイスの力を100%引き出すための Web APIとCapacitor入門 / power_from_javascript
rdlabo
0
650
Capacitor4_release
rdlabo
0
740
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
The Language of Interfaces
destraynor
162
27k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
Making Projects Easy
brettharned
120
6.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
400
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Deep Space Network (abreviated)
tonyrice
0
360
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
Ұൠࣾஂ๏ਓϦϨʔγϣϯσβΠϯݚڀॴ දཧࣄɹࡗݪণ ʮͳΜͪΌͬͯʯϑϩϯτΤϯυ
None
ࣗݾհ ࡗݪণ Ұൠࣾஂ๏ਓϦϨʔγϣϯσβΠϯ ݚڀॴදཧࣄ Ұൠࣾஂ๏ਓΤϦΞɾ ΠϊϕʔγϣϯɾΞϥΠΞϯε$50 *POJD+BQBOද *POJDίΞίϯτϦϏϡʔλʔ
<1SPEVDU>"SFB*OOPWBUJPO3FWJFX
<1SPEVDU>UJQTZT
$POUSJCVUF ionic-team/ionic ionic-team/starters ionic-team/ionic-cli
։ൃαϙʔταʔϏε
ϑϩϯτΤϯυͱ Ϣʔβͷग़ೖྗΠϯλʔϑΣΠεͷͯ͢ マークアップ UI Design プログラミング
੩తαΠτ マークアップ
ಈతαΠτ 出力結果 動的プログラミング言語
1)1ͷಛ の中に を書くための言語 <php foreach($array as $string){ ?> <li class=‘list-style-apply’><?php
echo $string;?></li> <?php } ?> <p>ここにもHTML書けちゃう!</p>
ͪΌΜͱϑϩϯτΤϯυΛΈΑ͏
8FCͷτϨϯυ ੩తαΠτ 4JOHMF1BHF"QQMJDBUJPO 41" 3&45"1*(SBQI2-ʹΑΔόοΫΤ ϯυͱϑϩϯτΤϯυͷϒϦοδ +BWB4DSJQUʹΑΔϦονͳ6*
1SPHSFTTJWF8FC"QQT 18" 41" 8FC"1* ಈతαΠτ ΑΓΑ͍69Λࢦ͢
41"18"ʹ͓͚Δ1)1ͷׂ フロントエンド 動的プログラミング言語 API
41"ͰγʔϜϨεͳϢʔβମݧΛɻ
41"ͰγʔϜϨεͳϢʔβମݧΛɻ index.html 4JOHMF1BHF"QQMJDBUJPO
41"ͰγʔϜϨεͳϢʔβମݧΛɻ
41"ͰγʔϜϨεͳϢʔβମݧΛɻ ৗʹߴͰ҆ఆͨ͠ύϑΥʔϚϯε ॳظϩʔυͰTIFMMͷϩʔυྃʗϖʔδ ભҠͷߴԽʗ-B[Z-PBEJOH ωΠςΟϒΞϓϦͷΑ͏ͳૢ࡞ੑ ʢ1SPHSFTTJWF8FC"QQTͰޙड़ʣ σʔλͷޮతͳ༻
࠶ϩʔυΛߦΘͳ͍ʗ+40/ϑΝΠϧ ʢ3&45"1*ʣͷޮతར༻ \n^
41"ͰγʔϜϨεͳϢʔβମݧΛɻ ͜Εͷ௨৴ίετ
41"ͰγʔϜϨεͳϢʔβମݧΛɻ 2435文字
41"ͰγʔϜϨεͳϢʔβମݧΛɻ [{ "name": "tipsys", "desc": "国内で唯一の女友だちをつくる女性専用ソーシャルサービス。PWA・iOS・Androidアプリで配信中。ユーザ数1万人を 突破しました!", "image": "assets/images/tipsys.svg", "miniImage":
"assets/images/tipsys.svg", "url": "https://tipsys.me" }, { "name": "Ionic-WP.com", "desc": "アプリ制作に興味をもつWeb制作者のためのパッケージをオープンソースで公開。WordPressとIonicで簡単にアプリ をつくることができます。", "image": "assets/images/
[email protected]
", "miniImage": "assets/images/
[email protected]
", "url": "https://ionic-wp.com" }, { "name": "執筆・出版", "desc": "技術書籍の執筆を行っております。「Ionicで作る モバイルアプリ制作入門」「PHPフレームワークCodeIgniter3 超入 門」好評発売中!", "image": "assets/images/
[email protected]
", "miniImage": "assets/images/
[email protected]
", "url": "https://amzn.to/2HOhiy1" }] 716文字
41"ͰγʔϜϨεͳϢʔβମݧΛɻ
41"ͰγʔϜϨεͳϢʔβମݧΛɻ
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏ ΦϑϥΠϯදࣔ #BDLHSPVOE4ZOD 1VTI௨ ϗʔϜը໘ʹՃ
(14ΧϝϥͳͲͷ /BUJWFػೳͷΞΫηε
ΦϑϥΠϯදࣔʢΩϟογϡදࣔʣ w ࣗͰνΣοΫ͓ͯ͠ؾʹೖΓʹೖΕ͓ͨ ళใΛग़ઌͰݟ͢ w ిंͷதͰϒϥβόοΫͨ͠ॠؒʹτϯ ωϧʹೖͬͨ w ʰΠϯλʔωοτଓ͕͋Γ·ͤΜʱ 8FCͰํͳ͍ʁ
σϞ IUUQTBJSBSFBJBKQ 18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
#BDLHSPVOE4ZOD ΦϑϥΠϯ࣌ʹૹ৴ͨ͠σʔλΛ࣋ͪଓ ͚ɺΦϯϥΠϯʹ෮ؼͨ࣌͠ʹࣗಈతʹ ૹ৴͢Δػೳ 18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
1VTI௨ ࢈ܦ৽ฉΛ͡Ίͱͯ͠ଟ͘ͷେखϝσΟ Ξ'BDFCPPL5XJUUFSͳͲ͕͢Ͱʹ࣮ ɻϒϥβͰ1VTI௨͕ૹΕ·͢ɻ ϗʔϜը໘ʹՃ ΞϓϦͱಉ༷ʹϗʔϜʹΞΠίϯΛஔ Ͱ͖ΔɻωΠςΟϒΞϓϦͬΆ͘ىಈɻ (14ΧϝϥͳͲͷ εϚϗػೳͷΞΫηε 18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏ RAIL モデル 100ms 60FPS 1000ms 活用
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏ https://developers.google.com/web/fundamentals/performance/rail?hl=ja
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
18"Ͱ8&#ΛΞϓϦͱͯ͠ਐԽͤ͞Α͏
Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ
Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ )5.- $ +BWB "QBDIF'PVOEBUJPO
)5.- $ +BWB 4XJGU ,PUMJO *POJDUFBN /BUJWF1SPHSFTTJWF8FC"QQT Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ
Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ /BUJWF6*4IFMMʢ/BUJWFͱ8FC7JFXͷ༥߹ʣ .JYJOH/BUJWF6*BOE8FCXBDSPTTQMBUGPSN6*
Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ https://vimeo.com/55486684
Ϣʔβ·ͩϓϥοτϑΥʔϜΛબͳ͍ͷʁ 888
Ϣʔβ͚ͩ͡Όͳͯ͘ɺαʔόʹ༏͘͠
Ϣʔβ͚ͩ͡Όͳͯ͘ɺαʔόʹ༏͘͠ .PEFMͰσʔλΛܗͯ͠ ߹ʹΑͬͯ$PUSPMMFSͰ ͦΕΛల։ɾ࠶ܗͯ͠ 7JFXͰల։͢Δ 7JFXͷϨϯμϦϯάॏ͍ɻ
Ϣʔβ͚ͩ͡Όͳͯ͘ɺαʔόʹ༏͘͠ EC2��コスト1 (t2 small1台) RDS��コスト3 (t2 small 1台/ medium 1台)
���������※ チューニング前はコスト8
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά ʁ
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά ʁ
ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά
フロントエンド 動的プログラミング言語 HTTPレスポンス ࣗ༝ࣗࡏͳΤϥʔϋϯυϦϯά
"1*ͱϑϩϯτΤϯυͷଟ༷ͳؔ
"1*ͱϑϩϯτΤϯυͷଟ༷ͳؔ "1*ʹΑΓɺ ίϯςϯπͱ6*Λ ૄ݁߹ͳؔʹɻ \n^ https://speakerdeck.com/hideokamoto/javascriptdehazimeru-multi-ui-application
"1*ͱϑϩϯτΤϯυͷଟ༷ͳؔ ユーザ、コメント管理 記事の既読管理 カテゴリへのアイキャッチ画像 記事と画像 閲覧
"1*ͱϑϩϯτΤϯυͷଟ༷ͳؔ 期間の記事を取得して 文字列でメルマガ自動生成 記事と画像 メルマガ配信
41"18"ʹ͓͚Δޡղ
ىಈ͍ΜͰ͠ΐʁ (PPHMFݕࡧͰͪΌΜͱಡΈࠐΜͰ͘Εͳ͍ͷͰ 0(1λάͱ͔ͪΌΜͱಈ͔ͳ͍ΜͰ͠ΐʁ 18"͍ͬͯ·͍ͪ͡Όͳ͍ͷʁ
w 4&-&$5͍ w ෳ$16Λ༻͍ͯΫΤϦ࣮ߦ͢ΔʮύϥϨϧΫΤϦʯʢતʣ w 1PTU(*4ΛͬͯਤσʔλΛѻ͑Δʢۭؒσʔλѻ͑Δ w ܕ͕ݫ֨ͳͷͰൺֱ͕ࣜॻ͖͍͢ w ϒϩοΩϯάॲཧ͕ݰਓࢦ
18"͍ͬͯ·͍ͪ͡Όͳ͍ͷʁ
18"͍ͬͯ·͍ͪ͡Όͳ͍ͷʁ
18"͍ͬͯ·͍ͪ͡Όͳ͍ͷʁ
18"͍ͬͯ·͍ͪ͡Όͳ͍ͷʁ
͜Ε͔Βͷ1)1 で フロントエンドを描画するのが ΞϯνύλʔϯʹͳΔ͙ͦͩ͢͜ɻ
/&9545&1ϑϩϯτΤϯυΛֶ΅͏
1)1Ͱ3&45"1*ͭ͘Δͷ؆୯ <php header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONS'); if
($_SERVER['REQUEST_METHOD'] == ‘OPTIONS') exit(); http_response_code(200) ����echo json_encode($array); return; ܕ͋Δʢ1)1ʙʣ 4FSWFSMFTT'SBNFXPSL1)1ରԠʢBSBJOFTTFSWFSMFTTQIQʣ ԿΑΓॻ͖׳ΕͯΔʂ
ϑϩϯτΤϯυΛ͡ΊΔ͓͢͢Ίύοέʔδ &4Y 8FC1BDL 4$44 443 QSFSFOEFS 5ZQF4DSJQU 3FBDU "OHVMBS 7VFKT
-B[Z-PBE $BQBDJUPS $PSEPWB "QQ .BOJGFTU 'MBU %FTJHO .BUFSJBM %FTJHO
ϑϩϯτΤϯυΛ͡ΊΔ͓͢͢Ίύοέʔδ &4Y 8FC1BDL 4$44 443 QSFSFOEFS 3FBDU "OHVMBS 7VFKT -B[Z-PBE
$BQBDJUPS $PSEPWB "QQ .BOJGFTU 'MBU %FTJHO .BUFSJBM %FTJHO 5ZQF4DSJQU
ϑϩϯτΤϯυΛ͡ΊΔ͓͢͢Ίύοέʔδ $-* %FTJHO 4VQQPSU 18"$PSEPWB$BQBDJUPSϑϧαϙʔτͷ +BWB4DSJQU6*'SBNFXPSLʢશ෦ࡌͤʣ
*POJDϓϩμΫτ
*POJDϓϩμΫτ
*POJDϓϩμΫτ
*POJDϓϩμΫτ
ॻ੶ʮ*POJDͰ࡞ΔϞόΠϧΞϓϦ੍࡞ೖʯ IUUQTBN[OUP[I$QQ[
8FCσβΠφʔ͕ͰεϚϗΞϓϦΛެ։
͡Ό͋ɺ8PSE1SFTTͲ͏ͳͷ͞ʢʣ
͡Ό͋ɺ8PSE1SFTTͲ͏ͳͷ͞ʢʣ
όοΫΤϯυݴޠͰ ϑϩϯτΤϯυΛॻ͘ͷΊΑ͏ɻ ݁
None