Suche senden
Hochladen
認証Gwのプロトタイプでgolang使ってみた20171024
•
1 gefällt mir
•
1,209 views
Kohji Osamura
Folgen
GoビギナーズLT大会! 「最近、Go言語始めました」の会 #4
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 22
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
gree_tech
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
健一 茂木
Riscv+fpga200606
Riscv+fpga200606
たけおか しょうぞう
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Yahoo!デベロッパーネットワーク
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
Empfohlen
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
gree_tech
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
健一 茂木
Riscv+fpga200606
Riscv+fpga200606
たけおか しょうぞう
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Yahoo!デベロッパーネットワーク
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
Insight Technology, Inc.
pg_bigmと類似度検索
pg_bigmと類似度検索
Masahiko Sawada
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事
Tosihiyuki Hirai
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
こんな辛いテストはいやだ
こんな辛いテストはいやだ
Takuya Mikami
ドリコムのインフラCI
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
Speech Framework
Speech Framework
Gaprot
ICT技術がもたらす旅館の更なる可能性
ICT技術がもたらす旅館の更なる可能性
Osaka University
スタートアップを目指す零細企業のエンジニア採用事情
スタートアップを目指す零細企業のエンジニア採用事情
Kohji Osamura
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
Masatomo Ito
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
Atsushi Tadokoro
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
Atsushi Tadokoro
39 works:ドコモにおける オープンイノベーションプログラムの紹介
39 works:ドコモにおける オープンイノベーションプログラムの紹介
Osaka University
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
Delphi Community Edition Meet up !
Delphi Community Edition Meet up !
Jun Hosokawa
JavaScript.Next
JavaScript.Next
dynamis
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
Masataka Sato
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
parrotstudio
大規模ログ分析におけるAmazon Web Servicesの活用
大規模ログ分析におけるAmazon Web Servicesの活用
Shintaro Takemura
Weitere ähnliche Inhalte
Ähnlich wie 認証Gwのプロトタイプでgolang使ってみた20171024
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
Insight Technology, Inc.
pg_bigmと類似度検索
pg_bigmと類似度検索
Masahiko Sawada
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事
Tosihiyuki Hirai
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
こんな辛いテストはいやだ
こんな辛いテストはいやだ
Takuya Mikami
ドリコムのインフラCI
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
Speech Framework
Speech Framework
Gaprot
ICT技術がもたらす旅館の更なる可能性
ICT技術がもたらす旅館の更なる可能性
Osaka University
スタートアップを目指す零細企業のエンジニア採用事情
スタートアップを目指す零細企業のエンジニア採用事情
Kohji Osamura
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
Masatomo Ito
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
Atsushi Tadokoro
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
Atsushi Tadokoro
39 works:ドコモにおける オープンイノベーションプログラムの紹介
39 works:ドコモにおける オープンイノベーションプログラムの紹介
Osaka University
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
Delphi Community Edition Meet up !
Delphi Community Edition Meet up !
Jun Hosokawa
JavaScript.Next
JavaScript.Next
dynamis
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
Masataka Sato
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
parrotstudio
大規模ログ分析におけるAmazon Web Servicesの活用
大規模ログ分析におけるAmazon Web Servicesの活用
Shintaro Takemura
Ähnlich wie 認証Gwのプロトタイプでgolang使ってみた20171024
(20)
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
pg_bigmと類似度検索
pg_bigmと類似度検索
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
こんな辛いテストはいやだ
こんな辛いテストはいやだ
ドリコムのインフラCI
ドリコムのインフラCI
Speech Framework
Speech Framework
ICT技術がもたらす旅館の更なる可能性
ICT技術がもたらす旅館の更なる可能性
スタートアップを目指す零細企業のエンジニア採用事情
スタートアップを目指す零細企業のエンジニア採用事情
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
39 works:ドコモにおける オープンイノベーションプログラムの紹介
39 works:ドコモにおける オープンイノベーションプログラムの紹介
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Delphi Community Edition Meet up !
Delphi Community Edition Meet up !
JavaScript.Next
JavaScript.Next
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
大規模ログ分析におけるAmazon Web Servicesの活用
大規模ログ分析におけるAmazon Web Servicesの活用
認証Gwのプロトタイプでgolang使ってみた20171024
1.
Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. 認証GWのプロトタイプで Golang使ってみた 納村 康司 かもめエンジニアリング株式会社 2017年10月24日
2.
認証GWのプロトタイプでGolang使ってみた 1 ■ 自己紹介・会社紹介 ■ あるときこんなお仕事が ■
Golangを使うチャンス ■ Golangのいいところ ■ Golangのはまりケース2つ Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
3.
自己紹介 2 ■ 氏名 納村
康司(おさむら こうじ) @osakichi(Twitter)、osakichi(GitHub) ■ 所属 かもめエンジニアリング株式会社 http://kamome-e.com/ ■ 役割 取締役・技術者 ■ 事業内容 コンピュータソフトウェアおよびハードウェアの 研究、開発、販売、サポート (主に認証関係) Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
4.
かもめの活動分野 3 ■ 製品分野 通信事業者・企業向けの 認証パッケージソフトウェアおよびソリューション ■
主力製品 アプリSSO認証ソリューション「KAMOME SSO」 統合認証基盤「KFEP」 RADIUS認証サーバ「Fullflex」、などなど ■ 開発言語 Java、C++、C、ちょっとJavaScriptやPython Golangは社内/社外に布教中 (他社から引き継いだ「Fullflex」はGolangだけど) Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
5.
他にもかもめはこんなことも 4 当社プロダクトに関係するテーマで 小規模勉強会を開催しています。 『Diameter プロトコルガイド』を 出版しました。 会議中の落書きを 缶バッチにしました。 Copyright©2017 KAMOME
Engineering, Inc. All rights reserved.
6.
5 あるとき こんなお仕事が Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
7.
案件ご要望内容 6 ■ サービスで様々な認証方式を使えるソリューションが欲しい。 ID/PW以外にも、ワンタイムパスワードとか、指紋認証とか。 ■ フロントアプリからは統一されたAPIで利用したい。 ■
多要素認証に対応し、かつ認証方式が増えても、 フロントアプリの改修は行わないようにしたい。 ■ まずはプロトタイプを作成して、コンセプト検証から。 コンセプト検証なので開発言語は何でもいい。 Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
8.
7 いわゆる 「認証ゲートウェイ」 Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
9.
構成概念図 8Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. フロント アプリ (既存) 認証GW(開発範囲) API 受付 ID/PW認証 対応モジュール OTP認証サーバ (他社製品) 指紋認証サーバ (他社製品) OTP認証 対応モジュール 指紋認証 対応モジュール ID/PW認証サーバ (既存) ・ ・ ・ ・ ・ ・ 共通API 認証方式ごとに 対応モジュールに 処理を振り分け 認証方式の 追加は モジュールの 追加で対応 認証方式固有の プロトコル処理は 対応モジュールで処理 フロントアプリからは 何れの認証方式も 共通のAPIで利用
10.
9 Golangを使う チャーンス! Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
11.
Golangによる実装方針 10 ■ 共通APIの提供および各種認証サーバのAPI呼び出しには、 net/httpパッケージを利用。 ■ 共通APIのJSONパラメタは、当面interface{}に変換して 柔軟に設計を検討、設計が固まったらstruct{}にして高速化。 ■
認証対応モジュールはinterface{}でI/Fを共通化。 新たな認証方式の対応に備える。 ■ 少なくともプロトの段階までは、標準パッケージだけを使う。 Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
12.
11 Golangのいいところ Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
13.
Golangのいいところ(1) 12 ■ とりあえず動かすプロトタイプから、 ガチガチに設計したプロダクトまで、対応の幅が広い。 ■ ネイティブコードを生成しVMに依存しない。 ■
コンパイラのエラーメッセージが分かりやすい。 ■ 使用するパッケージの選択に悩まなくてよい。 (標準パッケージで一通りのことはできる) Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
14.
Golangのいいところ(2) 13 ■ 統一されたコーディングスタイルが、 標準で提唱されている。 ■ 文法がJava、C++/C、JavaScript、Python等々と比べて どれとも似ていない(各言語を渡り歩くと特に重要)。 ■
などなど、などなど。。。 Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
15.
14 はまりケース1 Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
16.
はまりケース1(1) 15Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. package main import "fmt" func main() { x := "Hello World!" // 初期値 if true { // 何らかの条件文(とりあえず常にtrue) x := "different≠another" // 条件により値置き換え } fmt.Println(x) } ■ :=演算子は便利だけど、 LL感覚で多用すると危険 ■ 結果が"different≠another"にならない??? コンパイルエラーも出ないので発見しづらい
17.
はまりケース1(2) 16Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. package main import "fmt" func main() { var x = "Hello World!" // 初期値 if true { // 何らかの条件文(とりあえず常にtrue) x = "different≠another" // 条件により値置き換え } fmt.Println(x) } ■ 変数スコープの問題だけど明示的にvarを書いた方が無難 ■ これで結果が"different≠another"と意図したものになった (型推論ぐらいは使ってもいいかも)
18.
17 はまりケース2 Copyright©2017 KAMOME Engineering,
Inc. All rights reserved.
19.
はまりケース2(1) 18Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. package main import "bufio" import "encoding/json" import "os" func main() { var data interface{} reader := bufio.NewReader(os.Stdin) json, _, _ := reader.ReadLine() // JSONデータをキー入力して json.Unmarshal(json, &data) // 内部データに変換 } ■ importしているパッケージが使えない? ■ コンパイラに「json.Unmarshal()が無い」と怒られる
20.
はまりケース2(2) 19Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. package main import "bufio" import "encoding/json" import "os" func main() { var data interface{} reader := bufio.NewReader(os.Stdin) raw, _, _ := reader.ReadLine() // JSONデータをキー入力して json.Unmarshal(raw, &data) // 内部データに変換 } ■ パッケージ名と被る変数名は使わない(まぁあたりまえ) ■ どうしても特定の名前を変数で使いたい場合は、 パッケージ名の方を変える方法もあるらしい
21.
まとまってないまとめ 20 ■ Golangはプロトタイプコードからプロダクト開発にまで、 幅広く便利に使える。 ■ いろいろ言われている「いいところ」はホントに素敵。 (特にC++/Cから流れてくると実感) ■
微妙なクセやはまりどころもあるので、研鑽を積みましょう。 ■ 継続して社内/社外に布教中。 フルスクラッチで何かを作る機会を虎視眈々と。 Copyright©2017 KAMOME Engineering, Inc. All rights reserved.
22.
Copyright©2017 KAMOME Engineering,
Inc. All rights reserved. ありがとうございました!
Jetzt herunterladen