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
今更始めるGo言語 / techcamp04
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuichi Goto
January 24, 2018
Programming
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今更始めるGo言語 / techcamp04
第4回開発合宿(2017/01/24)
Yuichi Goto
January 24, 2018
More Decks by Yuichi Goto
See All by Yuichi Goto
[Teaser] Type-Safe Lightweight DDD with Effect Schema
yasaichi
3
570
Google Cloud を用いたソフトウェア開発の内製化組織の早期立ち上げの実現 / Rapid Establishment of In-House Software Development Teams Using Google Cloud
yasaichi
1
1.7k
[EN] Robust and Scalable API Gateway Built on Effect
yasaichi
3
470
Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect
yasaichi
9
2.5k
あるRailsエンジニアがビジネスリーダーに転身するまで
yasaichi
9
3.3k
Active Recordから考える次の10年を見据えた技術選定 / Architecture decision for the next 10 years at PIXTA
yasaichi
50
23k
Active Recordから考える次世代のRuby on Railsの方向性 / Directions for the next generation of Ruby on Rails: From the viewpoint of its Active Record
yasaichi
38
22k
ピクスタのエンジニアリングとCircleCI / Software Engineering with CircleCI at PIXTA
yasaichi
1
490
Ruby on Railsの正体と向き合い方 / What is Ruby on Rails and how to deal with it?
yasaichi
147
95k
Other Decks in Programming
See All in Programming
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1k
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
260
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
2
370
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
130
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
200
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
120
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
150
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
160
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
190
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
680
AI: The stuff that nobody shows you
jnunemaker
PRO
9
860
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
550
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
450
How to train your dragon (web standard)
notwaldorf
97
6.7k
Transcript
今更始めるGo言語 Yuichi Goto (@_yasaichi) Jan 21, 2018 @ 第4回開発合宿成果発表
Agenda 背景と目的 技術概要 やったこと 所感 2
http://web-salad.hateblo.jp/entry/2018/01/15/090000 3 先日、こんなエントリを書きました
サーバーサイド開発で利用される言語のマトリックス(前述のエントリより) 4
背景1: 技術検証 • 最近考えているテーマ: モノリシックなRailsアプリ ケーションの刷新時にどの言語を選択すべきか? • 型と並行計算モデルの有無の2軸で捉えてみた • この観点においてはGoかScalaという結論に
• 判断精度向上のためにGo(未経験)を触ってみよう 5
背景2: 自身のスキル開発 • クライアントサイド: React, React Native(第3回) • サーバーサイド •
爆速モノリシック: Ruby on Rails • BFF: Node.js • マイクロサービス: ? 6 ここに当てはまる言語・フレーム ワークを抑えたい
今回の目的: 今更始めるGo言語 • 合宿で明らかにしたかったこと • 言語自体の手触りはどんな感じ? • IDEなどの周辺環境はどんな感じ? • 最終的に明らかにしたいこと
• APIサーバーを書くとしたらどんな感じ? 7
Agenda ɹ 背景と目的 技術概要 やったこと 所感 8
Go #とは • Googleが開発したプログラミング言語 • 2009年11月に公開され、最新バージョンは1.9.2 • 静的型付け • goroutineによる並行計算のサポート
• クロスコンパイルのサポート 9
サンプル: Hello, World! package main import ( "fmt" ) func
main() { fmt.Println("Hello, World!") } 10 $ go run main.go Hello, World!
Agenda ɹ 背景と目的 ɹ 技術概要 やったこと 所感 11
そうだ REPL、作ろう • REPL(Read-Eval-Print-Loop)とは • 対話型評価環境のこと、RubyでいうIRB • Goでは • 言語標準のREPLは存在しない(!)
• 数ある実装の中では motemen/gore が人気 12
デモ 13
デモでは見せませんでしたが… • 式の評価とPrettyprintしか実装できてません • 後者は k0kubun/pp を利用しているので、実質 式の評価しか実装してません • わかってはいたが、やはり題材が難しかった
• @motemen さんはすごい人(小並感) 14
仕組み • goreとだいたい同じ 1. 入力された式を評価して標準出力に表示する 一時的なソースコードを生成する 2. 1を go run
で実行して得られた結果を返す 3. 1-2をユーザーが中断するまで繰り返し 15 ここが難しいところで、具体的には AST周りをわかっていないとダメ
Agenda ɹ 背景と目的 ɹ 技術概要 ɹ やったこと 所感 16
良かったところ • 言語の手触り: 21世紀のC言語 or Better C • 言語仕様が小さくキャッチアップがしやすい •
↑とgofmtにより誰が書いても同じ感じになる • IDEなどの周辺環境: ポータブル • 標準ツールが充実しており、エディタを選ばない 17
苦しかったところ • 言語仕様の小ささや引き算の負の側面 • 例1: 例外がないので、 foo, err = …;
if err != nil のようなコードを至るところで書くことになる • 例2: mapのような高階関数がないのでfor文を 使うしかなく、愚直なコードになりがち ※ 始めたばかりなので慣れてきたらまた変わるかも 18
お疲れさまでした! 成果物: https://github.com/yasaichi-sandbox/cheney 19