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
Golang完全初心者がチュートリアルを完了させればなにができるようになるか
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
katryo
June 17, 2014
Technology
4k
2
Share
Golang完全初心者がチュートリアルを完了させればなにができるようになるか
http://connpass.com/event/6579/
での発表資料です
katryo
June 17, 2014
More Decks by katryo
See All by katryo
How to create an automated test suite for the Chromium based app and the Unity app
katryo
0
6.8k
Denkinovelをどうして作り続けているのか
katryo
0
2.4k
Sprockets絶ちに挑戦した
katryo
4
1.9k
業務で使えるGolang
katryo
3
1.8k
Rails3で作り始めたアプリケーションをちょっとずつ改善してゆく道のり
katryo
3
2k
Railsアプリの運営とQOL爆アゲアイテム
katryo
0
400
Other Decks in Technology
See All in Technology
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
200
No Types Needed, Just Callable Method Check
dak2
1
1.2k
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
7
1.3k
Shipping AI Agents — Lessons from Production
vvatanabe
0
230
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
370
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
430
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
390
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.7k
AWS認定資格は本当に意味があるのか?
nrinetcom
PRO
2
270
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
300
自立を加速させる神器 - EMOasis #11
stanby_inc
0
140
QGISプラグイン CMChangeDetector
naokimuroki
1
400
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Scaling GitHub
holman
464
140k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
180
Git: the NoSQL Database
bkeepers
PRO
432
67k
Embracing the Ebb and Flow
colly
88
5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Deep Space Network (abreviated)
tonyrice
0
120
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Transcript
Golang完全初心者がチュートリアル を完了させればなにができるように なるか @katryo
自己紹介 • @katryo • 新卒1年目 • これまで作ったもの
– h/p://denkinovel.com • Rails4製 • 言語 – Ruby, Python, JavaScript 2年 • ウェッブ開発が主目的です – C, Java, Obj-‐C ちょっとだけ – 主にLL
Go 3 週 間
• A Tour of Goは
A Tour of Go • 完全にはやってないです(´・_・`) • 演習問題をしっかり解くのはちょっとしんどい
• 書いてあることを読んで、RUNしただけで す…… じっくり時間をかけて 演習問題を解くと いいことある気がする
結論
コマンドラインツールを作れた • WordNetで上位語を再帰的に発見するコマン ドラインツール • h/ps://github.com/katryo/wordnet_go • 以前Python3で書いた
h/ps://github.com/katryo/wordnet_python を Goに書き換えたもの
デモ
作った感想 • DRYにするやりかたがまだわからなくてつらい – 現在、全部1ファイル – 別packageにしてimportするというやりかたがよさそう
– SQLiteからレコードを引き出すという、似た処理を同じ 関数にまとめる方法わからない – チュートリアルちゃんとやります(´・ω・`) • stringが使いやすい – charじゃなくてstringが基本 – LL感覚で文字列を処理できる • UTF-‐8前提なので、非la]n1語ではPythonより使いやすいか も
結論に至るまでに得たもの
メモリの気持ちが ちょっとだけわかった • Golangは変数にメモリ領域割り当て => 初期 化の手順が必要 •
MutableなArrayは メモリ管理がめんどいことを把握 • LLでは味わえないメモリとの触れ合い • でもGCはあるよ! やった!
Golangは学習コストが小さくてよい • Pythonを意識した仕様の小ささ – len()関数とか、既知の語に寄せている – 型を変数名の後に書くなど直感に従った
(かつ実用的な)書き方 • No クラス • No オブジェクト指向 • Structにメソッドは作れるけど、Rubyとかの、クラスを基本に したオブジェクト指向とは別物 • public/private は命名で管理(言語仕様) – 大文字で始まる関数はpublic
LL使いが Golangを始めるにあたって 戸惑ったこと
GOのインストール • Homebrewでインストールすると、GOROOTを 自分で設定しないといけない • おとなしくpkgファイルでインストールしました
GOPATHの流儀 • 好きな場所に設定してよい • あんちぽ(kentarok)さん流 – GOPATH=$HOME – h/p://blog.kentarok.org/entry/
2014/06/03/135300 – ghqと組み合わせて使っている – こわいので自分ではやれてないです • 自分のやりかた – GOPATH=~/repositories
Errorは戻り値 • 例外処理がない • ちょっと戸惑うけど慣れたら問題ない • Errorが発生しうる場面ではdeferを利用すると、 ファイルを開いたりRDB使うときに便利
– Pythonのwithみたいな機能
Java, Cとくらべて • 学習コストがとても小さい – 最大の利点 – めんどうなことを書かなくていい
• public sta]c … • 気軽に書いて、動かせる – スクリプト感覚でgo runできる • LL使いが最初に学ぶ静的言語として最適だと思 う – まだこれから広まりそう – 自分ではGoSublimeを使って書いたけど、IDEを使うと 恩恵にあずかれると思います
まとめ
Goは コマンドライン ツール くらいなら すぐに作れる Goodな言語
Thank you for listening