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
gas-kastu-2
Search
takanakahiko
May 10, 2018
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
gas-kastu-2
https://gaiax.connpass.com/event/83734/
takanakahiko
May 10, 2018
More Decks by takanakahiko
See All by takanakahiko
golangci-lint の enable-all で コーディングルールを明確にする試み
takanakahiko
0
75
Vivliostyle Pub の現状と課題 #vivliostyle / Current status and issues of Vivliostyle Pub
takanakahiko
0
1.8k
思いつきで実装した web-demo-suit が そこそこバズってメディアとかにも取り上げられた.pdf
takanakahiko
1
220
オタクLODをやりませんか #uzimaru生誕LT会
takanakahiko
0
140
かしこま! 女児向けアニメのLODをみんなで作ってる話
takanakahiko
0
340
学生だけど OSS 始めちゃいました
takanakahiko
3
2.7k
GAS活 #4 「Claspを用いた モダンGAS開発」
takanakahiko
2
1.8k
学生が OSS に挑戦すること
takanakahiko
0
3.1k
プリパラで学ぶ プログラミング(&表現の極意)
takanakahiko
0
1.9k
Other Decks in Technology
See All in Technology
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
290
Tech-Verse 2026_Keynote
lycorptech_jp
PRO
0
130
Why is RC4 still being used?
tamaiyutaro
0
290
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
170
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
520
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
250
4人目のSREはAgent
tanimuyk
0
380
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
240
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
200
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
400
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
290
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Transcript
GASによる Webアプリケーション作成 Takayuki Nakayama(なかひこくん) 2018/5/10 @ Gaiax
自己紹介 2
自己紹介 - 概要 3 名前 Takayuki Nakayama (なかひこくん) ソーシャルアカウント等 •
GitHub : github.com/takanakahiko • Twitter : twitter.com/takanakahiko • Facebook : facebook.com/takanakahiko • Gmail :
[email protected]
自己紹介 - 大学 所属 • 拓殖大学 工学部 情報工学科 → 院進
• 水野研究室(知識処理) • ディジタルコンテンツ研究愛好会(立ち上げ→会長) 研究テーマ 「ACOを用いたクラスタリングにおけるパラメータ最適化」 4
自己紹介 - アルバイト(学部2年夏〜) 概要 • 組み込みシステム開発会社 アルバイトプログラマ 内容 5
所属 - インターンシップ(今年2月〜) 概要 • 株式会社エアークローゼット インターンシップ生 内容 6
所属 - コミュニティ(高校3年次〜) 概要 • 日本Androidの会 学生部 内容 7
自己紹介 - 技術同人誌頒布 8 サークル • 高尾技研(主宰) : https://takao-giken.github.io 頒布した同人誌
• GAS Automation Book • GASでWebAPIを作る本
自己紹介 - 書籍執筆 9 著書タイトル 「サーバーレスでお手軽自動化! Google Apps Script活用入門」(出版:インプレスR&D) https://nextpublishing.jp/book/9104.html
内容 • GASを用いたタスク自動化Tips • ノンプログラマでも対象 • 同シリーズ内でトップの売上
自己紹介 - 趣味 女児アニメ鑑賞 10
本題 11
Webアプリケーションとは 12 ウェブアプリケーション(Web application)は、インターネット(もしく はイントラネット)などのネットワークを介して使用するアプリケー ションソフトウェアである。多くの場合、これらのアプリケーション は、Webブラウザ上で動作するプログラミング言語(たとえば JavaScript)によるプログラムとWebサーバ側のプログラムが協調 することによって動作し、ユーザはそれをWebブラウザ上で使用す る。
(出典 : Wikipedia) ネットワークを介した サービス・アプリケーション
最近のWebアプリケーション • 最初に,サーバと通信するためのSPAを送信 • その後は,JSON等でやり取り 13 etc... etc...
GASによるWebアプリケーション 14 WebAPIのホスティング Webページのホスティング
WebAPIのホスティング 15
WebAPIのホスティング(1) Webページ等からアクセスが来たらJSONを返す. 16
WebAPIのホスティング(2) Webページ等からアクセスが来たらJSONを返す処理. 詳しく(設定等)は https://qiita.com/takanakahiko/items/e8123ee6b565c6ee8d8e 17 function doGet(e){ var json =
{ hoge:"huga" }; var content = ContentService.createTextOutput(JSON.stringify(json)); return content.setMimeType(ContentService.MimeType.JSON); }
例 - 社会性フィルターAPI(1) 文章内に良くない単語があったら「にゃーん」に置き換えるWebAPI 「大学を爆破したい」→「大学をにゃーんしたい」 18 出典:http://zenmaibane.hatenablog.com/entry/2017/05/05/190705
例 - 社会性フィルターAPI(2) 卍アーキテクチャ卍 19 「危険な語句」 「にゃーん」 ☠ 最悪な単語たち☠ 以下(酷いので)省略
例 - 社会性フィルターAPI(3) GAS側のソースコードをこうする 20 function doGet(e){ スプレッドシートの単語群を取得する処理 送られてきた文を置き換える処理 var
json = { response: 置き換えた後の分 }; var content = ContentService.createTextOutput(JSON.stringify(json)); return content.setMimeType(ContentService.MimeType.JSON); }
例 - 社会性フィルターAPI(4) https://SocialityFilter.takanakahiko.me?text=お前の家を爆発する 21 {"response":"お前の家をにゃーんする"} 詳細: https://takanakahiko.me/SocialityFilter/
Webページのホスティング 22
Webページのホスティング(1) 23 アクセスが来たらHTML等を返す.
Webページのホスティング(2) 24 アクセスが来たらHTML等を返す処理. index.htmlを用意した状態で... function doGet(e) { return HtmlService.createTemplateFromFile("index").evaluate(); }
Webページのホスティング(2) フロント側のJavaScriptからGASの関数が使える!!!! 25
Webページのホスティング(3) 26 //コード.gs function doGet(e) { //外からのアクセスに対してhtmlを返すメソッド return HtmlService.createTemplateFromFile("index").evaluate(); }
function test(){ //webページ側から呼ばれるメソッド return {‘content’:’This is test’}; } <!-- index.html --> <html> <body><span id=”hoge”></span></body> <script> google.script.run.withSuccessHandler(function(data){ document.getElementById(‘hoge’).innerHTML = data.content; }).test(); </script> </html>
例:Twitterアプリケーション(1) Reactでかっこいい感じに作りたい. 27 Twitterの認証・タイムラインの取得・ツイート
例:Twitterアプリケーション(2) それぞれが担う処理 28 • アクセスが来たらWebページ(React)を返す処理 • Twitterの認証をする処理 • TwitterのAPIを叩く処理 •
いい感じに表示する • GASの「TwitterのAPIを叩く処理」経由でツイート • GASの「TwitterのAPIを叩く処理」経由でタイムライン取得
例:Twitterアプリケーション(3) 29 //タイムラインを取得する処理 var thiz = this; gasHandler.withSuccessHandler(function(data){ thiz.setState({tweets :
data}); }).getAccessTwitter('statuses/home_timeline', {trim_user:false, count:30}); function getAccessTwitter(endPoint, payload){ //TwitterのAPIへアクセスする処理 };
例:Twitterアプリケーション(3) デモ https://script.google.com/macros/s/AKfycbzA3fiz8W2T2KHjV89XjRqA5A_GS0IXk0YG WaQz_szYCmjqnzk/exec 30
結論 31
32 つらい
宣伝 33
活動等 - イベント主宰 イベント名 • プリパラハッカソン : https://prickathon.github.io 内容 •
ファンが集まって,それに関する創作活動をする • 3回目開催決定! 34
勉強会を企画しています Q. どっちの方が興味あります? 35 GASで TwitterBotを作る GASで Webアプリを作る
End. P.S. 来年就活で困っているときは 助けてください 36