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
0
2.1k
CloudSignでのGo言語でのサービス開発
CloudSignでGoを選択した際の経緯と、Goにして良かったという話です
Koichi Wada
November 02, 2016
Tweet
Share
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
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
450
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.2k
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
310
Patterns of Patterns
denyspoltorak
0
410
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
180
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.9k
ゲームの物理 剛体編
fadis
0
390
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
Skip the Path - Find Your Career Trail
mkilby
0
32
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
270
30 Presentation Tips
portentint
PRO
1
180
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
32
Code Reviewing Like a Champion
maltzj
527
40k
Agile that works and the tools we love
rasmusluckow
331
21k
Claude Code のすすめ
schroneko
67
210k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Practical Orchestrator
shlominoach
190
11k
The browser strikes back
jonoalderson
0
290
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 ͋Γ͕ͱ͏͍͟͝·ͨ͠