PHP と Ruby による AtCoder Beginner Contest 121
PHP の練習を兼ねて Atcorder Beginner を最近解き始めたのでログを残す。 DP が苦手でいつも C 問題が解けるか、解けないかを彷徨うレベルですが。。
今回は三完ですた。D問題はビット演算のメモ化とかするのかなあ。
A (勉強ちうのPHP)
<?php fscanf(STDIN,'%d %d',$H,$W); fscanf(STDIN,'%d %d',$h,$w); $sum = $H * $W; $sum = $sum - $h * $W; $left_row = $H - $h; $sum = $sum - $left_row * $w; echo $sum;
B (勉強ちうのPHP)
<?php fscanf(STDIN,'%d %d',$N,$M); $buy_num = 0; $money = 0; $a_list = []; $b_list = []; for($i=0;$i<$N;++$i){ fscanf(STDIN,'%d %d',$a,$b); array_push($a_list, $a); array_push($b_list, $b); } echo $money;
C(使い慣れた Ruby)
N,M = readline.chomp.split.map(&:to_i) ary = [] left = M money = 0 (1..N).each do |i| hash = {} a,b = readline.chomp.split.map(&:to_i) hash['a'] = a hash['b'] = b ary.push(hash) end ary.sort_by! {|v| v['a'] } ary.each do |set| while((set['a'] > 0) && (set['b'] > 0)) do set['b'] -= 1 left -= 1 money += set['a'] break if left == 0 end break if left == 0 end p money
D(使い慣れた Ruby)=> TLE
def f(res,i) return res ^ i end A,B = readline.chomp.split.map(&:to_i) res = A # result = (B - A) % 2 == 0 ? f(A,B) - 1 : f(A,B) # p result (A+1..B).each do |i| res = f(res,i) end j = 0 ary = [] for i in (A+1..B) ary.push(i ^ (i+1)) if (j % 2 == 0) j += 1 end p res
D (使い慣れた Ruby)=> 終わってから解いた
A,B = readline.chomp.split.map(&:to_i) if(A % 2 == 0) case ((B-A) % 4) when 1 then p 1 when 2 then p 1 ^ B when 3 then p 0 when 0 then p B end else case ((B-A) % 4) when 1 then p A ^ B when 2 then p A ^ 1 when 3 then p A ^ 1 ^ B when 0 then p A end end
kozzy の 2019/2 の振り返り
先月 の振り返り記事
先月立てた目標に対する振り返り
- TypeScript × React × Laravel な環境で簡単なアプリを作る
- △ 環境構築、文法学習までできたけどアプリはまだ
- 本を3冊以上読んで、Blog 投稿する
- ◎ 4冊ほど読めてアウトプットできた!
- 5件以上の勉強会に参加し、できる所では実況Tweet、Blog を書く
- ◎ 5件は行った上、グラレコアウトプットを開始
2月の所感
- デジタルグラレコによる視覚的なアウトプットで自身の記憶への補助になっており、学習効率が上がっていることを実感できているので、アイデアを出して応用していきたい
- 自身の行動に大きな変化を与えた1ヶ月だったかもしれない
- 業務上でも興味ある業務で他人を巻きこんで仕事ができているので非常に気持ちが良く楽しい
3月の目標
- TypeScript × React × Laravel な環境で簡単なアプリを作る
- 「脳と行動」「自分が考える数十年後の未来に向けて」をテーマに本を読み、論文風グラレコをアウトプットする
- Twitter の Follower を 300 人にする
- グラレコアウトプットを継続する
今月の記事投稿
今月の Tweet (抜粋)
何故だか、めっちゃなか卯の某店舗と間違えて自分の携帯に電話をかけてくる人が後を絶たないのだがどうしたものだろうか 😔
— kozzy (@kozzy0919) 2019年2月3日
業務上で、 https://t.co/2pBz5yCegh で読んだ内容が必要な場面が早速出てきた。まさに、「進研ゼミでやった所だ!」って感じになったので、再度詳細に読んでアウトプットに持っていきたいと思う。読書嫌いだったけど、短期間でこういった形で良いフィードバックが来ると続けられそうな気がする。
— kozzy (@kozzy0919) 2019年2月5日
コロプラ、利益率40%くらいの時に新卒で最終面接までしたから感慨深いなあ…
— kozzy (@kozzy0919) 2019年2月6日
今日は出身研究室の卒論、修論発表会リハを聴きに行く
— kozzy (@kozzy0919) 2019年2月9日
vscode 上で Jupyter 動かせたけど、操作感いまいちなので、JupyterLabに落ち着いた
— kozzy (@kozzy0919) 2019年2月10日
#laraveljpcon で「フレームワークとの付き合い方」を講演いただいた @shin1x1
— kozzy (@kozzy0919) 2019年2月16日
さんに許可をいただいたので、内容をデジタルグラレコした画像をシェアします〜。@shin1x1 さん、ありがとうございました! pic.twitter.com/azLj3D454p
#laraveljpcon で「リリース直前にLumenからLaravelに移行した話」を講演いただいた @tiwu_official さんに許可をいただいたき、内容をデジタルグラレコした画像をシェアします〜。@tiwu_official さん、講演ありがとうございました! pic.twitter.com/bP8V9UnjN7
— kozzy (@kozzy0919) 2019年2月16日
TypeSciprt の文法に慣れるため、相当久々に #AtCoder の過去問解いてみたら、恥ずかしながら動的計画法すらままならないレベルだったので簡単に整理してみた。突き詰めると時間忘れるほどやりこみそうだから、時間できたらやりたいなあ。。(画像は解像度修正) pic.twitter.com/KUj9rxSxcc
— kozzy (@kozzy0919) 2019年2月17日
本日は FiNC Tech Meetup https://t.co/36Gu2AUH0z に参加させていただきました。発表いただいた @yoshimikeisui 3, @hirota982 @OTA57 3 に許可をいただいたので、デジタルグラレコさせていただいた内容を共有します。ありがとうございました! #finctech pic.twitter.com/1Pgvb8XIcq
— kozzy (@kozzy0919) 2019年2月18日
本日は https://t.co/d49l3uLswS に参加しました!ブログ枠なので、デジタルグラレコしたものを共有します〜! @toshiyassk 3, @slum_danker 3, @inase17000 3, 安藤 3, 武田 3, @yu__ya4 3, @Fujiyama_Yuta 3, @ksyunnnn 3 ありがとうございました!内容不味いものがあれば差し戻します! #sdevtalks pic.twitter.com/hBkFvGQmvV
— kozzy (@kozzy0919) 2019年2月19日
#LTech 登壇者の皆様、ありがとうございました〜、本日の内容をドクレコ(ドキュメントレコーディング)した画像を共有します! #ドクレコ #グラレコ #機械学習 #チャットボット #データサイエンス #LIFULL pic.twitter.com/05es1J8H1A
— kozzy (@kozzy0919) 2019年2月21日
ワイもインフラ苦手・・・なので、Cloud Vendor の Managed Kubenetes
— kozzy (@kozzy0919) 2019年2月26日
はアプリ屋には助かる→わかりみ #dockertokyo
やっぱ顕在意識的にはインフラ興味あるんだけど、潜在意識的にはインフラ興味ないんだろうなぁ、自分。。。必要に駆られて学ぶレベルで頑張ろう。
— kozzy (@kozzy0919) 2019年2月26日
料理することで、栄養素をコントロールできるよってお話。料理すること自体は楽しいけど、食器洗いが面倒になって自炊が続かないマン・・・ #CookpadTechConf
— kozzy (@kozzy0919) 2019年2月27日
#CookpadTechConf 講演終了〜、ブログ枠なので本日聴講のセッションの内容をグラレコしたので共有いたします!資料は共有されるようなので詳しくはそちらを!みなさま、ありがとうございました #グラレコ #勉強会 #UX #新規サービス #デザイン #Cookpad, @mamiracle__ 3 確認よろしくお願いします〜 pic.twitter.com/LPMrQMLR9D
— kozzy (@kozzy0919) 2019年2月27日
今月のはてなブックマーク
TypeScript in 5 minutes · TypeScript“interface Person { firstName: string; lastName: string; } function greeter(person: Person) { return "Hello, " + person.firstName + " " + person.lastName; } let user = { firstName: "Jane", lastName: "User" };”
2019/02/11 18:35
www.slideshare.net
twitter.comBigQuery MLの線形モデルでKaggleのタイタニックを試した話。 #gcpja https://t.co/Kdafs2UGTM https://t.co/Uiqyi6oCB0
— Kazunori Sato (@kazunori_279) 2019年2月14日
twitter.com100いいね! | MetabaseがRedashの苦労を吹き飛ばすくらい熱い by @nobinobi_keen https://t.co/KnuUrGH6Xz
— Qiita (キータ) 公式 (@Qiita) 2019年2月18日
Developers Summit 2019 参加録
目次
- 目次
- 雰囲気
- Session
雰囲気
Session
日経電子版のマイクロフロントエンドとPWAによる改善事例
宮本 将 [日本経済新聞社]
日経電子版の技術スタック
日経電子版のフロントエンド
— ozaki25 (@ozaki25rn) 2019年2月14日
JSのフレームワークは使ってない#devsumi #devsumib
マイクロフロントエンドとは、フロントエンド on マイクロサービス
マイクロフロントエンドとは
— しょう34 (@sho_M34) 2019年2月14日
一つの画面に複数のサービス #devsumiB
日経はページごとにマイクロサービスに分割
— iotas𓆡創作支援アプリ運営中𓅬 (@tRiaeZ1) 2019年2月14日
(大変そう)
#devsumiB
日経電子版のマイクロ設計
— nori (@nori0__) 2019年2月14日
ページごとにマイクロサービスを分割。#devsumiB pic.twitter.com/3Aw90y7Ijo
Flow vs TypeScript
— kozzy (@kozzy0919) 2019年2月14日
* Flow は型推論強い
* Flow はロジェクトの設定が柔軟ではない
日経電子版では TypeScript on Babel での実装 #devsumiB #devsumi
最初からNoImplictAnyはつけない
— Shagamii (@RyuichiSakagami) 2019年2月14日
障壁が大きくて断念した経験
#devsumi #devsumiB
templateエンジンとしてのjsxの導入 #devsumi #devsumiB
— Shagamii (@RyuichiSakagami) 2019年2月14日
●恩恵
— 諏訪真一 (@suwa_sh) 2019年2月14日
・TypeScript導入
JSつらい
ミドルウェアやルートごとの処理、引き回すデータの型
コンポーネントのインターフェース
-> 静的型検査がほしい#DevSumi#DevSumiB
テンプレートエンジンとしての JSX
— kozzy (@kozzy0919) 2019年2月14日
*補完、フォーマットが効く
* 状態の受け渡しが明確
* 型でしばれる #devsumi #devsumiB
PWA
PWAは
— Yusuke (@elsa_twt) 2019年2月14日
信頼性、速さ、アプリとしての魅力
の3つがポイント #DevsumiB
AppShell
- firstPaint が高速
- オフライン時でも最低のアプリ感
- MPA でも SPA のような UX
- 日経電子版では実験中
Quicklink
- IntersectionObserer で viewport に入った a タグを監視
- 優先度別の戦略
]quicklink
— ozaki25 (@ozaki25rn) 2019年2月14日
- 画面内のaタグのリンク先を自動でプリキャッシュhttps://t.co/WUiqDx1hpf#devsumib
・quicklink
— 諏訪真一 (@suwa_sh) 2019年2月14日
画面内に入ったaタグ要素を自動でプリキャッシュ
縦にコンテンツを並べるのに向いてそう
viewportに入ったaタグを監視
優先度で分けられる
クリティカルレンダリングを邪魔しない#DevSumi#DevSumiB
quicklinkはメモリキャッシュだが、swで一元に扱いたかったのでpostMessageで渡してプリキャッシュ
— Shagamii (@RyuichiSakagami) 2019年2月14日
#devsumi #devsumiB
・TreeShaking と CodeSplitting
— 諏訪真一 (@suwa_sh) 2019年2月14日
webpack4
package.json `sideEffects: false`
ESModules の Named Exports
webpackでデバッグできる#DevSumi#DevSumiB
Critical CSS
First View に必要な CSS wのみを inline で組み込む
ファーストビューに必要なCSSをinlineに埋め込むって凄いサラッと言ってるけど、かなりめんどくさい #DevsumiB
— Yusuke (@elsa_twt) 2019年2月14日
Critical CSS
— kozzy (@kozzy0919) 2019年2月14日
* First View に必要な CSS wのみを inline で組み込む #devsumi #devsumiB
・日経電子版のCCSS事情
— 諏訪真一 (@suwa_sh) 2019年2月14日
・コンテンツや会員属性によってCSSのばらつきが大きい
・動的に出し分けられない
-> CCSSが思い
HTMLの50%前後がCCSS#DevSumi#DevSumiB
Dynamic Critical CSS Optimization
・Dynamic Critical CSS Optimization
— 諏訪真一 (@suwa_sh) 2019年2月14日
各ページごとにCCSSをビルド
fastly で Edge-side Includes CCSS#DevSumi#DevSumiB
Edge side Includes critical CSS #devsumi #DevsumiB pic.twitter.com/wwVuACwFF8
— kozzy (@kozzy0919) 2019年2月14日
今後は Lambda に全て載せてサーバレスにしていきたい
最終的にサーバレスにしたいけど、今まではLambdaにchromiumが乗せられずデバッグが厳しくて断念。でも最近はheadlessなのがあるからLambdaで動かせそう! #DevsumiB
— Yusuke (@elsa_twt) 2019年2月14日
モノリス化する Service Worker
Service Worker はモノリスになりがち
- マイクロフロントエンドな環境なら SW もマイクロサービス単位であって欲しい
- 基本的には変更が全体に波及してしまうので、予期せぬ不具合が出る可能性
ServiceWorkerがモノリス化する
— ozaki25 (@ozaki25rn) 2019年2月14日
- 修正時の影響が広くて怖い
- ServiceWorkerもマイクロサービス化した#devsumib
・ServiceWorkerはモノリスになりがち
— 諏訪真一 (@suwa_sh) 2019年2月14日
マイクロフロントエンドなら、SWもマイクロサービス単位
変更が全体に波及してしまうので、よくせぬ不具合
スコープで影響範囲を設定
-> マイクロサービスワーカー
res header の Service-Worker-Allowed#DevSumi#DevSumiB
マイクロなキャッシュ戦略
- 各ワーカーが勝手に他のキャッシュを消してしまうというケースがある
- 読み出し時に他のワーカーのキャッシュがあるならそれを使いたい
方法は2つ
- それぞれのキャッシュアイテムの所有者が誰かを管理する
- キャッシュストレージをサービスごとに切り分ける
各ワーカーが勝手に他のワーカーのキャッシュを削除
— Shagamii (@RyuichiSakagami) 2019年2月14日
- キャッシュアイテムの所有者で(res headerに)
- キャッシュストレージをサービスごとに切り分ける
workboxのライフサイクルにのせたくて後者#devsumi #devsumiB
Feature Flag
FeatureFlags for Service Worker
- ServiceWorker の RegisterPath にフラグ情報を載せる
- フラグが変われば SW が更新される
まとめ(をさらに抜粋)
- TypeScript は肩の力を抜いて取り組む
- JSXはテンプレートエンジンとしても最高
- AppShell & Quicklink おすすめ
- Edge-side optimization には夢がある
kozzyの所感
- 日経でのフロントエンドの取り組みを内製でやっているイメージはなかったが、フロントエンドの事例としても先進的で少し驚いた
- せっかく良い内容なのに、自分で自分の成果を大したことないと仰っていたのが勿体無かった(気持ち分かりみ)
- AppShell, Quicklink は触ってみようと思う
ビズリーチは新規事業でなぜKotlinを選んだのか〜企業をアップデートする「Human OS」の技術選定について〜
大谷 弘喜[ビズリーチ]
選択肢とその選定根拠って構成のセッション、なんか久々に聞いたけどスゲー為になる。 #devsumia
— ゆぅりる♪ (@yourilyouril) 2019年2月14日
ひたすら技術選定の話が続いていて非常に参考になる #devsumiA
— Yusuke (@elsa_twt) 2019年2月14日
ビズリーチの組織について
ビズリーチの新規事業は既存の組織とは別の事業体として成立させている
HRMOS
- リクルーティング
- パフォーマンスマネジメント
- エンゲージメント
クラウド型人材マネジメントツール
ビズリーチにおける人事業務フローでは、データバリデーションとデータ変換が大半。 なのでこれを RPA (Robotic Process Automation) で自動化していっている。
「マスタデータが複数あってどれが本当のマスタか分からない」
— Yusuke (@elsa_twt) 2019年2月14日
これは辛い #DevsumiA
結局大抵の業務って扱うべきデータが綺麗じゃない(=人間による解釈が必要)になっているせいで、自動化だったりの障壁になってるのよねー #devsumiA
— Yusuke (@elsa_twt) 2019年2月14日
基本方針
プロセス改善後のビズリーチの業務フロー pic.twitter.com/1JT3pvtcnq
— kozzy (@kozzy0919) 2019年2月14日
最終的にはこうしていきたい #devsumiA pic.twitter.com/oS3GDK4bYU
— kozzy (@kozzy0919) 2019年2月14日
抱えているエンジニアの属性を考えて技術を選定する #devsumiA
— しょう34 (@sho_M34) 2019年2月14日
10年メンテナンスするためにトレンドに左右されないこと
— しょう34 (@sho_M34) 2019年2月14日
ただし、変化の早いフロントエンドは除く #devsumiA
基本的には「技術トレンドに左右されない」ようにしたいが、「フロントエンドだけは例外で、世の中の変化が激し過ぎるからある程度追従しなければ」
— Yusuke (@elsa_twt) 2019年2月14日
これ皆が苦しんでる課題だよなぁ・・・ #devsumiA
「人事データは量は多くないけどバリエーションが多い」
— Yusuke (@elsa_twt) 2019年2月14日
一人の人間を構成する属性って一杯あるからね、仕方ないね #devsumiA
KVS vs RDB
KVS vs RDB #devsumiA pic.twitter.com/kSvYDZ9DiM
— kozzy (@kozzy0919) 2019年2月14日
KVS:RDBのスケーラビリティについて、Auroraとか出てきたから必ずしもKVSに軍牌が上がるかは疑問(RDBでも良さそう) #devsumiA
— Yusuke (@elsa_twt) 2019年2月14日
結局 RDB を使っている。
Aurora PstgreSQL を採用
- Scalable
App サーバ vs マイクロサービス
App サーバー vs マイクロサービス #devsumiA pic.twitter.com/Gthf46mNXC
— kozzy (@kozzy0919) 2019年2月14日
ユーザ認証:Cognito ユーザプールを選定
理由
- 自前でパスワードを管理したくない
- リスクベース認証などをマネージドサービスとして管理したい
- できれば簡単に作りたい
- GCPのプロトタイプでは Firebase
Cognito の現実
- 管理
- メール文面のカスタマイズ
- 認証の状態管理
- 認証のブラックボックス化
- アドバンスドセキュリティ
- アプリケーション開発者がやるよりは今日こ
- セキュリティの説明を求められると答えられない
Cognitで認証部分がブラックボックス化されることで便利なことがある反面、顧客からセキュリティの説明を求められた時に答えられない辛み #devsumiA
— Yusuke (@elsa_twt) 2019年2月14日
ビズリーチさん構成の最終型 #devsumiA pic.twitter.com/eBjJt811hu
— kozzy (@kozzy0919) 2019年2月14日
Kotlin の採用
Kotlin の採用 pic.twitter.com/ppCE2CRiRg
— kozzy (@kozzy0919) February 14, 2019
Javaには色々不満があるけどScalaまでいくと難しい。Kotlinはその二つの中間ぽい感じなので採用 #devsumiA
— Yusuke (@elsa_twt) 2019年2月14日
Javaからkotlinは学習コストが低い
— しょう34 (@sho_M34) 2019年2月14日
Google が androidの開発をしている事から言語の安定性も問題なし #devsumiA
kozzyの所感
- 技術採用の際の Pros, Cons が丁寧に述べられていて、今後自分が選定する場になったときのための参考になりそう
開発者の第三のキャリアパス~エバンジェリスト/アドボケイトとは何者か?~
中津川 篤司[MOONGIFT]
これまでのキャリア
- スペシャリスト:高い技術力と専門性(日本では少数派): 30代前半までは転職は問題なし
- ジェネラリスト:中間管理職的、社内調整力:幹部候補としての教育や、業界のコネ、著作があれば転職は問題なし
これまでのエンジニアのキャリアパスはスペシャリストかゼネラリストかの2択。ただスペシャリストは日本ではあまり求められない傾向があり、ゼネラリストは技術から離れてしまいがち #devsumiE
— ひらりん (@himarin269) 2019年2月14日
ピーターの法則とは、ローレンス・J・ピーターの著書「The Peter Principle」で提唱されたもので、企業などの組織に属する構成員は、その全員が自己の能力を進展させ続けなければ組織がいずれ無能化し、機能しなくなるという階層社会学の法則です。
お、最近よく見るピーターさん#devsumiE pic.twitter.com/22iokYVoQl
— 金谷拓哉/Takuya Kanatani (@torisankanasan) 2019年2月14日
— ひらりん (@himarin269) 2019年2月14日
死なないための第三の道 #devsumiE pic.twitter.com/ldH68D8ovR
— Masato Nabeshima (@nabemasat) 2019年2月14日
【エバンジェリスト/アドボケイトとは】
— 豆乳ばなな (@smb0214) 2019年2月14日
自社製品やサービスを外部の人に啓蒙する人のこと #devsumiE
製品を啓蒙するとはマーケティングである #devsumiE pic.twitter.com/7muAiLBseM
— Masato Nabeshima (@nabemasat) 2019年2月14日
エバンジェリストとアドポケイトの違い #devsumiE pic.twitter.com/AjzwAH3F9W
— kozzy (@kozzy0919) 2019年2月14日
エバンジェリストを必要とする企業 #devsumiE pic.twitter.com/fjEm4WBzNt
— Masato Nabeshima (@nabemasat) 2019年2月14日
どんな会社が必要としているのか?→プラットフォーマー、開発者向けの製品提供企業、API提供企業、開発者を雇用したい企業 #devsumiE
— Ikou Sanuki (@i_sanuki) 2019年2月14日
アドポケイト || エヴァンジェリスト
- イベントでのパネルディスカッション 6人中4人がエンジニア、2人がマーケッター出身
- きっかけは転職、社内公募、勝手に名乗ってた、ユーザ会で誘われた・・・など
アドポケイト || エヴァンジェリストの素養
- 製品に対する 愛 (これが全て)
- 開発者とのコミュニケーション能力
- 技術に対する 愛
- 技術力
細かいところ
- 健康な人
- 表裏のない人
- コミュニティ好きな人
- 人の話を聞けるタイプの人
エバの素養に加えて実際業務で必要になるスキル #devsumiE pic.twitter.com/zMVFM0ebdE
— Masato Nabeshima (@nabemasat) 2019年2月14日
マーケティングチームに所属したほうが、開発に巻き込まれて登壇できなくなったりすることがなくなる。が、技術の新しい知見が得にくくなる #devsumiE
— ひらりん (@himarin269) 2019年2月14日
登壇するのは恥ずかしい
— 豆乳ばなな (@smb0214) 2019年2月14日
・私もです!(キリッ
・聴衆はあなたのミスを期待していません。味方です。
・ミスらないよう事前練習をしっかりやりましょう!
・あなたの常識、みんなの非常識
・知識の再構築に最適です #devsumiE
「マーケティングとは自社の製品をみんなに知ってもらうこと」
マーケティングはもう広告の世界のみではない。今はエンジニアリングとの親和性が高くなってきている #devsumiE pic.twitter.com/G6vvi9dzfZ
— Masato Nabeshima (@nabemasat) 2019年2月14日
エバやアドのお仕事 #devsumiE pic.twitter.com/2CZzfOvLaC
— Masato Nabeshima (@nabemasat) 2019年2月14日
エバアドのタスク
- 認知度向上
- ユーザ登録数を増やす
- アクティブ率を増やす
- 開発者をサポートする
- 大会を減らす
- 生み出されるプロダクトを増やす
いろいろなところに出張できたり、いろいろな開発者と知り合えたり。いろんな技術と自社製品を組み合わせたり製品レベルではない開発に取り組める。楽しそうだー。 #devsumiE
— ひらりん (@himarin269) 2019年2月14日
コミュニティを探そう、参加しよう、アウトプットしよう――DevRel流、開発者コミュニティの歩き方 (1/3):CodeZine(コードジン) https://t.co/proXTg2OHv @codezineさんから #devsumiE
— 豆乳ばなな (@smb0214) 2019年2月14日
kozzyの所感
- 教える経験がこれまで多かったり、イベントでの運営が好きだったりそのような活動が自分に合っていると思っているので聞けてとても良かったセッション
- 5〜10年後のキャリアとしての アドポケイト を見据えた仕事と勉強をしていきたいと感じた
ZOZOTOWNのDWHをRedshiftからBigQueryにお引越しした話
Redshift 時代
zozoテクノロジーズさんの旧データフロー構成 #devsumiA pic.twitter.com/7oldzG15rn
— kozzy (@kozzy0919) 2019年2月14日
S3 に入れていたデータ
Data PipelineでRedshiftへのCopyと、集計クエリの実行
— たきぐち in the Cloud (@atakig) 2019年2月14日
ちょっとレガシーな感じ#devsumiA
Redshiftはノードが増えたり、データ規模が大きくなると中を分かっていないと辛いのがあるなぁ#devsumiA
— たきぐち in the Cloud (@atakig) 2019年2月14日
S3 -> Redshift への天雄には Data Pipline をしよう
BigQuery 移行の動機
ノウハウ、マネージドの観点で、移行
BigQuery移行への動機 #devsumiA pic.twitter.com/sB1L1eXywP
— kozzy (@kozzy0919) 2019年2月14日
kozzyの所感
- 普段、データ基盤に関わっていない人なので、ざっくりとしか理解できなかった
- データ基盤管理 と データ分析をコラボさせつつも分けて考えないといけないボリュームで考える事はあるよなあと再認識した
読書録 #06: このまま今の会社にいていいのか?と一度でも思ったら読む転職の思考法 を読ん6
このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法
- 作者: 北野唯我
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2018/06/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Why
- 周囲の評判もよかったため
- 転職するきっかけの一つになった本なので
- 今後のキャリアの事も考えて、備忘録をかねて
他の人の書評
所感・Let's try
- 成長産業かそうでないかの企業で働くことがキャリアに大きな影響を与えますよ。といった一見当たり前に見えて、普段業務をしていると見落としてしまうような、基本概念から小説形式で解説している本
- ポイントをかい摘んで理解、把握しておくだけでも価値がある
- 昨今のコロプラ赤字をはじめとした、スマホゲーム市場での停滞転換など、現状と合わせて考えてみるとしっくり来ると思う
- 単純な感覚としては、 xTech 系の企業が主に該当かなあ。投資家目線で就職を考えるのは非常に大切だと感じます
- 人的資産と技術資産を中心に広げられるよう、勉強会・読書への参加を続けて、登壇などできるようになりたいと思った
転職に必要なのは、情報ではなく「思考法」である
このまま今の会社にいていいのか?と一度でも思ったら読む転職の思考法 ダイヤモンド社 北野唯我
こんな人にオススメ
- 転職を考えている人
- 転職を考えていなくても、キャリアの積み方に悩んでる人
- 就活を控えた学生
・・・と言うと 20 ~ 30代くらいのほぼ全ての人に当てはまる形になると思いますが、その位読んでおいて損はない本です。
逆に、自身のキャリアの積み方について圧倒的自信がある方には不要ですw
ポイント
下記について、興味を持ったら読むことをお勧めします
読書録 #05 :「エンジニアのための理論でわかるデザイン入門」を読んで
目次
読んだ本
エンジニアのための理論でわかるデザイン入門 ThinkIT Books
- 作者: 伊藤博臣
- 出版社/メーカー: インプレス
- 発売日: 2017/09/15
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
Why
- フロントエンドエンジニアに転身する身として、基本的なデザインの流行であったり、考え方であったりを知っておきたい
- 読書録 #04 : Webデザイン、これからどうなるの?キーワードから探るデザイン動向の現在と未来 を読んで - kozzy’s blog の内容から派生して、興味を持った
他の人の書評
所感
読書録 #04 : Webデザイン、これからどうなるの?キーワードから探るデザイン動向の現在と未来 を読んで - kozzy’s blog の本では図鑑ベースでの事例解説がメインだったのに対して、この本ではプロセスに重きを置いていた
下記の1文が特に重要なので、引用
"デザイン"にセンスや芸術性は不要
エンジニアのための理論でわかるデザイン入門
デザインの大半は「知っているか、知っていないか」によるものが大きいのではないかと感じているのでこの文言に共感
- 敢えて必要なものを挙げるとすれば 興味・熱意・こだわり かもしれないなあ。デザインに限らずある程度の領域までは
- まさしく、ファッションにも目を向けろ、的なことが書かれていたがどうも興味が持てない(苦笑)
章ごとに書かれている事
第1章 これからのITシステムとデザインの重要性
- コンセプトの重要性について
- デザインの未来とエンジニアに必要なデザイン力の方向性について
第2章 コンセプトからデザインを思考するプロセス
- デザインの構成要素に一貫性を持たせることの重要性について
- ビジュアルは統一して、コンセプトに沿うことの重要性について
第3章 デザインの要 タイポグラフィについて
- 文字の太さ、フォントの種類が与えるイメージについて
- 欧文、日本語フォントの組み合わせについて
- タイポグラフィで気をつけるポイントについて
第4章 情報整理とワイヤーフレーム
- デザインとは何か?
- シナリオ、言葉、ビジュアルの重要性について
- ほんの編集やコピーライティングを学ぶ重要性について
- これからのITエンジニアに求められる事について
- UI に応用できる人間の近く法則を利用したプレグナンツの法則について
- Webサイト設計の基礎:ワイヤーフレームについて
- Webデザインの主流となりつつあるミニマルデザインについて
第5章 ビジュアルが世界観を想像する
- Webサイトの顔であるビジュアル(写真)の選び方について
- タイポグラフィのレイアウトの選定方法について
- 構図やレイアウトに用いられる三分割法について
第6章 レイアウトとスペーシングの方法論
第7章 色彩の基本と使い方
- 小・中学生の時にやったかもしれない色彩の基礎知識の振り返り
- PCCS の色彩トーンが与える印象について
- Webデザインにおける配色の決め方について
第8章 色彩配色の奥義 色彩調和とテクニック
- 細かな色彩理論の解説
- 配色における面積比率が表す印象について
第9章 デザイン実践のコツとポイント
- デザインの実践例について
- デザイナーの思考とプロセスについて
第10章 ライフスタイルとデザイン
- 普段の生活から「どう見られるかを考えること」が与えるスキル向上について
- この本のまとめ
Let's Try
- プレグナンツの法則 あたりは、基礎になりそうな上、応用もできそうなのでしっかり把握しておく
- 三分割法 についても知らなかった。これも把握しておく
- ジャッドの色彩調和論、というのもあるらしい
- 細かな制作物にもデザインを意識してアウトプットする
- 良いデザインの物をみる
読書録 #04 : Webデザイン、これからどうなるの?キーワードから探るデザイン動向の現在と未来 を読んで
目次
読んだ本
Webデザイン、これからどうなるの? キーワードから探るデザイン動向の現在と未来
- 作者: 森本友理,鈴木慶太朗,福岡陽,三宅太門
- 出版社/メーカー: エムディエヌコーポレーション
- 発売日: 2018/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Why
- フロントエンドエンジニアに転身する身として、基本的なデザインの流行であったり、考え方であったりを知っておきたい
他の人の書評
特別記事(Web担当者 Froum)
Let's Try
下記がどのようなものかは覚えておきたい。 そして参考にしたいときにこの書籍を引ける状態にしておく。
- マイクロインタラクション
- ユーザの行動に合わせて小さなフィードバックを与える技術
- フロアナビゲーション
- ページ遷移を減らし、1ページで主張したいメインコンテンツに被らないようサブコンテンツを配置してスライドさせながら魅せる表現手法
実例
インビジブルメニュー
- メニューを格納して表示させない手法
パララックスエフェクト
- 部分ごとに動くスピードや、動く方向に差をつける効果のこと
- スプリットレイアウト
- 画面を大きく分割させる表現手法
- ブロークングリッド
- 言葉の通り、グリッドレイアウトを敢えて崩して表現する手法(素人が真似すると、普通に汚くなりそう)
- ヒーローイメージ
- プロダクトなど、最も主張させたいものを大々的に表示させる表現手法
ヒーロームービー
- 臨場感や没入感を与えるような画像を大きく魅せる手法。モバイルへの配慮も重要
ベクターグラフィック
- SVGイメージのこと、シンプルな色使いと組み合わせて表現するのが相性良し
シネマグラフ
- 画像の一部分だけを動かす表現手法
エフェクト・フィルター
- マウスアクションと連動したアニメーションエフェクトのこと
-
- 活字を大きく配置して、Webページの体裁を整える技法
レタリング
- 手書きのタイポグラフィー
デュオトーン
- 2色をミックスさせるデザイン手法、さらに画像、文字などをオーバーレイ表示させる手法も流行っている
ニュートラルカラー
- 白、ベージュなどを基調とした色のことで、余白を利用したデザインなどに利用される
Webブルータリズム
- 90年代のWebデザイン、原点回帰トレンド
所感
- プレゼンするときとかにスライドに組み込めるとカッコ良さそう(そういや、マテリアルカラー・デザインは好みなので多用しがち)
- カードレイアウトとかは最近よく見るし、UIライブラリでもよく見るなあ
- 図鑑として常備しておくのに良い一冊なのではないか。(自分の場合 Kindle だから逆引きはしにくいけど)
- やっぱ美しいデザインの Webページを見ると落ち着く
この辺りを知りたい人にオススメ!
1章. UI
- ユーザに使いやすく、欲しい情報を端的に提示するためのデザインとは?
- 適切な動的な表現、フィードバックとは?
- プロトタイピングツールについて
- 3D、AR、VRなどを用いた表現事例
- LINE ライクに情報を親近感を持たせながら表現するチャットUIについて
- これからの UIデザインについて
2章. レイアウト
- モバイルでもWebでも、どんな画面サイズでも閲覧しやすい表現手法
- カードレイアウト、ブロークングリッドなどの魅せ方について
- 高速・軽量表示を実現する AMP について
- 画面遷移をさらに有効に表現する手法について
- これからのレイアウトについて
3章. グラフィック
- 見せたいものの魅せ方について
- 立体的、動的な魅せ方
- モバイルデバイスにおける見せ方で考慮すべき点
4章. タイポグラフィ
- フォントを用いたデザインで重要な視点
- アニメーション、エフェクトを交えたフォントデザインの手法
5章. 配色
- 流行の配色方法
- ビビッドカラーを採用したWebデザイン
- これからの配色の観点について
その他参考記事
RSpec によるテスト駆動開発はじめのいっぽ
目次
- 目次
- この記事は?
- Why
- 基本的な使い方
- install と init ファイルの生成
- サンプルコード
- メモ
- 書籍
この記事は?
Why
- 業務上、Rspec を使って、テストを実装する必要があったので調査した記事をとりまとめて備忘録としたい
- テストの実装に苦手意識があるので、克服したい
基本的な使い方
install と init ファイルの生成
rspec を動かす上で必要な、gem install と spec_helper,rb ファイルなどの生成を行う。
$ gem install rspec $ rspec --init create spec/spec_helper.rb create .rspec
サンプルコード
Human クラス のテストを行うコードは以下のように書く。
lib/human.rb
class Human attr_accessor :name, :hands def initialize(name="Kozzy") @name = name @hands = 2 end def alived? true end end
spec/lib/human_spec.rb
require "spec_helper" require "human" describe Human do it "named 'Koji'" do human = Human.new expect(human.name).to eq 'Kozzy' end it "has hands" do human = Human.new expect(human.fangs).to eq 2 end it "is alived" do human = Human.new expect(human).to be_alived end end
$ rspec spec/lib/human_spec.rb続きを読む
読書録#03 : 「誰も教えてくれない 質問するスキル」を読んで
目次
読んだ本
誰も教えてくれない 質問するスキル(日経BP Next ICT選書)
- 作者: 芝本秀徳
- 出版社/メーカー: 日経BP社
- 発売日: 2016/12/20
- メディア: Kindle版
- この商品を含むブログを見る
Why
- 前に買っていて、積ん読放置していたので消化したい
- 口下手で話し始めるのが苦手なので、聞き上手になりたい
他の人の書評
この本のゴール
- まずは、この書籍のゴールについて。Why, What, How が順にゴールとなっており、行動へのプロセスまで述べられている。
本書のゴールは、以下の4つを満たすことです。
- 質問力を高める4つの要素を理解する
- 何を質問すべきかを知る
- どう質問すべきかを知る
- 普段の練習方法を知る
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
所感
質問をする "Why" から定義し直す事で、メリットを明確にしたのちにそれを運用するための "How" などを紹介していく構成。どちらかといえばロジカルシンキングや、ファシリテーションに対する考え方を「問いかけ」を主軸にして展開している本。
「
口下手で話し始めるのが苦手なので、聞き上手になりたい
」みたいな自分の目的とはずれてはいたが、業務上のスキルとしては重要そうな視点が多く述べられている。テーマがテーマなので他の書籍にも書かれていたような内容も重複はあるが、基本を抑えるという点では読んでいて損はないかなと感じた。ただ、プロマネについてのお話があるのははタイトルからは想像もつかない。ので、その部分は現状優先度が高くないので軽く飛ばした。(買う前に確認しとけ、去年の自分w)
ファシリテーションについては、今流行り?つつあるグラレコ(グラフィックレコーディング)とかにも関係ありそうなスキルな気がする。企画的な活動にもたまーに、取り組んでいることから、このようなスキルも必要だと思う。けど、本業じゃないから優先度は低いかなあ・・・
Let's Try
- 「質問は相手の思考を促し、関係を構築するため」この目的を意識するだけでも持ち帰る価値があるかなと思う。まずは Why を強く意識しないと行動には移せないので。マネージャーを見据え始めたら、また読みたいと思う。
こんな疑問をもつ人にオススメ
- 質問する理由は何か?
- 質問するにはどのような視点が重要か?
- 要求の理解が難しい理由は何か?
- マネジャーの役割は何か?
- どんな質問をすれば良いか?
- どう質問しているか?
- 良い議論とは?
- どのように議論をファシリテーションするべきか?
- ファシリテーターの役割とは?
疑問に対する自分の考えと引用
質問する理由は何か?
- 自分は「情報を集めるため」ぐらいしかパッと思い浮かばなかった
- 思考を促す、関係を構築するという視点は確かにそうだなと思うと同時に、1人(少人数)で仕事している場面が多いことが原因かもなあ、なんて感じた。
質問するのは何のため?
- 情報を引き出す
- 思考を促す
- 関係を構築する
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
質問するにはどのような視点が重要か?
- これまた、自分は「わかりやすいか否か」というイメージしかなかった。
- 端的にいうと、「つまり」を捉える思考(So What)、How、Why、加えて 巻き込みの視点が必要と理解した。
質問するスキル 4つの要素
- 抽象化思考
- 問いかけ
- フィードバック
- 議論の見える化
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
要求の理解が難しい理由は何か?
- 状況にはよるが、言葉に隠れた見えない意図が思考の中には含まれているから?
- だいたいあってる、思い込みなんかも、要因の一つのよう。
なぜ、要求の理解は難しいのか?
- 言葉の壁
- 抽象度の壁
- 意識の壁
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
マネジャーの役割は何か?
- 「チームの全体最適化のためにあらゆる手を尽くすこと」かなあと感じた。そういった視点では、この本に書かれている内容と近いかなと思う。
チームや部署、メンバーや部下が機能する「状況」を作り出すこと
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
どんな質問をすれば良いか?
- 状況にはよるが、天気の話・・・とか?w
- Yes か No かで答えられる質問が良いとかよく聞くような(クローズドクエッション)
具体的な質問から始める
- いきなり抽象的な質問をしても答えにくい
- 具体的な質問で会話を温めてから、抽象的な質問をする
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
どう質問しているか?
- 基本、そんな意識はしていないかなあ。コンテキストにあった話をしようと心がけるとか、話をぶった切ったりするときは、前置きを入れるとか、その程度ですかね。
質問のコツ
- 直接、問題解決をしない
- 問題解決のアプローチを一緒に考える
- 継続的なプロセスの中で働きかける
- 具体的な質問から始める
- 5W1Hで質問する
- 相手が話し終えてから質問する
- 相手を生身の人間として尊重する
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
良い議論とは?
- 目的が定まっていて、なおかつ、多くのアプローチから意見を集められるような議論。そして、発散しないこと。
- 遠からず、近からず。各々にメリットがある議論が良い議論のようだ
- そういや、よく「理解はするが腹落ちしない議論だった」、みたいな話をきくw
- このような議論じゃないのが、無駄な議論、なのかもしれない
良い議論の条件
- 思考が深まる
- 視点が増える
腹落ちが得られる
→ コミットメントを引き出し、行動を促す
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
どのように議論をファシリテーションするべきか?
- 議論を他人に対して、理解しやすいように容易にする
- ざっくりとしたイメージは合ってた。ゴールの定義からの逆算しつつの、抽象化アウトプットと理解
ファシリテーションのプロセス
- ゴールの設定
- 問いを立てる
- プロセスを設計する
- 発言を咀嚼、整理し、見える化する
- 結論を共有する
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
ファシリテーターの役割とは?
- 議論に対して十分に理解すること、それを端的に表現すること。
- 間違えではないが、ここでは「議論のコントロール」と「具体」と「抽象」の行き来が役割とされていた
ファシリテーター 4つの機能
- 論点を維持する
- 言いたいことを一言でまとめる
- 曖昧な表現を具体化する
- 議論を図式化して、空中戦を避ける
誰も教えてくれない 質問するスキル (日経BP Next ICT選書)芝本 秀徳
2019/1 の振り返り
1月の所感
- fin-py のもくもく会中の思いつきで突然ブログ始めたら、意外とモチベーションが保てたというとてもいい感じの月になった(小並)
- 去年から勉強会への参加が多くなり、今月も新しく知り合えた人が増え、非常に有意義な月となった(中並)
- 積読の解消が始まった(修羅の道)
2月の目標
- TypeScript × React × Laravel な環境で簡単なアプリを作る
- 本を3冊以上読んで、Blog 投稿する
- 5件以上の勉強会に参加し、できる所では実況Tweet、Blog を書く
1月 Blog の振り返り
目指すは脳筋エンジニア💪
これまで、Evernoteとかで 記事のstockをしてたけど、暫定的にキュレーションしてみた。 試行錯誤してるので、このやり方を続けるかは考え中。普通にtweetでいいかな。
Output大全 の 樺山先生の書籍。「心がソフトウェアなら脳はハードウェア」という kozzy の持論から興味を持った一冊。不器用な性格なので、要領よくなりたい。(願望)
業務で必要になることから TypeScript について学んでいくぞっ、て記事。
1月 Tweet の振り返り
ただし、大したこと呟いてない
本日は https://t.co/AraBbZEnIA に参加です
— kozzy (@kozzy0919) 2019年1月13日
Repro さんの勉強会に参加した。Repro Tech Handson は フロント系しか参加していないが毎度のこと講師の方の作る資料の質が高い 👀
購入done. 読むぞ〜 #reprotech 実践Expo React NativeとFirebaseで、SNSアプリを最速ストアリリース! (NextPublishing) 前田 翼 https://t.co/eRGB4zaSfD @amazonJPさんから
— kozzy (@kozzy0919) 2019年1月13日
React Native での App を作りたいと考えて、Repro Tech Handson で推奨の本を購入した。
今日は Bonfire Design に参加! #4 https://t.co/EGZJ4HE19I #yjbonfire
— kozzy (@kozzy0919) 2019年1月16日
AR フロントエンド についての LT 交流会、ヤフオクの荷物小包をメジャーの如く測定するのはべんりだと感じた。
今日はこちらに参加 https://t.co/0x6KanDNTM #yjbonfire
— kozzy (@kozzy0919) 2019年1月24日
フロントエンドのパフォーマンス改善についての LT 交流会、端的にいうとパフォーマンス改善するには仮説立てして、計測ツール使って、地道に泥臭く遅い要因を潰していきましょう、みたいな感じでした
これから TypeScript を学ぶためのだいいっぽ
この記事は?
- TypeScript についての記事をまとめている
Why
- TypeScript を扱ったフロントエンド実装が増えていると聞く
- なので、TypeScript とはどのようなものなのかをまずはリサーチしたいと思ったので、まとめる
まとめ
TypeScript とはどんな言語か
- マイクロソフト製のオープンソースなプログラミング言語
- クラスベースのオブジェクト指向
- JavaScriptと互換性を持つスーパーセット
- コンパイルすると、JavaScriptのソースコードになる
- 間違った型の代入を防げる(静的型付け)
参考元
引用メモ
function Person(name) { this.name = name; } Person.prototype.say = function(message, count) { for (var i = 1; i <= count; i++) { console.log(this.name + " says " + message + " " + i); } } var person = new Person("Bill"); person.say("Hello!", 3);
TypeScript
class Person { constructor(private name: string) {} public say(message: string, count: number) { for (let i = 1; i <= count; i++) { console.log(`${this.name} says ${message} ${i}`); } } } const person = new Person("Bill"); person.say("Hello!", 3);
TypeScript では JavaScript のコードをそのまま使えます。ループや条件分岐、関数呼び出しなどの JavaScript の構文はそのままで、それに追加して静的型付けやクラス宣言ができるようになっています。
Wikipedia
TypeScript
TypeScript はマイクロソフトによって開発され、メンテナンスされているフリーでオープンソースのプログラミング言語である。TypeScriptはJavaScriptに対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えた厳密なスーパーセットとなっている。C# のリードアーキテクトであり、DelphiとTurbo Pascalの開発者でもあるアンダース・ヘルスバーグが TypeScript の開発に関わっている。TypeScriptはクライアントサイド、あるいはサーバサイド (Node.js) で実行されるJavaScriptアプリケーションの開発に利用できる。
言語の特徴
- TypeScriptはJavaScript (ECMAScript 5) に次のような言語機能の拡張を加えたものである。
ECMAScript 6由来
- クラス
- アロー関数式(ラムダ式)
- オプション引数、デフォルト引数
- let, const
- テンプレート文字列 : 文字列内への変数埋め込み
- モジュール
- for/of
- 分割代入
- Symbol
ECMAScript 7由来
- デコレーター
- Async/Await
独自
- 型注釈(変数、引数、戻り値などの型宣言)とコンパイル時の型チェック
- 型推論、型ガード - if文の instanceof などを利用した型推論
- インタフェース
- 列挙型
- Mixin
- ジェネリック
- 名前空間
- タプル型
- 和型(英語版), 交差型(英語版)
- 型エイリアス
構文的には、静的型付けやクラス、継承、インタフェースのようなオブジェクト指向、名前空間などの機能を追加する、ECMA-262 言語標準のマイクロソフトによる実装である JScript.NET と TypeScript はよく似ている。
TypeScriptを導入する前に『覚悟』したほうが良いこと 4項目
- 楽 ≒ 簡単
- TypeScriptは現状「別に使う必要はない」ツール
- いきなり高めの型リテラシーを求められる
- 初速が出ない
- 採用が難しい
- 使いこなせなければ存在自体が負債になりかねない
TypeScriptを導入する前に『覚悟』したほうが良いこと 4項目 - タオルケット体操
より
書籍
- これらを踏まえた上で、本屋でチラ見した時にテスト駆動開発の章もあった下記の本を読み進めたいと思う
TypeScript実践プログラミング (Programmer's SELECTION)
- 作者: スティーブ・フェントン,鈴木幸敏,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/23
- メディア: 大型本
- この商品を含むブログ (1件) を見る
読書録 #02:「脳を最適化すれば能力は2倍になる」を読んで
脳を最適化すれば能力は2倍になる 仕事の精度と速度を脳科学的にあげる方法
- 作者: 樺沢紫苑
- 出版社/メーカー: 文響社
- 発売日: 2016/12/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Why
- 仕事におけるモチベーション維持、生産性向上のために人間の脳の側面から理解することが有効と日々感じていたため
他の人の書評
感想
モチベーション面、健康面での行動について、脳科学的な視点で分泌される脳内物質に焦点を当てて解説している本。こうした方がいい、といった行動自体は、他の本でも言われている内容のものも多いだろうが、その原理から意識した方が行動しやすいという人にはオススメな本。仕事上のモチベーション、睡眠などに問題が無いと思っている方は読む必要は無いかも。
Let's Try
- 自分の出した成果を卑下せず誇張して喜び、ドーパミンを生成(自分の中で)
- 煮詰まった時には気分転換に軽く jog + 深呼吸などを取りいれる
- 光で目覚めるよう、起床予定1時間前に目覚まし光時計を導入しセロトニン生成
- 夜、湯船はぬるめにリラックスを意識して、アドレナリンを抑える
- 夜、歯磨きする30分前くらいの GABAチョコレート 摂取で睡眠とエンドルフィンを生成
- 圧倒的感謝を意識して、エンドルフィンを生成
Yahoo Japan Tech Conference 2019 参加録
Yahoo Japan Tech Conference 2019
会場の様子
Yahoo JAPAN Tech Conference
— kozzy (@kozzy0919) 2019年1月26日
2019 にきています! #yjcf pic.twitter.com/m4nxvWxqFl
聴講した講演の Summary
ライブクイズ「ワイキュー」を生み出した"内因的モチベーションドリブン"/ワイキューが目指した"楽しい時間を作るデザイン
善積 正伍 / 染矢 沙織
メディアカンパニー メディア統括本部 メディア本部
www.slideshare.net
善積さんパート
🎉ヤフーがワイキューをやる理由
— Shoco Sato (@satoshoco) 2019年1月26日
・いままでにない利用想起への挑戦
・新たな利用者層へのリーチ
・メディアから行動するきっかけ作り#yjtc #yjtcA
スマートフォン市場の頭打ち、アプリのインストールコストの増大によって戦いの場は単体から全体に変わっている #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
「内因的モチベーション」でアプリを使ってもらって、「内因的モチベーション」で開発も進めていきたい #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
自身のミッション、プロダクト、会社のミッションの重ね合わせ大事 #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
プロダクト と ペインポイント(こういう場面で不便) の関係性がわいキューには <ない> ...!ので、MLP(Minimum Lovable Product)による仮説検証を進めた #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
MLPによって、3日間で計2000人がルームに参加、ミーティングが中断(いい意味で)、フロアがざわつく(いい意味で)といったモーメントを生み出すことができた。 #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
小さくても成功体験はモチベーションあがる。自信にもつながる#yjtcA #yjtc
— じょみお (@joooi13) 2019年1月26日
社内ワイキューは何百人もの人が同じオフィスで同時にワイワイしてるのが楽しくて、大きな会社の強み感じた #yjtc #yjtcA
— Kazumasa Kumamoto (@kumamo_tone) 2019年1月26日
「生配信」「時差との集計」「負荷」「WebView」「データの堅牢性」・・・多くのコンポーネントが複雑に絡むことから、リリース時期を見直し。リリース延期に伴い、「過去の成功体験も時が経てば慣れる」というモチベーションの賞味期限があることを実感。 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
やらなくてもわかること,やらないとわからないことは事前に分解してMLPを組み立てる #yjtc #yjtcA
— おっち (@ottijp) 2019年1月26日
細かい仮説検証を通じて、プロダクトの質だけでなくて、リリース前に成功体験をチーム全体で積むことになり、内因的モチベーションの向上につなげた #yjtc #yjtcA
— Kazumasa Kumamoto (@kumamo_tone) 2019年1月26日
成功体験の因数分解もPMのお仕事。みんなのモチベーションを考える。小さな成功体験をさせてあげて、モチベーションをあげ、開発スピードをあげる。 MLPは仮説検証でもあり、チーム育成でもある。メンバーのモチベーションまで設計する。#yjtc #yjtcA pic.twitter.com/pwgpfSk8XV
— Shoco Sato (@satoshoco) 2019年1月26日
MLPは仮説検証でもあり、<チーム育成>でもある。チームマネジメントする上ではメンバーのモチベーションを併せて考えることまで設計する。(マネージャーの仕事って大変だなあ・・・) #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
まとめ:内因的モチベーションドリブンによって仮説検証とチームビルディングの両立、マイルストーンの最適化、モチベーション伝播によるスピードアップ、心が折れない拠り所の確立、といったメリットはあった。でもモチベーションは人それぞれ…! #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
染矢さんパート
引き続き、ワイキューのUI/UXデザイナー 染矢さんのお話😉
— Shoco Sato (@satoshoco) 2019年1月26日
ワクワクとドキドキを共有することができる、パーティをモチーフとしてデザイン🎉パーティ会場を意識🎉#yjtc #yjtcA pic.twitter.com/mBfNkXpLri
パーティー会場の構成要素には「食事」「テーブルセッティング」「司会進行」「ウェイター」といったものがあるように、わいキューにも「問題」「ビジュアルデザイン」「MC」「台本」といった構成要素をセット。 #yjtc #yjtca
— kozzy (@kozzy0919) 2019年1月26日
ユーザー体験って結局いろんな人が考えて意見を出すべきだと思うんだ(小声)#yjtca
— DANCING BURNING SOUL (@onira666) 2019年1月26日
ライブ動画配信サービス「ワイキュー」の作り方 〜優れた社内技術で実現する、少人数のサービス開発〜
石井 直矢
メディアカンパニー メディア統括本部 メディア本部
www.slideshare.net
Yahoo!Inc由来のYUIから、React with Redux で書き換えた。 #yjtc #yjtcB
— Yohei TSUJI (@crossroad0201) 2019年1月26日
社内プラットフォームを利用しているため、リバースプロキシといったサービスの開発に注力できているため、3人での開発が実現できている。#yjtc #yjtcB
— kozzy (@kozzy0919) 2019年1月26日
HLS = HTTP Live Streaming 動画プラットフォーム #yjtc #yjtcB
— こまっち@クラウド(インフラ)仕事希望! (@komacchi_u) 2019年1月26日
[https://twitter.com/kamykn/status/1089057813953884161:embed]
#yjtc #yjtcB https://t.co/pQZb402oSA
— しばいぬ (@shIbaInu42) 2019年1月26日
ワイキューの裏側ではCassandra, Oracle, Redis などのストレージを使用。これも社内プラットフォームで数クリックで運用可能な状態に持ってける(かなりフロントエンド開発に集中できそうな環境・・・!) #yjtc #yjtcB
— kozzy (@kozzy0919) 2019年1月26日
#yjtcB CassandraとかRedisとか。OracleExadataとかヤフーでよく使ってる模様。
— せのお@サブ (@senooken) 2019年1月26日
web開発とくゆうのソフトなのかしら。
メッセージキューにあるさ?というのを使っていて貢献もしているとか。
ポイントの配布処理はMessage queueに保存しておいて、サーバリソースに余裕があるときに逐次処理。ポイントに関わるデータはより堅牢なOracleに保存している。#yjtc #yjtcb
— 1coin (@1coin178) 2019年1月26日
ベースプラットフォーム(インフラも含め)は、すでに作られているから、フロントエンドエンジニアは開発に集中できる。ベースのインフラは独自DC?? #yjtc #yjtcB
— こまっち@クラウド(インフラ)仕事希望! (@komacchi_u) 2019年1月26日
・プロフェッショナルとして楽しく価値を発揮する。
— Yohei TSUJI (@crossroad0201) 2019年1月26日
・ユーザのニーズ、会社の要求、自分の得意/興味 の3つが重なるところでバリューを発揮できる。#yjtc #yjtcB
#yjtcB 大企業特有のやり方だな。プラットフォームを用意して、部門を分けて分業するの。細分化してその道の専門家を集めて投入するの。
— せのお@サブ (@senooken) 2019年1月26日
効率はいいのかもしれないけれど。
今回は質問したいことないか。
役割がしっかりと分かれてそれぞれのモチベーションで開発している #yjtc #yjtcB pic.twitter.com/8G0Wcgv5ec
— ひでお (@dehio_) 2019年1月26日
豊かなスポーツライフの実現を目指す、スポーツナビのシステムアーキテクチャ
北村 央斗
メディアカンパニー メディア統括本部 バーティカルメディア本部
www.slideshare.net
スポーツナビ https://t.co/PE0JkRNwES #yjtc #yjtcB
— kozzy (@kozzy0919) 2019年1月26日
スポナビはデータ提供元とデータ連携システムで連携している。入稿元の数だけプラグインがある #yjtc #yjtcB
— ひでお (@dehio_) 2019年1月26日
スポナビのお話。DBは競技ごとに用意されていて、
— じょみお (@joooi13) 2019年1月26日
競技に特化した情報を提供しやすくなっている
#yjtc #yjtcB
プロ野球速報システムは、Redis & Node.js / https://t.co/Z7WqEFAvyW で実現されている #yjtc #yjtcB
— kozzy (@kozzy0919) 2019年1月26日
プラグインは独立性が高い分、共通化が難しい作りになってしまっている。ひとつ修正するために3箇所も修正が必要となってしまっている #yjtc #yjtcB
— ひでお (@dehio_) 2019年1月26日
スポーツイベントで盛り上が理に応じて大量のアクセスが発生する。これに対応するためにChefを利用して、負荷を予測した上で仮想サーバの自動デプロイを行った上で負荷分散、増強を行うようにしている(スケールアウト、スケールアップ) #yjtc #yjtcB
— kozzy (@kozzy0919) 2019年1月26日
#chef を利用して、仮想サーバの構築を簡略化。
— こまっち@クラウド(インフラ)仕事希望! (@komacchi_u) 2019年1月26日
オートスケーリングが重要になってくるんじゃないのかな。アクセス数の解析もIoTで解析してもいい気がする。
#yjtc #yjtcB
拡張性あるデザインシステム構築から挑む、GYAO!のウェブリニューアル
浜田 真成
#yjtcA リファクタリングばかりやってた人の模様。
— せのお@サブ (@senooken) 2019年1月26日
GYAOは未来に向けて刷新している。
GYAOは公式無料動画サービス。実は古い。ヤフーに統合されて十年。
大きく2個やる。
1. レガシーシステムからの脱却。モノリシックコードの改善
2. 事業目標の達成
ミッション:レガシーWebシステムからの脱却、既存プロダクトを維持して事業目標を達成する。 -> これをどう達成するか? #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
#yjtcA チームは5-6人。フロント一人。
— せのお@サブ (@senooken) 2019年1月26日
敵1. 継ぎ足しでできた膨大なコード。ロジックの分散。
敵2. テストの欠如と手動リリース
敵3. HTMLの非セマンティック
敵4. UIの非一貫性
敵5. 表示速度
敵6. 仕様の欠如
敵7. 複雑なワークフロー
Webアーキテクチャの一括リプレースをすると二重運用が発生するため、少人数の現場では厳しかったので、段階移行の方法を採用した #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
#yjtcA アーキテクチャの段階移行。
— せのお@サブ (@senooken) 2019年1月26日
ここは参考になるかも。
分解、個別改善、全体最適。 https://t.co/HkQqya0dZk
#yjtcA ドメイン駆動設計で、クリーンアーキテクチャー。そしてAtomicDesign。
— せのお@サブ (@senooken) 2019年1月26日
ドメイン駆動設計をどう勉強したか質問しようか…
Phase1. AtomicDesign をベースとして、表示要素を分解しコンポーネント化
— kozzy (@kozzy0919) 2019年1月26日
Phase2. 各要素をリファクタリング、デザインシステムの導入
Phase3. PaaS環境への移行/自動化/SPA化
cf. Atomic Design https://t.co/bacCSfSj7F… #yjtc #yjtcA
パフォーマンス指標として、遅延とユーザ感覚をマッピングした RAILモデルがある。これをもとに、サービスの特色を入れた独自指標を定義 FYI. https://t.co/HiT3dYYq1Q #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
#yjtcA パフォーマンス指標のRAILモデル。ユーザーをベースとした指標。
— せのお@サブ (@senooken) 2019年1月26日
初期表示。FMP/TTI
クリティカルレンダリングパス。
webpackで圧縮してCDN配信。
CriticalCSS
AMPを使うようにしてパフォーマンス改善#yjtc #yjtca
— ozaki25 (@ozaki25rn) 2019年1月26日
コンポーネント分解は GeneralElectric社で使用されている Predix Design System (FYI https://t.co/q6i8KJ4SiR) を踏襲して、Page/Layout/Components/Basic として定義 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
コンポーネント分解は GeneralElectric社で使用されている Predix Design System (FYI https://t.co/q6i8KJ4SiR) を踏襲して、Page/Layout/Components/Basic として定義 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
ポイント
— kozzy (@kozzy0919) 2019年1月26日
1. 分類したコンポーネント間でのスタイルの影響を階層ごとに閉じること
2. 一意な出力を JSON-Schema で定義することで、フロント/バックで同時並行で開発#yjtc #yjtcA
<ピュアみ by @kaidempa>
— kozzy (@kozzy0919) 2019年1月26日
同じデータを入れたら、必ず同じ表示となるコンポーネントを作成すること(スナップショットテストの実現ができる) #yjtc #yjtcA
#yjtcA データ型をJSON SCHEMAで表現することで、stubの生成や分業を補助。
— せのお@サブ (@senooken) 2019年1月26日
次にデザインシステム。
マテリアルとかいろいろある。
これまでのワークフローだと、デザインやったり仕様作ったりで、間に障壁があると止まる。
デザインシステム作成のポイント
— kozzy (@kozzy0919) 2019年1月26日
1. 常に「コンポーネント」の粒度で考える
2. 「信頼できる唯一の情報源」を作る
3. UI/UX の「意図」を残していく
4. 小さく初めて徐々に広げる#yjtc #yjtcA
組織を変えるために・・・
— kozzy (@kozzy0919) 2019年1月26日
1. 組織での運用を考える
2. システムの考え方を普及させる(最も難しい、担当ごとのメリットを明文化するようにした)
3. システムを学ぶバック体制 #yjtc #yjtcA
# Web 刷新のポイント
— kozzy (@kozzy0919) 2019年1月26日
* 技術洗濯と移行プロセスを見極めよう
* デザインシステムによってプロセスを構築する #yjtc #yjtcA
CtoC配信サービスのバックエンドからiOSアプリまで ~ヤフオク!ライブの全貌とXP開発~
出水 厚輝 / 大西 智也 / 山下 真一郎
www.slideshare.net
出水さんパート
1. サービス紹介とバックエンド
— kozzy (@kozzy0919) 2019年1月26日
2. iOS アプリ
3. 分析の取り組み
4. 開発手法(ライブコーディング付!) #yjtc #yjtcA
ヤフオクって20年近く続くサービスなんだ…割とながいんだね!?#yjtc #yjtcA
— いりあ (@elsa3333) 2019年1月26日
ニコ動みたいにコメント流しながら、リアルタイムコミュニケーション、リアルタイムオークションができるのがヤフオクライブ。楽しそう #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
プッシュ機能の実現方法、HTTPポーリング or WebSocket。ヤフオクライブでは、プッシュ機能でも Redis を pubメッセージング × WebSocketを用いて実現 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
redis は ただのオンメモリキャッシュストレージじゃないで! -> リアルタイム処理の中心となる通信経路としても利用できる #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
マイクロサービスアーキテクチャにすることでのメリット
— kozzy (@kozzy0919) 2019年1月26日
1. 多人数での並行開発が容易に
2. 各プログラムを小さく単純に保てる
デメリット
1. サーバー間の依存性の管理が複雑化#yjtc #yjtcA
機能を分散することで、そこだけ隔離みたいなこともできるから小さい構成でも有用ということか(あってるか不安)#yjtc #yjtcA
— いりあ (@elsa3333) 2019年1月26日
大西さんパート
HTTP Live Streaming を利用してリアルタイム性を実現。遅延があるので、これを考慮してサービスを設計している #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
アニメーションは Core Animationでの自前実装, Lottie(ライブラリ)よる実装を使用している FYI. https://t.co/Do5qjZXi9w #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
Yahoo 全社的にデータドリブンな開発が推奨されている。YJVOICEという音声認識技術を利用して Speech-to-Text を実現してキーワード抽出、形態素解析を行なってデータを収集、これをサービス改善に繋げて行きたい #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
山下さんパート
Yahoo 全社的にデータドリブンな開発が推奨されている。YJVOICEという音声認識技術を利用して Speech-to-Text を実現してキーワード抽出、形態素解析を行なってデータを収集、これをサービス改善に繋げて行きたい #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
エクストリームプラグラミングのうち、ペアプロミングとテスト駆動開発が特に効果が高かった。具体的にはリリースの回数が増加、不具合数が減少。そして、属人化の軽減が実現できた。(すげー) #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
テスト書く必要ありますか?
— ozaki25 (@ozaki25rn) 2019年1月26日
- 未来に渡ってコードを書くにはクリーンでなければならない
- そのためには常にリファクタ
- そのためにはテスト#yjtc #yjtca
ペアプロによって、書くコードの量は低下し、アウトプットの質と量は向上する。そして、永続的に素早く開発するためにテストを書く。 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
820Labsと呼ばれる iMac, 昇降デスク完備の環境で画面をミラーリングしながらペアプロするという素敵な環境。事務作業とかもペアでやっている。作業効率下がりそうという印象より、モチベーション保てて効率的にも、心理的にも良さそう。 #yjtc #yjtcA
— kozzy (@kozzy0919) 2019年1月26日
Bonfire Frontend #3 190124
Bonfire Frontend #3 190124
技術刷新から考えるWeb開発のプロダクティビティ改善
竹野 峻輔 / Retty 株式会社
世はフロントエンド戦国時代#yjbonfire
— sasurau4 (@sasurau4) January 24, 2019
アプリケーションの主体がサーバーからフロントへ。フロントのモデルが変わってきた。
— うだやん (@udayan28) January 24, 2019
#yjbonfire
- Rettyの現状、モノシリック & カオティック
オッ、Retty リニューアルにおける技術選定のエモ話っぽい展開になりそうだ #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
短期的にパフォーマンスが上がっても中長期的で継続に失敗する
技術刷新として、バックエンドを刷新していく方針とした
パフォーマンス改善を持続的に行うための土壌を築いていく取り組み
Rettyなぜリアーキテクチャ?
— ozaki25 (@ozaki25rn) January 24, 2019
- パフォーマンス改善を持続的に行うため#yjbonfire
パフォーマンス改善を健全に継続・運用するためにプロダクティビティを改善すべし #yjbonfire
— つな (@ysktsuna) January 24, 2019
- リアーキテクチャ = プロダクティビティ改善のためにやる
- 1.凝集化と分割:システムの構成要素の役割の再整理
- 2.持続的な変更可能性の確保:ここの開発負担の軽減
凝集度/結合度は アーキテクチャのレベルでも重要 #yjbonfire
— maxmellon (@maxmellon_9039) January 24, 2019
どうやってプロダクティビティを上げていく?
- 1.コラボレーション:多角的な視点でアーキテクチャを整理する
- 2.親和性:チームとして力を集約する
変化が激しい時代では有効だと思っている技術もすぐに古くなっていく危険性があるからいつでも捨てて楽に変更できるような体制にするのが大事だな #yjbonfire
— Naturalclar (@natural_clar) January 24, 2019
プロダクトもチームも一緒に作り変えて行く。ここだ。。。 #yjbonfire
— shotaCoffee (@shota_coffee) January 24, 2019
「良い問題設定は様々な解決を与えてくれる」、いやほんとそれですなぁ #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
チームも作り変えると考え方が変わりそうなので良さげ
— うだやん (@udayan28) January 24, 2019
#yjbonfire
ユーザログ機構をフロントエンドにうまく統合する
Retty、Vue.js使っている #yjbonfire
— Oyama_Michinoku (@yamanoku) January 24, 2019
- データの人がフロントの人に開発サイクルのコンテキストを共有し、相談することで、データの流れ方を基準に役割を分けるとうまく分割できた
- コンポーネントを汚さないログ設計が可能になった
アプリケーションデータは親から孫へ、ユーザイベントデータは孫から親へ #yjbonfire
— se1yn (@backer0000) January 24, 2019
フロントエンドとバックエンドの共同作業
sakito氏 @sakito 僕たちフロントエンドはデザイナー、バックエンド、PMとコミュケーションとって仲良くすることで設計が洗練されるのだ!!#yjbonfire
フロントエンドとバックエンドの共同作業
— Naturalclar (@natural_clar) January 24, 2019
技術選定をチームと共有、知識の伝搬。
うちも毎週の勉強会とかがそれにあたるなー#yjbonfire
まとめ
- プロダクティビティ=ヒト×モノ
- 技術的な分割 ≠ 安易な責任の分割
技術的な分割 = 安易な責任の分割とせずに、いいかんじに越境しながらやっていく。いい〆だった。 #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
フロントエンドとバックエンドがそれぞれの境界を超えて協力できればきれいな設計になるというお話…でいいのかな? #yjbonfire
— くりむ🌖 (@klim0303) January 24, 2019
Blog
一休.comのフロントエンドパフォーマンス改善
宇都宮 諒 / 株式会社一休
スライド
パフォーマンスの計測
ECサイト、メディアサイトのパフォーマンス最適化のはなし #yjbonfire
— うだやん (@udayan28) January 24, 2019
- 最適なパフォーマンスとは?
- フロントエンドにおけるパフォーマンス計測のデファクトスタンダードは Lighthouse
あぁ WebPageTest で LightHouse のテストができるのかええやん https://t.co/Xu9V4cWOlI #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
lighthouse => WebPageTestへの遷移が良い感じ #yjbonfire
— Oyama_Michinoku (@yamanoku) January 24, 2019
PS4を検索した結果
— みーた (@earlgrayMK) January 24, 2019
30以上でも意外と普通に見れる
#yjbonfire pic.twitter.com/W2YbrL4fZz
lighthouseのバージョンアップでスコアが変わったりするので定量評価すべきなるほど #yjbonfire
— resessh (@resessh7) January 24, 2019
スコアを見るか指標を見るか?
— うだやん (@udayan28) January 24, 2019
スコアの値は基準で変わっていくので、他のサイトと比べてどうかを確認することが大切 #yjbonfire
BigQueryには日本中のwebサイトのパフォーマンス結果のデータセットが用意されていたりするので、そこからざっくり調べることも可能https://t.co/lHVL47yWpb #yjbonfire
— たけっぱ (@takegue) January 24, 2019
ひよっこエンジニア的にはLighthouse使って自前のブログを治すだけでパフォーマンスの勉強になるところがいい #yjbonfire
— Shagamii (@RyuichiSakagami) January 24, 2019
パフォーマンスの最適化戦略
- Webサービス最適化は、遅い要素を減らして早くする
- 「遅い」要素とは
- サイズの大きな画像、フォント
- JavaScript
- 大量のHTTPリクエスト
- 重いDBアクセス
画像サイズが重要。
— いしまるじゃけ (@tsugu_maru_san) January 24, 2019
Imgixを利用。
#yjbonfire
imgix, これか #yjbonfire / imgix • Real-time image processing and image CDN https://t.co/ee0DF3JYQs
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
imgixすごいよなあ #yjbonfire
— あざらし (@shqld) January 24, 2019
キャッシュ戦略と聞くとmizchiさんのこれを思い出すhttps://t.co/Lv4InqGT1E#yjbonfire
— sasurau4 (@sasurau4) January 24, 2019
パフォーマンス上げるためにはアーキテクチャ選択が重要。 #yjbonfire
— うだやん (@udayan28) January 24, 2019
JAMSTACK
- フロントエンドのアーキテクチャパターン サーバサイドはAPIのみ * SSR はない
- SEO に懸念点がある
でたな JAMStack #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
[https://twitter.com/sakito/status/1088398699535904768:embed]
Node学園祭でも言ってたな、Dynamic Rendering #yjbonfire
— Naturalclar (@natural_clar) January 24, 2019
Dynamic Rendering https://t.co/xMToiYE19Y #yjbonfire
— Shunya Shishido (@sisidovski) January 24, 2019
nuxt, gatsbyとかSSRまでフロントエンドでやっちゃうやつもJAMstackと認識してたけど、厳密な定義は違うのかー https://t.co/2gYY3FSUTh #yjbonfire
— resessh (@resessh7) January 24, 2019
まとめ
- パフォーマンス最適化は適切な計測から始まる
- パフォーマンスの伸び代はサイトの要件次第
- 大幅なパフォーマンス改善にはアーキテクチャレベルの変更が必要
・計測するなら、ツールと仲良くなろう
— いしまるじゃけ (@tsugu_maru_san) January 24, 2019
#yjbonfire
記事
パフォーマンス改善の具体例とサービスへの売上貢献
笹原 翼 / ヤフー株式会社
- ヤフーショッピングのパフォーマンス改善(ページ表示速度アップ)
なぜパフォーマンス改善をやるのか
- 速度が速くなると、ユーザが使いやすくなり、サービスのKPIに影響する
速度が早くなるとどうなるの?表示速度が上がると売上が増加する by Amazon #yjbonfire
— うだやん (@udayan28) January 24, 2019
表示速度が0.1秒減ると、売り上げが1%上がる #yjbonfire
— Naturalclar (@natural_clar) January 24, 2019
- 速度とKPIの相関をABテストで証明する
ABテストでKPIの向上を証明
仮説立て:速度とKPIに相関があるのでは?
— いしまるじゃけ (@tsugu_maru_san) January 24, 2019
->速度とKPIの相関を調査して証明
#yjbonfire
Yahooショッピング、速度とKPIの相関をA/Bテストで証明した。ビジネス観点でパフォーマンス改善のメリットをちゃんと説明するYahooショッピングの姿勢素晴らしいな。 #yjbonfire
— Shunya Shishido (@sisidovski) January 24, 2019
どこで改善をしたのか
- SpeedCurve で速度計測 speedcurve.com 5万回まで測定できて5万円
少し古いですが、パフォーマンス改善とコンバージョンのA/BテストはFTのこの記事が詳細で学びがあります https://t.co/LDMdwb5SBj #yjbonfire
— Shunya Shishido (@sisidovski) January 24, 2019
ヤフーショッピング「速度とKPIの相関をABテストで証明することでパフォーマンス改善のリソースを勝ち取った」
— miyarappo (@miyarappo) January 24, 2019
仮説を持って検証するのが大切だよなぁ#yjbonfire
Speedcurve、RUMを使わずにsynthetic monitoringだけなら安いよね。これで0.1秒でも改善できたら余裕でペイする #yjbonfire
— Shunya Shishido (@sisidovski) January 24, 2019
どんな改善をやったのか
パフォーマンスの測定は安定した測定環境を整えるのが大事#yjbonfire
— ozaki25 (@ozaki25rn) January 24, 2019
改善の前にやること
— うだやん (@udayan28) January 24, 2019
・どの指標を見るかを決める
・安定した測定環境を整える
#yjbonfire
1日の平均を取るとかじゃなくて、手動でグラフ化してるんかーい #yjbonfire
— Naturalclar (@natural_clar) January 24, 2019
何度も聞く話だけど当て勘で問題点を探すのではなくちゃんと計測するの大事。 #yjbonfire
— kohei (@kohei_miura) January 24, 2019
どんな改善をやったのか
- 遅い、直列なAPIモジュールを非同期化
- 間違った非同期をやめる
- 画像の preload
- JS, CSS の preload
- 画像の最適化
- ハードのリプレイス、スケールアウト
- JS、CSS の軽量化
- html の圧縮形式を変える
SpeedCurve, Redash や Slack に連携できるときいて胸が熱くなるな #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
小さな改善の積み重ねでパフォーマンス改善されるんだなって感じる#yjbonfire
— ozaki25 (@ozaki25rn) January 24, 2019
どんな効果があったのか
- 表示速度が競合3社の中で 3位 から 2位に向上した!
- SEO にも良い影響
速度を上げるとクロール量も増加する #yjbonfire
— うだやん (@udayan28) January 24, 2019
我々がやることリスト!
したくてしたくてたまんない!
— みーた (@earlgrayMK) January 24, 2019
速度改善やっていき!💪#yjbonfire pic.twitter.com/zkwd5f87jj
パフォーマンスチューニングとコードベースの健全性と事業の加速のどこにいま傾倒しようとしてるのかってのを事あるごとに意識してきたいなあ #yjbonfire
— 北宇治高校の壁のシミ (@cheezenaan) January 24, 2019
プロキシ(Proxy)についての再確認
調査
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
プロキシ (proxy)とは 恥ずかしがり屋なWebブラウザさん用代理交渉人のこと。 もう少し具体的に書くと ホームページを見るときに使うソフト(Webブラウザ)の身代わりになってホームページにアクセスしてくれるコンピュータ(サーバ)のこと です。
https://wa3.i-3-i.info/word1752.html
パソコンの選び方と買い方
データを保存しているサーバーは、要求されたページのデータをブラウザに返すことで画面に表示します。これが一般的なやり取りです。 これをプロキシ経由しておこなった場合、ブラウザからは直接的にデータを要求せずにまず代理サーバーに接続されます。それを受けた代理サーバーは、自分の代わりに目的のサイトへデータを要求しアクセスします。データを受け取ると本来のブラウザへとデータを渡します。このように橋渡しのような処理を行ってくれます。
Wikipedia
プロキシ(Proxy)とは「代理」の意味である。インターネット関連で用いられる場合は、特に内部ネットワークからインターネット接続を行う際、高速なアクセスや安全な通信などを確保するための中継サーバ「プロキシサーバ」を指す。 プロキシはクライアントとサーバの間に存在し、情報元のサーバに対してはクライアントの情報を受け取る、クライアントに対してはサーバの働きをする(HTTPプロキシの場合)。 なお、プロキシは、「プロキシー」「プロクシ」「プロクシー」のほか、リバースプロキシの対義語として「フォワードプロキシ」とも呼ばれる。 誰でも自由に使えるプロキシサーバを公開プロキシという。ウェブサイトによっては、この公開プロキシによるアクセスを制限することがある。例えば、Wikipediaでは公開プロキシ(オープンプロキシ)を通じて閲覧することは問題ないが、編集することは禁じられている。
まとめ
- プロキシとは、代理アクセスエージェントのこと
おまけ
curl を使ってプロキシ経由でアクセスするには
プロキシ経由でアクセスする場合、「-x」オプションでプロキシサーバを指定すれば良い。
curl -x プロキシサーバ:ポート番号 http://対象のURL
もしプロキシサーバを利用する際に認証が必要な場合、以下のようにユーザ名・パスワードを指定すると良いだろう。
curl -x プロキシサーバ:ポート番号 --proxy-user ユーザ名:パスワード http://対象のURL
HTTPプロキシ と SOCKSプロキシ
お気に入りな飲食店リスト(東京23区のみ)
魚系
渋谷 etc
夜も定食価格で美味い魚が食べれるのでよく行ってた
鳥系
田町 etc
特にランチの きじ焼き丼(750円) が美味い
# カレー
田町・神田 etc
カフェ
田町 中目黒
【ヤホコーヒー】
— ペンブロ@会社員&ブロガー (@Penguinblog2018) December 16, 2018
ブログ更新しました!
たまたま通りかかった田町で開店準備中だったカフェ『ヤホコーヒー(JAHO COFFEE)』を見かけました☕
中目黒にもあるお洒落なカフェで気になって調べてみました!
オープンすれば日本で2店舗目になるようです!#ヤホコーヒー#jahohttps://t.co/gr6Iy7r4Rd