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
CloudSignでのGo言語でのサービス開発
Search
Koichi Wada
November 02, 2016
Programming
2.1k
0
Share
CloudSignでのGo言語でのサービス開発
CloudSignでGoを選択した際の経緯と、Goにして良かったという話です
Koichi Wada
November 02, 2016
More Decks by Koichi Wada
See All by Koichi Wada
堅牢なアプリケーション開発を目指して / First steps to build a robust and secure application
koichiwada
0
1.5k
CloudSignの裏話 / Inside Story of CloudSign
koichiwada
1
2.9k
Other Decks in Programming
See All in Programming
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
250
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
120
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
160
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
830
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
440
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
Rethinking API Platform Filters
vinceamstoutz
0
11k
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
180
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
230
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
150
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
130
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
A Tale of Four Properties
chriscoyier
163
24k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
For a Future-Friendly Web
brad_frost
183
10k
sira's awesome portfolio website redesign presentation
elsirapls
0
210
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
260
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
480
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
410
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
My Coaching Mixtape
mlcsv
0
96
[SF Ruby Conf 2025] Rails X
palkan
2
930
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
680
Transcript
CFOHPDPN *OD CloudSignでのGo⾔言語でのサービス開発 2016-‐‑‒11-‐‑‒02 弁護⼠士ドットコム株式会社 クラウドサイン事業部
和⽥田浩⼀一
[email protected]
CFOHPDPN *OD ⾃自⼰己紹介 • 和⽥田浩⼀一(わだこういち) • 所属 •
弁護⼠士ドットコム株式会社 (2015年年1⽉月⼊入社) • 担当 • クラウド契約 CloudSign の開発 • サーバー側 Go • フロント側 JavaScript
CFOHPDPN *OD CloudSign https://www.cloudsign.jp
CFOHPDPN *OD CloudSignの特徴 • 紙の代わりにPDF • ハンコの代わりに電⼦子署名 •
Webとメールで処理理が早い • 郵送費、印紙代不不要 • 契約書をクラウド上に保管 • 近くに弁護⼠士がいる(運営) • 2015年年10⽉月 サービス開始 • 2016年年10⽉月31⽇日時点 導⼊入企業数 3,800社 • 累累計契約締結件数 35,000件
CFOHPDPN *OD サーバー側実装 • Goでやってます • なぜGoなのか? •
よく聞かれます
CFOHPDPN *OD 私を取り巻く環境と職歴 • 弁護⼠士ドットコム … PHP • 私の前職
• ブログ検索索 … PHP • Twitter関連サービス … PHP • 写真共有サービス … PHP • その前 • WebじゃないところでC++, Javaなど • なぜ使い慣れたPHPではなくGoなのか?
CFOHPDPN *OD 開発開始時の状況 • 新しい独⽴立立したサービスの新規開発 • 契約書などを扱うので堅牢牢性が要求される
• 電⼦子署名を扱う必要がある • 新しいことが必要そうだ • それなりに⾃自由度度がある
CFOHPDPN *OD きっかけ • あるインフラエンジニアの⼀一⾔言 • Goでやりましょうよ •
噂 • このエンジニアは⾃自作のツールをGoで書いてるらしい • 有名どころのツールがGoで書かれてるらしい • 有名どころのサービスがGoを採⽤用しているらしい • 電⼦子署名なんかもいるし、ついでに新規技術を取り⼊入れるの はモチベーション⤴ Αͬ͠ɺௐͯΈΑ͏!
CFOHPDPN *OD 調査(試作)の結果 • 堅く作れそう • 静的型付 -‐‑‒ 変数や関数定義に曖昧さがなくなる
• コンパイル型 -‐‑‒ コンパイル時に⽂文法チェックがされる • C/C++を意外と簡単にリンクできる • 電⼦子署名のライブラリを呼び出せる • 特別難しいということもなさそう • 標準ライブラリにWeb⽤用の機能もある • フレームワークや外部ライブラリもそれなりにいろいろ Go!(࠾༻)
CFOHPDPN *OD ⾔言語⽐比較(社内/担当者のスキルに対する) ։ൃॳ ݎ࿚ੑ ӡ༻ੑ ݁ PHP ˕
˚ ̋ ϝσΟΞ͚ Go ˚ ˕ ̋ ࠓճ࠾༻ Scala ˚ ˕ ˚ ݟૹΓ
CFOHPDPN *OD 主だった使⽤用ライブラリ • Revel -‐‑‒ Webフレームワーク • https://revel.github.io/
• Genmai -‐‑‒ DBアクセス, ORM • https://github.com/naoina/genmai • AWS SDK • https://github.com/aws/aws-‐‑‒sdk-‐‑‒go/aws • Gomail -‐‑‒ メール • http://gopkg.in/gomail.v2 • Draw2d -‐‑‒ 画像⽣生成 • https://github.com/llgcode/draw2d
CFOHPDPN *OD Goの良良かったこと(1) • コンパイル時に全部の⽂文法チェック • 未使⽤用の変数名、使ってないライブラリが残らない •
必要なところを間違って消してもすぐわかる • 改修時に不不注意のバグが⼊入るということがほとんどない • ⽂文字列列、クロージャ、⾮非同期処理理なんかも普通のスクリプト ⾔言語と同じ感覚で扱える • これがC/C++だったら… (((;゚Д゚)))ガクガクブルブル • ⽐比較的簡単にC/C++のプログラムをリンクできる • CGO • Makefileいらず • GoとC/C++のソースを置いておくだけ
CFOHPDPN *OD Goの良良かったこと(2) • go fmt • 標準でソースをフォーマットするツールが付いている
• ソースがいつもきれい • go test • 標準でテストを⾏行行う機能が付いている • *_̲test.go を作ればテストできる • 推奨されているスタイル -‐‑‒ 短くわかりやすく • 名前は短く、スコープは⼩小さく • if エラーならすぐ return • etc.
CFOHPDPN *OD Goで難しかったところ • コンパイルが必要 • コンパイル済みバイナリのデプロイ計画が必要 •
画⾯面⽤用のテンプレートファイルの扱い • コンパイル済みバイナリには含まれない • 置き場と読み込みをマネジメントする必要がある • 成熟してない点 • フレームワーク、ORMを選ぶのが難しい • ライブラリのバージョン管理理 • 型システムに慣れが必要 • interface{}、埋め込み • PHPの便便利利機能に対応するものがなかったり • カタカナひらがな変換など → 対応表を⾃自作
CFOHPDPN *OD 今後 • CloudSignは… • さらに使いやすくするため改良良を続けていきます •
昨⽇日(11/01)無事⻑⾧長期署名機能をリリースすることが できました。 • メディアサイト以外の領領域でGoの採⽤用が広がるかも…
CFOHPDPN *OD ͋Γ͕ͱ͏͍͟͝·ͨ͠