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
2k
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
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
350
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
380
contribution to astral-sh/uv
shunsock
0
240
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
15
6.3k
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
510
品質ワークショップをやってみた
nealle
0
580
Cursorハンズオン実践!
eltociear
2
1.2k
Devoxx BE - Local Development in the AI Era
kdubois
0
130
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.1k
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
190
CSC305 Lecture 05
javiergs
PRO
0
230
開発生産性を上げるための生成AI活用術
starfish719
3
1.5k
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
7
270
Mobile First: as difficult as doing things right
swwweet
225
10k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Speed Design
sergeychernyshev
32
1.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
22k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Scaling GitHub
holman
463
140k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Site-Speed That Sticks
csswizardry
13
910
How STYLIGHT went responsive
nonsquared
100
5.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
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 ͋Γ͕ͱ͏͍͟͝·ͨ͠