【Go言語】 webapp GO Part1 【Golang】 [無断転載禁止]©2ch.net
>>358
datastoreが使いづらいと言ってもgoコード側でスキーマ設定する感じだし
joinできないからこそ結果的に使いやすいかもしれない
dbの挙動もレプリカありきの挙動だとすれば納得できる いわゆるBtoBの受託開発だと帳票出力があるからjoinないとキツイが
GAE/Goが想定してるのはBtoCのwebサービスだからjoinなくても何とかなる
ページングもカーソル使って次へと戻るだけあればいい handlerのテストってどこまで厳密にやるべきなの?
DBとのやりとりの部分とかは内部で使ってる関数をテストすればもんだいないから様々なパラメタに対して200を返せるかどうかだけでいいのでは?と思うんだけど >>363
バリデーションを網羅できてればいい気がする。 >>364
そのバリデーションってどこのことだろう…?
自分の中ではhandlerに対するテストなんかは裏側から取得してきたデータがどういうものかはあまり気にする必要がなくて入力と返ってきたデータの出力の仕方だけが関心点だと思ってるんだけどなかなかそういう記事とか見かけないんだよね postしたデータは、バリデーションせずにdbに、ぶち込んじゃうの?
get系でも入力パラメーターのバリデーションあるよね。 >>366
そこでのバリデーションならちゃんとテストケースに含めるべきだと思う
一方でたとえばUsersテーブルからデータをとってくるためのgetUsers内でのバリデーションのようなものはテストケースをいちいち考慮したくないということが言いたかった golangで独自の仮想通貨を作るのって出来る?
gethを改造すればいい感じ? go test とか go build, go install などのコマンドってどこに定義されてるの?
ソースを読んでみたいんだけど見つからなくて困ってる ありがとう、cmdのinternalにあるの見逃してた >>370
最近はGOROOTもGOPATHも環境設定不要だから
cd ${go env GOROOT}/src/cmd
ってすべき ゲーム作るためにgo-gl/glfw使おうとしてmain関数作って実行しようとしたら、
build constraints exclude all Go files in C:\Users\ユーザ名\Desktop\glfw
って出た。GOOS=windows, GOARCH=386で試したんだけど初心者すぎてわからん Ruby使いはwebデザイナあがりの意識高い系が多い(もちろんMac)
PHP、Perl使いは大昔にHTMLタグを直打ちしてたHTMLコーダー出身のスパゲッティコードを量産していた老害と、その老害を上司に持つ可哀想な若者が多い
Python使いは科学技術や情報工学系(自然言語処理、機械学習、深層学習等)のアカデミア出身者が多い
Go使いは新進気鋭なBtoC系上場企業の社員が多い
JavaはBtoB系受託IT土方が多い
こういう印象あるわ この結果を受けてweb&スマホアプリのバックエンドはGoが主流になるんだろうな
当社ではGoエンジニア募集中です Goは日本語学習サイトを充実させたほうがいい
PHPerがGoに移行するにはネットで検索>コードをコピペ
この集合でwebアプリケーションが作れないとダメだからな >>374
単純に力ある人がGo使うようになってるだけだと思うんだよなあ
別にGoがすごいとかではなくそこそこ力ある人はRubyでもPythonでも予選突破できる インタプリタとコンパイラ言語で速度比較したらそりゃ
Goのほうが有利だろ
省メモリ性やら単純な速度まで桁が違う 俺もうSPA前提でバックエンドにgoaを使うことでwebアプリ書いてるんだけど、いいよね。なんかgoaはマイクロサービス用のフレームワークと名乗ってるんだけど、別にマイクロサービス関係なしに使いたいんだけど。
つーかGAEで使ってるけど良い。 仕事でwebサービスをGoで書いてるけど、もっとGo使う会社増えないかなー
Go使ってて転職したいと思う会社が無い >>380
Googleの基幹事業だしDonateで維持してるオープンソースコミュニティ発の言語よりは将来性あるんじゃね
Youtubeのバックエンドで動いてるPythonコードをGolangに変換してパフォーマンス改善してるし
その他にも色々とGolangで動いてるシステムがある
また今の時期にGolangに目をつけてる会社は、経営陣(CTO等)に先見の明がある証拠だから伸びるだろう どうでもいいけどGolangって書き方に違和感ある。
Goかgolangじゃないの? C言語
Clang
https://ja.wikipedia.org/wiki/Clang
Go言語
Golang
この伝統に則って大文字だぞ
○+langのlangはググラビリティを向上させるsuffixでしかない >>386
qiitaのタグだと
Goかgolangだよね タグなんてユーザーが適当につけるものを論拠にされても gopherのみんなはGoのinterfaceについてはどう感じてる?
他の言語のinterfaceについて詳しくないんだけど、interfaceのもつメソッドを実装していれば満たしていることになるというのがどうも分かりなくくて辛い
明示的にこのinterfaceを満たしてますよみたいなのが欲しいのは修行が足りてない? >>392
type T struct{}
var _ I = T{}
でT型がinterface Iを満たすかチェックできる >>393
チェックできるかどうかというより何を満たしてるかパッと見でわからないという意味で辛い Goのinterface面白いと思うよ
何を満たしてるかぱっと見でわからないっていうのはinterfaceの使い方が良くないんだと思う
必要なメソッドを理解しないまま使おうとしてるからわからなくなるんじゃない? >>394
393でコンパイルエラーが出て何の実装が必要かわかるんだから、それで問題ない気がするんだけど。 >>395
面白いしJavaとかより柔軟だよね。
もっとinterfaceを拡張してプロパティとか演算子のシンタックスシュガーをもっと付けて欲しいとは思う。
多分上手く拡張できればジェネリクスに近い感じになると思うんだけど >>396
?
そもそもIの存在を知らないような場合にそういうコードでチェックできないと思うんだが
TにReadメソッドが実装されてる→よく読み進めるとIにはReadメソッドをもつ→TはIを満たしてるという思考の流れが気持ち悪い >>398
考え方がおかしい。元々の質問は
>> 明示的にこのinterfaceを満たしてますよみたいなのが欲しい
という話だから当然inteface “I”の存在を知っている前提。
構造体Tを作っていてそいつにinterface Iの実装を行いたいという場合に
type T struct{}
var _ I = T{}
とういう風に書くと実装条件を満たすかをコンパイルエラーでチェックできるから
確実に実装できる。 もしかして定義済みの型がどのinterfaceを実装してるのか明示してほしいってことか
でもそれGoのinterfaceの考え方じゃないよ >>400
アンカーつけないとなんに対しての反論かわからんのだが。
interfaceの概念はべつにGo独自とかそういうもんじゃないし
Goのinterfaceの考え方ってなんのことを指してるのかよくわからんな。
基本的にはJavaと変わらんでしょimplementsが不要ってだけ。 >>401
>>400は>>391,394,398あたりへの憶測
他言語のinterfaceは、imprementsすることでその型が何であるのかを説明するためのもの
Goのinterfaceはオブジェクトが必要な機能を備えているか調べるためのもの
だから考え方が違う >>402
なんかフワッフワした言い回しすぎて何を説明したいのかがわからんな。
interfaceは、英単語の意味そのものだよ。つまりはメソッド名とパラメーターの並びと、返り値の型の組み合わせそのもの。
それ以上でもそれ以下でもない。
基本的には言語として共通の概念と言える。
goとそれ以外の言語の違いは
型(javaの場合はclass)がinterfaceを満たす条件が違うってだけ。
条件の違いは
java: interfaceを明示的に指定する
go: interfaceと同じメソッドを、実装する PHPerだらけだったうちの会社もとうとうGoの勢いを感じて次のプロジェクトで使うことになった
ISUCONの結果が地味に効いてる
経営陣はAWSの課金が減ることを期待してるみたいだけど、はたしてどうなることやら 他人の書いたソースを読んでて特定のinterfaceの実際の実装を見たい場合
どの構造体や型をみればいいのか探すのが面倒なことはまれによくある > Goのinterfaceはオブジェクトが必要な機能を備えているか調べるためのもの
これって公式にどっかに書いてあるの?
というかGoにオブジェクトって概念あるか >>407
guruが対応してるから簡単に探せるで
vscならcmd+f12で実装を探す >>409
うん
手元にcloneしたソースはguruで探すけど
githubでソース眺めてる時とかがちょっと困る >>406
GAE/GoでgRPC使えるんだっけ? GAE/GoやるならStandardで使いたいんだよね GAE/Go SEとgRPCは色々と苦しい
代替案として挙げられるのはGAE/Goとgoaあたり? GAE/Go Standardでも gRPC は urlfetch でいけるんじゃないの? やったことないからわかんないけど >>410
doxygenみたくinterfaceのコードのところがリンクになってクリックすると
実装一覧が出るようにしてほしいってことね。 バックエンドはGAE/Goとgoa
フロントエンドはReactとReactNative(またはVue.jsとWeex)
この構成でwebアプリ、スマホアプリを作りたい
こういう開発者向けにRailsチュートリアル並に詳細かつ丁寧に解説してあるネット文献
あるいはAmazonで買える技術書が欲しい >>416
お前は俺か。俺の場合はreact-nativeだけノータッチだけど goaのDSL覚えるくらいならproto3やったほうがいいよね
goaのほうがgRPCより優れている点が思い浮かばない 普通にweb apiを簡単に作れてswaggerと連携って魅力じゃないので? goaはWebAPI作るのには便利だけどそれ以外のケースであまり融通が聞くとは言い難い
そもそもWebAPIならどのフレームワークで作っても大差はない goaはGo言語で記述するDSLからGo言語の各種ソースコードを自動出力する
gRPCは言語非依存のprotoファイル(IDL)から対応言語(Go言語以外のメジャーな言語に対応)の各種ソースコードを出力できる
汎用性が全然違う
企業目線だとgRPC選ぶのが多いんじゃないかな
実際にメルカリ、DeNA、CA、その他スマホアプリ大手のバックエンドはgRPCだし GAE/Go SEで何の苦労もなくgRPCが使えれば平和になれそう go-json-restはどうなん?正直これぐらいが一番好きなんだが >>422
いやいやwebapiならgoa一択だと思うんだけど。もちろんゼロから構築という前提でですが。
gRPCならprotoを覚えるとGoのサーバーサイドも自動生成って認識で合ってる?DBとのつなぎ込みの部分はどう書くの? goaやgRPCは「定義ファイル→ソースコード&ドキュメント生成」
go-json-restは直接ソース弄る系だからアプローチが全然違うな goaもgRPCもDBまわりのビジネスロジックは手書きです
そこまで忖度はしてくれませんよ >>428
ですね。アホな質問しました。
goaだとフレームワークも含めた形でコード生成するんですが
protoによるgRPCの場合はどうなのかなーと。例えばミドルウェアはサポートしてます?
goaもv2でgRPCをサポートするっぽいんですが、protoでのサーバサイドGoコード生成がいい感じならお役ゴメンもあり得るんですかね。 自動生成されたサーバーのハンドラ部分を各種フレームワークに繋ぐだけ
フレームワーク上のミドルウェアとも組み合わせることが出来る ちなみにちょっとググったらjsからgRPCは使えないみたいですね。
reactNativeからは使えるんですかね。
jsから使えないのは痛い なんか知らんけど急に役立つスレ化する時あるよな
ここでEchoがGAE/Goで動かない報告(>>223)したら
瞬時にパッチ当ててくれたり(>>239)
Go言語界の実力者が見てるっぽい mattnさんgoのコントリビュータだし古参の2chねらーだからなあ >>432
えー。これってrestAPIに変換してるってだけでは?
それってjsから使えるって言っていいんすか。 https://twitter.com/search?f=tweets&vertical=default&q=GAE%20gRPC&src=typd&lang=ja
TwitterでGAE gRPCを検索したらお前らがいたw Qiitaでよく見かける人だらけやw
ISCON参加者もいるだろ絶対
レベルたけぇわこのスレ >>435
grpc-webみたいなのなかったっけ? goa使ってたらv2になったタイミングで勝手にgRPC対応してついでにGAE対応になってたらよい >>438
でも俺1人でスレのレベルを大きく下げてるからな
油断すんなよ 俺も俺も。正直slackは怖くて書き込めない。匿名だとクソな意見も言えるから大事 >>444
これやってみたけどgen.shがWindowsだとエラー吐きまくるなぁ…
やっぱりみんなMac上でしか動作確認してないのか
周りもMacかUbuntuだらけだしweb系はMac買ったほうがいいのだろうか >>445
普通にエラー報告したら?
やってくれる人いると思うし知っていれば難易度が低い作業。ほぼワンライナーコマンドみたいだし。
protoコマンドがwin対応してないなら詰むけど docker+windowsは相性が悪くて
ファイルパスが¥と/で違うから
共有フォルダ設定が上手く行かず苦労した記憶ある
おとなしくmacかlinux上でやったほうがいい 個人的にWindows上で開発するのつらい
Windows用のアプリ作るときもLinuxで作ってクロスコンパイル
Goはその点すばらしいよね
(ただWindowsにしか対応してないpackageがある時は辛いけど) >>449
winにしか対応してないパッケージがあるの?
そんなんあるんだ。逆じゃなくて?
でもコントリビュートするチャンスじゃん A Windows GUI toolkitだから当たり前じゃね インフラエンジニア分の人件費を完全にカットできるからROE高そうだな
10人くらいのチーム規模で月商5億くらいのサービス支えられそう
少数精鋭でいけるのが大きい goon と gosto を統一したようなパッケージなのか
便利そうだな
俺も使ってみよう https://qiita.com/koki_cheese/items/369cdfc6e3250185ccdb
この記事を見ながらGoogle App Engine上でgRPCを動かすテストをしているのですが
Windows環境だとproto_gen.shが動きません
https://github.com/k2wanko/gae-grpc-web/blob/master/build/proto_gen.sh
--plugin=protoc-gen-go=${GOPATH}/bin/protoc-gen-go \
この部分で指定されたファイルが見つからないエラーが出ているみたいですが
その場所にちゃんとprotoc-gen-go.exeは存在していますし、環境変数にGOPATHもしっかり設定されていました
やっぱりMac買ったほうが良いんでしょうか…
windowsだと本筋とは関係のないエラーに遭遇しまくりで萎えてしまう '.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
あぁ謎…
古いMacbookでテストしたら普通に動作しました…
Windowsで開発はやめときます 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
6BTU26N0P5