Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Reproのビジネスサイドを支えるJS
Search
boiyama
October 25, 2019
Programming
0
170
Reproのビジネスサイドを支えるJS
We Are JavaScripters! @37th
https://wajs.connpass.com/event/150356/
の発表資料
boiyama
October 25, 2019
Tweet
Share
More Decks by boiyama
See All by boiyama
バックオフィスに行ったソフトウェアエンジニアの業務効率化事例
boiyama
1
260
2018年、IE6対応サイトを作る
boiyama
4
980
ヤバいESLint/TSLintルール作っちゃったかもしれない
boiyama
0
1.5k
チームをCQRS
boiyama
1
1.6k
フロントエンドのサーバーレス SSR編
boiyama
0
700
Serverless for Front-end Server-Side Rendering
boiyama
1
110
Learning Elm in JS
boiyama
1
550
JSでElmを学ぶ
boiyama
0
97
フロントエンドのサーバーレス SPA編
boiyama
1
1.1k
Other Decks in Programming
See All in Programming
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
220
CSC509 Lecture 14
javiergs
PRO
0
220
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
320
俺流レスポンシブコーディング 2025
tak_dcxi
13
8.2k
無秩序からの脱却 / Emergence from chaos
nrslib
2
12k
GeistFabrik and AI-augmented software development
adewale
PRO
0
280
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
160
CSC305 Lecture 17
javiergs
PRO
0
300
Microservices rules: What good looks like
cer
PRO
0
840
関数実行の裏側では何が起きているのか?
minop1205
1
650
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
150
FluorTracer / RayTracingCamp11
kugimasa
0
200
Featured
See All Featured
It's Worth the Effort
3n
187
29k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Context Engineering - Making Every Token Count
addyosmani
9
480
The World Runs on Bad Software
bkeepers
PRO
72
12k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Why Our Code Smells
bkeepers
PRO
340
57k
Unsuck your backbone
ammeep
671
58k
Agile that works and the tools we love
rasmusluckow
331
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
Reproのビジネスサイドを支えるJS Hilo Yamamoto 2019-10-25 We Are JavaScripters! @37th
Hilo Yamamoto (@boiyama) Software Engineer, BizOps div., Repro inc. JS
Background: Yoshimoto → jQuery → Backbone → React → GAS プロフィール
フロントエンドエンジニアから コーポレートエンジニアになりました でも、JSやってます
AWS IoT ボタンと Amazon Connect でトイレが詰まったら管理事務 所に自動で電話する https://qiita.com/boiyama/items/cb0594defa3b554d8086 Lambda /
Node.js を間で使用 トイレを支えるJS
• ビジネスプロセスの理解と整理 • 運用効率化・指標可視化のためのシステム構築 簡単に言うとじゃんじゃん売れる基盤作り 業務ハックと呼ばれてたりする領域 BizOpsチームのエンジニアがやっていること
• 実装難易度でいうと低いものが多い • 早く実現すればするほど事業インパクトがある プロダクト開発とは技術選定の観点が変わってくる 業務ハックのポイント
GASこと Google Apps Script は、 JSで G Suite を簡単に操作できるサービス で、そんな業務ハック界で大人気「GAS」
スプシが大体の業務を運用できる汎用性の高い CRUD UI 付 DaaS って感じなので、 スプシにGAS載っけてビジネスロジックだけ書いてアプリケーションを 作る、 というのがてっとり早くて、定番の開発手法となっている
例えば、CS向けのツールを作る場合
• Salesforceに営業活動データがあって、Auroraにツー ル利用データがある • 顧客毎のツール利用状況の一覧 • 利用状況から対応の必要な顧客を抽出して対応管理 • 非機能要件無し •
デザイン指定無し 要件
今こんな作り データはRedashに持ってきて結合させる ビジネスロジックだけGASで実装して、 一覧機能はスプシ、 対応管理機能はTrelloに任せる
Redash
Google Sheets
Trello
GAS Knowledge (あまりないけど・・)
• tsconfig の module を es2015 にする • gas-webpack-plugin を使う
• @types/google-apps-script を入れる • GASライブラリの型付け自分でやらないといけないので 極力使っていない TypeScript で書く
// Redash の query result の CSV を取得 const values
= Utilities.parseCsv(UrlFetchApp.fetch([RedashクエリAPIの CSV]).getContentText("UTF-8")); // CSVをパースした配列構造だとスプシにそのまま貼り付けられる SpreadsheetApp.getActiveSpreadsheet() .getSheets() .filter(sheet => sheet.getSheetId() === [シートID])[0] .getRange(1, 1, values.length, values[0].length) .setValues(values); Redashからスプシへのデータ出力は超簡単
// 指定シートの値を全取得 const values = SpreadsheetApp.getActiveSpreadsheet() .getSheets() .filter(sheet => sheet.getSheetId()
=== [シートID])[0] .getDataRange() .getValues(); // 1行目にキー、2行目以降に値が入ってる使い方の場合 const items = values .slice(1) .map( value => (value.reduce((previousValue, currentValue, currentIndex) => ({ ...previousValue, [values[0][currentIndex]]: currentValue }), {}) as unknown) as Item ); シートのデータはキーと値でマッピングしてる
• もう一個スプシ作るだけ • claspを使ってデプロイしわけている • clasp setting scriptId [スクリプトID] &&
clasp push テスト環境は作りやすい
こんなもんかな・・
• 使う技術が変わり、JS実装量が減っちゃった(WeJS登壇させてもら えなくなっちゃうかな・・) • 今日の話は(開発)要件が決まった後の話で、要件決まる前の仕事 がプロダクト開発エンジニアより多い • 業務要件があって、運用設計調整して、開発要件決まる • 自社のビジネスのことがわかって面白い
コーポレートエンジニアになってみて
We are hiring! DM開放中! https://twitter.com/boiyamamoto