サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
tenntenn.dev
はじめに 新しいことをいくつか始めようと思うので、ご紹介します。 tenntenn Conference 2023を開催します! なんだ、去年もやったじゃんと思ったかもしれません。 tenntenn Conferenceは、1人で運営し、1人ですべてのセッションをこなす狂気のカンファレンスですが、今年はスポンサーを募集しようと思ってます。個人カンファレンスで、スポンサーって新しいですね。 しかも、スポンサーセッションもやります(やりたいです)。何を言ってるのか分からないという方は、connpassページに掲載してある、スポンサー資料を御覧ください。 個人スポンサーもあるので、ぜひご応募ください! 有料の講義を開催します 有償の講義は企業向けなどがほとんどでしたが、10月と11月に時間があるため、個人向けの有償の講義を行う予定です。 内容はGoのテストです。詳しい内容や申込みについては、co
昨日は1日休みをとって、親戚の高専の情報科に通う学生にソフトウェアエンジニアについて以下のようなことを話をしました。 自分の将来について考える大切さ 情報を得ることの重要性 ソフトウェアエンジニアとはどういう職業か プログラミングの楽しさ 大学への進学について 私が経験したことや知ってることをなるべくバイアスが掛からないように伝えるよう心がけたつもりです。どのくらい上手く伝えられたかは分かりませんが、熱心に聞いてくれました。 当日用いた資料は一部を覗いて一般的な内容なので以下のURLから公開しています。内容で間違ってる部分があったらDMなどで教えていただけると嬉しいです。また、親戚のおじさんから親戚の学生へのアドバイスのための資料だという視点で暖かく見てもらえると助かります。 https://tenn.in/forstudents もし、高校や高専、大学などで似たような話をしてほしいという
はじめに 企業と技術コミュニティ(ここでは主にソフトウェアエンジニアによるもの)との関わり方について最近考えることが多かったので、私個人が大切にしていることについてまとめたいと思います。なお、この記事に書いてあることは、あくまで@tenntenn個人が大切だと思っていることです。所属する企業や運営する技術コミュニティやカンファレンスの総意ではないことに注意してください。 企業が技術コミュニティ支援する理由 まずはじめに、企業が技術コミュニティを支援する理由について考えてみましょう。企業によってさまざまだと思いますが、以下のような理由が多いでしょう。 技術領域自体の発展 技術コミュニティの発展 自社のエンジニア採用 どれも密接に関係しているため、切り離せるものではありません。技術領域が発展しないと、言語やライブラリの機能追加などが思うように行われないでしょうし、技術コミュニティが発展しないと
5年が経ちました 2016年9月1日にメルカリ(ソウゾウ)に入社して、5年が経ちました。 あ。。。Go年が経ちました。 現在の所属はメルペイのエキスパートチームです。入社して2回マネージャが変わりましたが、チーム自体は同じです。メルカリグループにいて、ずっと同じチームなのはかなり稀有な存在じゃないかと思います。 最近やってることは最近Merpay Tech Festでお話したとおり、相変わらずGoコミュニティでワイワイする仕事をしています。Go Conference 2021 Autumnも楽しみですね。そういえば、Google Developers Expert (Go)としても活動しています。 Gopher道場も自習室という取り組みも行っており、Slackの参加者も2000名を超えました。最近は昇段審査という取り組みも行っており、Goで仕事をする人が増えるといいなと思って活動しています
pkg.go.devへの移行 これまでGoでは標準パッケージのドキュメントはgolang.org/pkgから閲覧できました。また、サードパーティ製のパッケージは、godoc.orgで閲覧できました。Goはソースコードにすべての依存関係をインポートパスとして記述します。そのため、インポートパスさえあれば簡単にパッケージドキュメントが生成でき、https://godoc.org/github.com/tenntenn/greetingのようなURLをブラウザで開くだけで閲覧が可能でした。 godoc.orgの存在によってREADMEにパッケージドキュメントへのリンクを貼るだけで済むようになりました。簡単にドキュメントが生成できるため、ソースコードにドキュメントコメント書く文化の浸透にも寄与したのかなと思います。 Go Modulesが登場し、パッケージを束ね、バージョン管理をする単位としてモジ
はじめに time.Now関数を用いたコードをテストする場合、テスト対象のコードに次のような変更を加える必要があります。 引数に現在時刻を渡す パッケージ変数やフィールドなどに現在時刻を返す関数やインタフェースを設定する context.WithValue関数でコンテキストに現在時刻を設ける どの方法を用いてもプロジェクトの初期から考慮する必要があります。途中で変更するとなると修正が箇所を漏れなく探し出す必要があります。また、パッケージ変数に現在時刻を返す関数を設定した場合、テストを並列に実行することを諦める必要が出てくるでしょう。 このような課題を解決するために、testtimeというライブラリを作成しました。 テストの並列実行と時刻の固定 次のようにパッケージ変数を使ってtime.Now関数のラッパーの挙動を変えてテストする手法があります。 var nowFunc func() tim
GraphQLの静的解析ライブラリgqlanalysis 副業をしているAppify TechnologiesにてGraphQLの静的解析ツールをGoで書けるライブラリgqlanalysisを作りました。またそれに合わせクエリのセレクションにidの追加忘れを指摘するlackidとgqlgoオーガナイゼーションで開発した静的解析ツールをまとめて実行できるgqlintも公開されています。 gqlanalysisを用いるとGraphQLのスキーマやクエリファイルに対するLinterを簡単に作ることができます。gqlanalysisはGoの静的解析ツールライブラリのgo/analysisに似た構造で作ってあります。 go/analysisと同様にAnalyzerという単位で解析を行います。Analyzerは別のAnalyzerの解析結果を用いることができるため、静的解析ツールをモジュール化できます
Takuya Ueda is one of organizer of Go Conference in Japan. He is Google Developer Expert (Go). He works for the growth of the Go community in Japan. He also loves the Go Gopher and drawing Gopher illustrations.
はじめに 先日、Goの公式ブログにてジェネリクス(型パラメタ)が正式なプロポーザルとして提案されたとアナウンスがありました。ブログによると、プロポーザルが承認された場合には、今年の年末にはGo 1.18のベータ版の一部として試せるものが出てくる可能性があるとのことです。 細かな仕様については、以前から公開されているDraft Designを読むか、私の年末のブログを確認してください。この記事では、プロポーザルで提案されているインタフェースの変更が今後拡張された場合にどのような応用ができるのか考察していきます。そのため、プロポーザルで提案された機能がリリースされたとしても、ここで考察している内容が実装出来る訳ではありません。ご注意ください。 型リストを持つインタフェース プロポーザルでは、以下のようにインタフェースに型リストを記述することが出来るようになりました。 type addable
登壇資料 エディタの壁を越えるGoの開発ツールの文化と作成法 at VimConf 2016 条件式評価器の実装による管理ツールの抽象化 at Go Conference 2017 Spring 静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話 at builderscon tokyo 2017 Goにおける静的解析と製品開発への応用 at ハッカーズチャンプルー2017 Static Analysis in Go at Golang UK Conference 2017 Goでかんたんソースコードの静的解析 at プロ生勉強会 第46回 粗探しをしてGoのコントリビューターになる方法 at Go1.8 Release Party goパッケージで型情報を用いたソースコード検索を実現する at Shinjuku.go#1 Go静的解析ハンズオン at 第6回Go
この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 はじめに この記事はGoアドベントカレンダーの1日目の記事です。 スライスの実態 runtimeのコードをみるとGoのスライスは以下のように定義されています。 type slice struct { array unsafe.Pointer len int cap int } reflectパッケージのSliceHeaderを見ても次のような定義になっています。 type SliceHeader struct { Data uintptr Len int Cap int } つまり、Goのスライスは次の図のように、配列へのポインタと長さと容量を持った値として表現されています。 runtimeとreflectパッケージでポインタがunsafe.Pointerとuintptrで表現方法は違いますが、ど
本稿はGo5 Advent Calendar 2019の25日目の記事です。 本稿で扱っている内容は今後変更される可能性があり、必ずしもGoのバージョンアップで取り込まれるというようなものではありません。 GopherCon 2019のIan Lance Taylor氏のGenerics in Goというセッションとその後公開されたDesign Docではコントラクトという機能が紹介/定義されています。 Design Docに登場したコントラクトは以下のように、型パラメタへの制約定義したものです。 contract C(P1, P2) { P1 m1(x P1) P2 m2(x P1) P2 P2 int, float64 } // コントラクトCを用いて関数fの型パラメタに制約をかけている func f(type P1, P2 C) (x P1, y P2) P2 { // (略) }
はじめに 本稿はGo Advent Calendar 2019の25日目の記事です。 筆者は静的解析が大好きでオリジナルの静的解析ツールを作ったり、静的解析ネタで登壇したりしています。 https://github.com/gostaticanalysis https://github.com/gcpug/zagane Mercari Advent Calendar 2018の“Goにおける静的解析のモジュール化について”という記事をで書いたように、Goの静的解析ツールは再利用性を考え、モジュール化する流れになっています。 本稿では静的解析のモジュール化における課題と今後のエコシステムを考察します。 静的解析のモジュール化 モジュール化は、静的解析ツールをgolang.org/x/tools/go/analysisパッケージ(以下、analysisパッケージ)のAnalyzer構造体の単位
Quoteを行う Goで文字列を""で括って(Quoteして)表示したい場合、fmt.Printf関数を用いて行うことが多いでしょう。 package main import "fmt" func main() { fmt.Printf(`"%s"`, "hoge") } これを実行すると以下のようになります。 $ go run main.go "hoge" 文字列中に"が含まれていた場合に、Goのソースコード上の文字列のようにエスケープする場合には%qが便利でしょう。 package main import "fmt" func main() { fmt.Printf("%[1]s %[1]q\n", "hoge") fmt.Printf("%[1]s %[1]q\n", `"fuga"`) } これを実行すると以下のようになります。 $ go run main.go hoge "hog
2016年9月にメルカリに入社してから3年がたちました。 所属はメルペイのエキスパートチームです。 3年間同じチームなのは社内ではめずらしい方ではないかなと思います。 エキスパートチームはこちらの記事にあるように「技術をアウトプットするところに技術は集まる」という言葉を大事にして活動しています。 3年前から変わらずGoに関する登壇やコミュニティ活動を中心に行っています。 3年前と変わってきたなと感じるのはGoを企業で採用する例が増え、 仕事としてもGoを用いて開発する人が増えた点かなと思います。 Goの需要が増えた分、Goエンジニアの採用もなかなか難しくなってきた印象もあります。 golang.tokyoなどを通じてGoエンジニアの採用について意見交換したり、 どうしたらGoのエンジニアが増えるのかを考えたりしています。 エキスパートチームの活動としても業界全体でGoエンジニアがどうやった
mattnさんと同様にGoogle Developer Expert (Go)になりました。 私がGoを触り始めたのは2010年くらいで大学の研究で作っていたコンピュータシミュレーションを行うためのプログラムで利用し始めたことがきっかけでした。 はじめのうちはGoについて周りで知っている方はほとんどいなかったので、オンラインのビデオチャットで数名と情報交換をしていました。 その後、ちょっとずつユーザや興味を持つ方が増え、2012年には名古屋や豊橋でGoの勉強会を行うようになりました。 そして、東京に引っ越し、Go Conferenceやgolang.tokyoなどのGoコミュニティを運営してきました。 東京のGoコミュニティがどんどん活発化し、東京以外でも福岡、大阪、仙台、岡山、沖縄など日本中で勉強会やコミュニティが活発になってきました。 現在では世界中でGoが利用されるようになり、いたる
このページを最初にブックマークしてみませんか?
『tenntenn.dev』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く