SlideShare a Scribd company logo
1 of 23
Download to read offline
足し算をつくろう
豊田陽一 (@rs_wisteria)
今日のおはなし
▰ 自力で + を実装する
▰ 論理回路
▰ 半加算器
▰ 全加算器
▰ 最適化
▰ キャリー先読み
▰ キャリー予測
2進数
▰ 0 or 1で表現される数字
▰ 桁が2で進むから2進数
▰ 1000 = 8
▰ 計算機上でのプリミティブな表現
▰ 1000 + 0100 = 1100
▰ 桁上りが無ければ足し算は分かりやすい
論理回路
▰ true/falseを入出力にもつ回路
▰ AND: 2つの入力がtrueの時のみtrueを出力
▰ OR: 2つの入力がfalseの時以外trueを出力
▰ XOR: 2つの入力が異なる場合trueを出力
▰ NAND: 2つの入力がtrueの時以外trueを出力
▰ NOR: 2つの入力がfalseの時のみtrueを出力
▰ NOT: 1つの入力を反転して出力
論理回路による足し算の実現
▰ 2進数の各桁ごとに論理演算
▰ 0 + 0 = 0
▰ 1 + 0 = 1
▰ 0 + 1 = 1
▰ 1 + 1 = 0
▰ XOR回路によって実現可能
桁上りの対応
▰ 1 + 1 = 0の場合、桁上りが発生
▰ 次の桁の計算結果に影響する
▰ 00 + 00 = 00
▰ 01 + 00 = 01
▰ 00 + 01 = 01
▰ 01 + 01 = 10
▰ 1 + 1 の次の桁に関してはXORで実現できない
半加算器
▰ 入力2つ、出力2つの回路
▰ 入力: 各桁の値 (A, B)
▰ 出力: 加算の結果(S)、桁上りの有無(C)
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
半加算器の実現
▰ 2つの論理回路による実現
▰ S = A XOR B
▰ C = A AND B
全加算器
▰ 入力3つ、出力2つの回路
▰ 半加算器の桁上りも入力に加える(Ci)
▰ 値(S)と桁上り(Co)を出力する
A B Ci S Co
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
A B Ci S Co
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
全加算器の実現
▰ 半加算器(HA)とOR回路による実現
▰ 半加算器2つを利用
▰ A, Bを受け取る半加算器HF1
▰ HF1の結果とCiを受け取る半加算器HF2
▰ HF1, HF2のいずれかで桁上りが発生して
いれば、桁上り(Co)が真になる
全加算器による足し算の実現
▰ 4bit整数(Unsigned)の例 (0~15)
▰ 1つの半加算器、3つの全加算器を利用
▰ 下の桁から桁上りを次の全加算器に伝搬させ
ていく
▰ A + B = S
▰ A = { A4, A3, A2, A1 }
▰ B = { B4, B3, B2, B1 }
▰ S = { S4, S3, S2, S1 }
課題
▰ ビット数が増えるに従い、論理回路の
段数が増える
▰ 2桁目の計算を行うためには1桁目の計算結果
を待つ必要があるた
▰ 各桁の計算を並列に走らせられないだろうか?
キャリー先読み
▰ 全ての桁の計算結果から各桁の桁上りを先読みす
る回路を作る
▰ X: 前の桁の桁上げを考慮した桁上げの有無
▰ X1 = C0 = A0 AND B0
▰ X2 = (A1 and B1) or ((A1 xor B1) and C0)
▰ = (A1 and B1) or ((A1 xor B1) and (A0 and B0))
▰ = (A1 and B1) or ((A1 and A0 and B0) or
▰ (B1 and A0 and B0))
▰ 前の回路の結果Cを使わずにXを表現できた
キャリー先読み (2)
▰ 前の回路の結果を待たずに桁上りの有
無を取得可能になった
▰ 桁数が増えるほど回路が増える
▰ 64bit全部先読みすると一体…
キャリー予測
▰ 全桁数を半分に分割
▰ 上位桁は桁上りがあるパターンと無いパターン
の両方を計算する
▰ 下位桁の結果により、上位桁の結果を選択
▰ 桁数の分割個数を増やすことで高速化
キャリー予測 (2)
▰ ex) 8bit整数の計算
▰ 00111001 + 01001100 (0x39 + 0x4C)
▰ 下位桁: 1001 + 1100 = 0101 + Carry
▰ 上位桁(Carryなし): 0011 + 0100 = 0111
▰ 上位桁(Carryあり): 0011 + 0100 + 0001 = 1000
▰ Carryがあるので、Carryありを選択
▰ 00111001 + 01001100 = 10000111 (0x87)
キャリー予測 (3)
▰ 32bit整数を際限なく分解する
▰ 32→16→8→4→2→1
▰ 5段のマルチプレクサの遅延
▰ 1.5^5倍の回路数
▰ 回路の増え方や遅延がbit長の増加に伴い、ゆ
るやかに増えていく
引き算の実現
▰ 補数を利用する
▰ ex) 9の補数: 足すと9になる数
▰ 3523 - 1245を桁下がりの引き算なしで計算
▰ 3523 + 10000 - 1245 - 10000
▰ = 3523 + 1 + (9999 - 1245) - 10000
▰ = 3524 + 8754 - 10000
▰ = 12278 - 10000
▰ = 2268
2進数での引き算
▰ ex) 1001 - 0110 (0x9-0x6)
▰ = 1001 + 0001 + (1111 - 0110) - 10000
▰ 太字部分は桁下がりが発生しないため、単純に
xorのみで計算可能
▰ = 1001 + 0001 + 1001 - 10000
▰ = 1010 + 1001 - 10000
▰ = 10011 - 10000
▰ = 0011 (0x3)
おまけ: 集合論的アプローチ
▰ 自然数の定義 (ペアノの公理)
▰ 0 = Φ = {}
▰ N: 全ての自然数
▰ successor(n): nの次の値
▰ successor(0) = {0} = 1
▰ successor(1) = successor(successor(0)) =
{ 0, {0} } = 2
▰ successor(2) = successor(successor(1)) =
{ 0, {0}, { 0, {0} } } = 3
ペアノの加法定理
▰ successor(a) + b = successor(a+b)
▰ ex) 1+1=2
▰ successor(0) + successor(0)
= successor(successor(0) + 0)
= successor(successor(0))
= successor(1)
= 2
ペアノの加法定理 (2)
▰ ex) 2+3
▰ suc(1) + suc(2)
= suc(suc(0)) + suc(suc(suc(0)))
= suc(suc(0) + suc(suc(suc(0))))
= suc(suc(suc(suc(suc(0)))))
= 5
▰ + を使わない式に変換できた
おわりに
▰ 足し算、結構大変
▰ bit数が増えるにつれて、回路数が増える
▰ 気軽にCPUのレジスタのbit数が増えない訳
▰ 計算量と回路数のトレードオフ

More Related Content

What's hot

競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashingKumazaki Hiroki
 
開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能Masaki Suzuki
 
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門hoxo_m
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話yuosaka
 
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングyoshrc
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Inc.
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Inc.
 
トピックモデル
トピックモデルトピックモデル
トピックモデル貴之 八木
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部Kiyoshi Ogawa
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Yuya Unno
 
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたMitsuru Kariya
 

What's hot (20)

競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashing
 
開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能
 
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
 
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
 
トピックモデル
トピックモデルトピックモデル
トピックモデル
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~
 
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみたクソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
 

Similar to 足し算をつくろう

CRC-32
CRC-32CRC-32
CRC-327shi
 
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2H T
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用MITSUNARI Shigeo
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03swkagami
 
機械系のためのメカトロニクス ディジタル回路
機械系のためのメカトロニクス ディジタル回路機械系のためのメカトロニクス ディジタル回路
機械系のためのメカトロニクス ディジタル回路makoto shimojo
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しようUnity Technologies Japan K.K.
 
kagami_comput2016_02
kagami_comput2016_02kagami_comput2016_02
kagami_comput2016_02swkagami
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Inc.
 
kagami_comput2015_2
kagami_comput2015_2kagami_comput2015_2
kagami_comput2015_2swkagami
 

Similar to 足し算をつくろう (13)

CRC-32
CRC-32CRC-32
CRC-32
 
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03
 
機械系のためのメカトロニクス ディジタル回路
機械系のためのメカトロニクス ディジタル回路機械系のためのメカトロニクス ディジタル回路
機械系のためのメカトロニクス ディジタル回路
 
計算機理論入門03
計算機理論入門03計算機理論入門03
計算機理論入門03
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
 
レポート1
レポート1レポート1
レポート1
 
kagami_comput2016_02
kagami_comput2016_02kagami_comput2016_02
kagami_comput2016_02
 
5 Info Theory
5 Info Theory5 Info Theory
5 Info Theory
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
kagami_comput2015_2
kagami_comput2015_2kagami_comput2015_2
kagami_comput2015_2
 

More from Yoichi Toyota

超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をするYoichi Toyota
 
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しYoichi Toyota
 
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路Yoichi Toyota
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技Yoichi Toyota
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計Yoichi Toyota
 
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことYoichi Toyota
 
Ruby is comming ractor編
Ruby is comming ractor編Ruby is comming ractor編
Ruby is comming ractor編Yoichi Toyota
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんYoichi Toyota
 
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull RequestYoichi Toyota
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞYoichi Toyota
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話Yoichi Toyota
 
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうYoichi Toyota
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかYoichi Toyota
 
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方Yoichi Toyota
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方Yoichi Toyota
 
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活Yoichi Toyota
 
Docker in production
Docker in productionDocker in production
Docker in productionYoichi Toyota
 
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”Yoichi Toyota
 
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみたYoichi Toyota
 
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンYoichi Toyota
 

More from Yoichi Toyota (20)

超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
 
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
 
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
 
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
 
Ruby is comming ractor編
Ruby is comming ractor編Ruby is comming ractor編
Ruby is comming ractor編
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
 
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull Request
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
 
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
 
Docker in production
Docker in productionDocker in production
Docker in production
 
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”
 
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみた
 
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
 

足し算をつくろう