タグ

ブックマーク / qiita.com/tenntenn (7)

  • Google App EngineでGoのバージョンアップを行う #golang #gae - Qiita

    はじめに メルペイ エキスパートチームの@tenntennです。 この記事は技術書典4で頒布した"こうして僕らは、書籍を売るアプリを作った 2.0.1"の一部を少し改定したものです。 Google App Engine for Go (GAE/Go)で開発する上で付き合っていかないといけない問題として、GAEのSDKのバージョンやそこで使用されるGo自体のバージョンアップが挙げられます。 GAE/Goはクラウドサービスであるため、SDKや言語のバージョンアップは必ず追従して行く必要のある問題です。 バージョンアップしなくても、一定期間はそのまま使えることが多いでしょう。 しかし、場合によっては非推奨になり、その後使えなくなる可能性もあり得ます。 そのため、特に大きな問題がない場合は積極的にバージョンアップをしていくとよいでしょう。 Goのバージョンを上げることによって、次のような恩恵を受け

    Google App EngineでGoのバージョンアップを行う #golang #gae - Qiita
  • goパッケージで簡単に静的解析して世界を広げよう #golang - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Goの標準パッケージには、goパッケージというものがあり、Goのソースコードを静的解析するのに便利な機能が提供されています。 goパッケージを使うと、以下のようなツールが簡単に作れます。 ソースコードを自動生成するツール ソースコードに対してlintやフォーマットを行うツール リファクタリングツール ソースコードから特定の何かを検索するツール ミニ言語の処理系 また、goパッケージを学ぶとコンパイラや言語処理系の知識も学べるので、他の標準パッケージとはまた少し違った知識を得ることができ、プログラミングの知識の幅が広がります。

    goパッケージで簡単に静的解析して世界を広げよう #golang - Qiita
  • Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita

    はじめに タイトルを見て、「はて?何を言ってるんだろう」と思った方もいるでしょう。 その通りです。通常、抽象構文木(AST)を取得するには、「ASTを取得する方法を調べる」で解説したように、go/parserパッケージの関数を使ってソースコードをパースする必要があります。 しかし、この記事では温かみのある手入力をすることで、日頃なんとなく取得しているASTがどういうノードで構築されているのか、最低限必要なフィールドは何なのかということを改めて知ることを目的としています。 なお、この記事を書いた時のGoの最新バージョンは1.7.4です。 今回作るコード 今回はかのプログラム言語Cやプログラミング言語Goで有名なHello, Worldを出力するプログラムを作りたいと思います。 具体的には、以下のようなコードです。 なお、せっかくなので、ここではGoっぽく、Hello, 世界としています。 p

    Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita
  • Goのスコープについて考えてみよう #golang - Qiita

    はじめに Twitterで以下のような投稿をしてみました。 https://twitter.com/tenntenn/status/815807925222412292 この問題は、以下のコード中に存在するスコープの数を聞いている問題です。 package main import "fmt" func main() { const message = "hello, world" fmt.Println(message) }

    Goのスコープについて考えてみよう #golang - Qiita
  • 簡単な式の評価機を作ってみる #golang - Qiita

    はじめに 皆さんはgoパッケージを使ったことはありますか?私は、GoGo!言いながら、恥ずかしながら、あまりまともに使ったことがありませんでした。最近は、仕事でもAST(抽象構文木)を弄り倒すことがあるので、今回はgoパッケージに触れたいと思います。 ここでは、簡単な四則演算などを評価し、結果を返すREPLを作ってみます。一見難しそうですが、ほとんどgoパッケージの機能を使うので、非常に簡単です。 ASTへパースする まずは入力された文字列をパースし、ASTを生成してみます。ここでは、式の評価なので式単位でパースします。パースには、parser.ParseExprを用います。 たとえば、以下のように使用できます。 expr, err := parser.ParseExpr("1+1") if err != nil { panic(err) } ast.Inspect(expr, func

    簡単な式の評価機を作ってみる #golang - Qiita
  • ASTを取得する方法を調べる #golang - Qiita

    はじめに みなさん、メリークリスマス! 22日の枠に欠員が出たので、go/parserパッケージを使ってAST(抽象構文木)を取得する方法についてまとめたいと思います。 goパッケージについては、簡単な式の評価機を作ってみるという記事も書いているので、そちらもぜひ読んで下さい。 なお、この記事を執筆時点のGoの最新バージョンは1.7.4です。 ノード go/parserパッケージでは、いくつかのParseと名前のついた関数でAST(抽象構文木)を取得することができます。ASTの各ノードを表す型は、go/astパッケージで提供されています。そしてそれらの型は、以下のast.Nodeインタフェースを実装するように定義されています。 type Node interface { Pos() token.Pos // position of first character belonging to

    ASTを取得する方法を調べる #golang - Qiita
  • go-app-builderのソースコードを読む #golang #gae - Qiita

    はじめに みなさんはGAE/GoのSDKがどうやってコードをビルドしているのか知っていますか? 私は正直ふわっとしか理解できておらず、きっと小人さんがビルドしてるんだろうなくらいに思ってました。 当然、小人さんじゃなくて、どこかにgoapp buildとかを呼んでいるコードがあるんだろうとは思っていましたが、どうやらgo-app-builderというツールがそれをやっていることを知ったので、調べてみることにしました。 今回は、ソースコードを読んでいく過程で分かったことをまとめたいと思います。 なお、ここではSDKのバージョンはappengine-1.9.48を使っています。 ソースコードはどこにあるのか さて、go-app-builderはどこにあるんでしょうか。きっとSDKのディレクトリのどこかです。 実はSDK以下にあるgorootの中に入っています。 $ ls $(goapp env

    go-app-builderのソースコードを読む #golang #gae - Qiita
  • 1