Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
cocone Teck Talk Vol.1 -Java開発者のGoプロジェクト1年の振り返り
Search
cocone
August 17, 2021
Programming
0
450
cocone Teck Talk Vol.1 -Java開発者のGoプロジェクト1年の振り返り
Go?Projectアサイン
Goという壁
GoとJavaの差
Goと仲良く慣れるまでの道のり
まだ慣れないGoのところ
GoでGo!Go!Go!
cocone
August 17, 2021
Tweet
Share
More Decks by cocone
See All by cocone
Cocone_Research_Center_2025.pdf
cocone
0
200
20240301_cocone_EMゆるミートアップvol6_LT資料
cocone
0
900
2024_cocone-avatarservice.pdf
cocone
0
2.1k
2024_cocone-wellbeing
cocone
0
4.9k
2023夏季合同企業説明会ココネ
cocone
0
370
cocone TECH TALK Vol.6 - リアルタイム対戦xバックエンドアーキテクチャ
cocone
0
630
cocone TECH TALK Vol.6 - ココネグループのブロックチェーン MOOI Network とのバックエンド連携
cocone
0
540
cocone TECH TALK Vol.6 - Kotlin バックエンドアーキテクチャ of アバターサービス
cocone
0
570
ココネ株式会社 会社紹介
cocone
0
130k
Other Decks in Programming
See All in Programming
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
150
Integrating WordPress and Symfony
alexandresalome
0
150
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
AWS CDKの推しポイントN選
akihisaikeda
1
240
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
1
690
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
160
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Done Done
chrislema
186
16k
Embracing the Ebb and Flow
colly
88
4.9k
Statistics for Hackers
jakevdp
799
230k
The Language of Interfaces
destraynor
162
25k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
It's Worth the Effort
3n
187
29k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Transcript
Java開発者の Goプロジェクト1年の振り返り
林 賛昊(イム チャノ) サーバー/ポケコロツイン開発リーダー 職務経歴 ・NHN Japan株式会社(現Line) ・cocone株式会社
・NC Japan株式会社 趣味 Outdoor系(キャンプ、登山、運動) 社内でストラックアウトができた! blackpink
目次 3 • Go? プロジェクトアサイン • Goという壁 • GoとJavaの差 •
Goと仲良く慣れるまでの道のり • まだなれないGoのところ • GoでGo!Go!Go!
開発言語経歴(ほとんどがJava開発) 4 .Ne PHP C# Python No de. js AS
Obje ctive C Andr oid Uni...
Go? プロジェクトアサイン 5 CTO Kさん ME 新規プロジェクトがリリース直 近ですが、開発が足りないの でお願いします。 できますね?
アハハハハハ ^_____^
Deep Impact! 6 GO Java人生からいきなりGo? 生き残るのを祈ります。。
救いの手 7 • 実は抗体があった ◦ 社内Go勉強会参加 ◦ 少し触ってみた • 開発中のプロジェクトのため、サポートがあった
• リリースまで1ヶ月残っていた ◦ CMS作成でトレーニングを始めた
Goの特徴 8 • 早い ◦ コンパイル、起動が秒速!! ◦ 処理スピード(Go:機械語、Javaはバイトコード) • メモリ管理をGoで行う
• モジュールだけで動く • goroutine軽量スレッド処理(channel) • シンプルで使いやすい
Goという壁 - ポインター型、バリュー型 9 • ポインター型 ◦ ポインターで参照する ◦ *StructA,
[]*StructB ◦ structA := &StructA{} • バリュー型 ◦ 値をコピーして参照する ◦ StructA、[]StructB ◦ structA := StructA{} • Map / Sliceはポインター型のみ
Goという壁 - タイプの厳格さ 10 • タイプの厳格さ ◦ int / int8
/ int16/ int32 / Int64, (uintprt) ※int : OSやCPUなどの実装系に依存した
Goという壁 - nil 11 • nil (javaのnullに該当する) • Goのnil:型を持つ ←
結果はfalse
Goという壁 - panic 12 • JavaのExceptionに該当 • panicを処理しないとプロセスが終了する ◦ APが死亡することもあった
• defer{ recover{} }でハンドリングできる ◦ java : try ~ catch ~ finally
error 13 • errorは処理の結果によるもの • functionのreturnで異常終了をお知らせる ◦ func testFunction() (int32,
error) {} • errorは処理しなくてもいい ◦ rVal1, _ := testFunction()
GoとJavaの差 - interface / interface{} 14 • interface / interface{}
◦ inteface ▪ Go, Java : 概念 ◦ interface{} ▪ Java:interface型はない。Objectに近い • Object → super class ▪ Go:型(Data Type) • interface{} → 他のデータタイプと無関係 • 全てのデータタイプが入れる
GoとJavaの差 - その他 15 • multiple return value ◦ Goで一番嬉しい機能
• package ◦ Goはクラスの概念がないため、package単位になる • 使わない変数・importはコンパイルエラーになる
Goと仲良く慣れる近道 16 • Javaの習性を捨てる ◦ GoはObject指向の言語ではない(公式な言及はない) • 真似する ◦ Goのコードを読む、同じく実装する
• CodeStyle Checkerを活用する ◦ checkstyleを利用中
まだなれないGoのところ 17 • 暗黙的な処理(型推論) ◦ param := 100 ->
var param int = 100 ◦ var sliceParam []string -> nil だが初期化される • primitive typeのアドレス参照 ◦ count := 100 abc := &count • 関数型変数 ◦ func sampleFunction(paramFunc valFunc() rtn)
Javaが恋しくなるところ 18 • Genericsが使えない • 高度な抽象化が難しい • interface型のConvert ◦ タイプチェックから変換が必要
◦ 何が入っているかわかってるからやってくれ
GoでGo!Go!Go! 19 • 軽い、早い ◦ 本番モジュール:10Mb程度 • 本番はGoモジュールだけで完結 ◦ 環境構築がいらない
• 学習しやすい • Google様( 個人の感想です )が開発してる!!
ポケコロツイン 20 技術スタック Server Go Client Unity (C#) 通信 gRPC
データタイプ protocol buffer
Q&A / Tips 21 • https://play.golang.org/ (web codingツール) • https://golang.org/ref/spec(blog)
◦ https://www.ymotongpoo.com/works/goblog-ja • https://github.com/avelino/awesome-go(library) • IDE ◦ Intellij-go plugin, vscode, Go Land, Atom
ご清聴ありがとうございます 22