ちょっと気になる隣の技術畑

第1回 Goという選択肢はベストだったのか

この記事を読むのに必要な時間:およそ 3 分

日高:音楽性の違いっていう比喩はおもしろいですね。今お聞きした中に初学者に教えるとありましたが,社内教育などでGo言語のメリットを感じたきっかけがあったんですか?

白川:自分と同じように大学でコンピュータサイエンスを学んでいない女性などの採用に力を入れていたことがあります。プログラミング未経験であっても,その方と一緒に立ち上がって仕事をしていこう,という活動をしていました。はじめはPHPやJavaScriptなどでやっていたのですが,Go言語を知ってからはかなり効果的だと思いました。特にGo言語の学習用のコンテンツを作って公開してくれていた人がいたことが大きいと思います。すごく良い題材を作ってくださっていて。

日高:Goが自分の活動に合っていて使いやすい言語だったと。Go言語の誕生が2009年なので,そろそろ10年,直近もGenerics導入の議論が進んでいるようです。どんどん進化して複雑に感じるようなシーンはありましたか。

白川:うーん,ない。ないかもしれません。私はWomen Who Go Tokyoの仲間たちと初学者にむけて技術書典で技術書を書いたりしています。年に2冊ぐらいのペースで,毎回異なるテーマの記事を集めていますが,特別大変だなぁと思ったことはないですね。Goは後方互換性に優れていて助かっています。Genericsについては,自分自身がそれを導入しなければならないような開発を担当していないため,そこには言及できません。

聞き手 日高正博

聞き手 日高正博

日高:ないんですね。素人考えだとバッチみたいな処理でパフォーマンスを求めようと思ったら複雑になりそうな気もします。

白川:Goは標準でベンチマークツールが存在しているので,まずは計測をすることを意識すると良さそうです。また,それらの情報は調べやすい状態にあります。Goのポータルサイトgo.devがあるので,だいたいの情報はそこで得られます。基本的にGoはGoで書かれているので,よく読むことは実装のヒントにつながります。

今まで経験した言語で嫌いなものはないのですが,いくらでも難しく書くことができると思うんですよね。Go言語を使い出した背景には,開発にシンプルさを求めていることが多いんじゃないかなと。読みやすい書きやすいっていうのは強調していいメリットだと思いますね。

コミュニティの存在

日高:言語のコミュニティがあって良かったと感じたところは?

白川:Go Conferenceっていう開発者会議をだいたい年に2回ずつ開催しています。昨年はちょっとお休みしたんですけれど。Go Conferenceも気が付いたらいろんな地域の人たちが手伝ってくれるようになっていて,ご当地Goという取り組みが生まれています。福岡,大阪,京都,仙台など地域コミュニティが増えています。

地域コミュニティの人たちどうしでの連携も増えていて,Goを書く人って増えてる,めっちゃいるんだなーっていうのが実感できました。

今はカンファレンス自体はオンラインになったので,ご当地の人たちが集まって,たとえば秋のGo Conferenceは関西在住のみんなにリードしてもらおうという取り組みもしています。

日高:オンラインになって会えないのは寂しいけど,距離が関係なくなった点でうまく連携してるんですね。

白川:そうですね,こうした取り組みはオンライン化がなかったら難しいですよね。誰しもが行きたいときに行けるとは限らないので。

言語の広がり

日高:将来,Go言語がこうなっていくとうれしいとか,こういう風になってほしいっていう希望はありますか?

白川:どうなんでしょう。私はそんなに大きく変わらなくても別にいいかなって思っています。そのときに必要なものを見つけてきてシンプルに終わらせたいので,その時々のスタンダードを取り入れていきたいと考えています。複雑な要素をなるべく回避したいんですよね。

結局メンテナンスも大変ですし,後方互換性がどんどん失われていくと,どこかで勇気を出してリプレースすることや破壊的な変更をしたくなることもあるはずです。その回数は可能な限り少ないほうがいいかなと思ってます。

日高:Go言語のシンプルさが設計を支援してくれているんだなぁとわかってきました。逆に,ここは気になるんだよな~,という弱点はないんですか?

白川:データベースの取り扱いやロガーはちょうどいいのがなかった時期があって悩んでいましたね。クエリを書くときとかログ周りは本当にこれでいいのかな?と構えるときがありました。エコシステムが広がっていて,ログのケースではサードパーティのパッケージを使って解決していました。

日高:なるほど,エコシステムが広がるにつれて足りないパーツが補われていったんですね。

白川:それは,すごく感じています。ベンダリングなどはGo Modulesが出てきて,依存性管理(ライブラリバージョンなど)もいい感じで解決をされてしまいそうです。

さらに,Go言語ってバージョンアップがあるとパフォーマンスも改善され続けているんですよね。毎回ちゃんと改善してくるの,すごいなと思っていて。逆に,よく友達に言われるのは「リストの取り扱いとかは結構めんどくさいじゃん!」とかですね。全方位にいい顔はできないので,PythonとかRubyのほうが向いてるときがあるかもしれません。自分がシンプルな解決方法で,そのときにあるものを使う考え方だから気になっていない,ということもあります。

写真1 取材時は白川さんのTシャツも話題になりました。

写真1 取材時は白川さんのTシャツも話題になりました。

Goという選択肢

日高:振り返ってみてGoはご自身にとってベストな選択肢でしたか?

白川:私の人生では,この選択肢はベストだったなと思っています。今まで選択してきた他の言語も好きなので,その経験があって今Go言語を使っていることがベストだと思ってます。楽しんでやったほうがいいよって言いつつ,技術書の執筆では締め切りとかあるので苦しんでますけどね。

日高:いい選択だ。Go言語がシンプルに書けるといっても奥は深そうだなと感じました。

白川:シンプルさは毎回苦しみながら試行錯誤しています。なるべく嘘なくシンプルを追求した形でアウトプットを出していきたいと思い続けてはいます。

日高:アウトプットの中のひとつ,Women Who Go Tokyoの活動も毎月続けられているんですか?

白川:そうです。毎月やってます。みんなで読書会やハンズオンをこつこつと進めたりと楽しんでいます。Go Conferenceも今年の秋と来年の春もやります。ぜひ参加してください。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.126

2021年12月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-12539-4

  • 特集1
    開発環境から本番環境まで一気通貫!
    実践コンテナ活用
    VS Code,Docker,Kubernetes,Azure
  • 特集2
    iOS 15開発最前線
    Swift 5.5,UI開発,通知管理,Xcode Cloud
  • 特集3
    作って学ぶ検索エンジンのしくみ
    Goで実装! 膨大な情報からどう高速に探すのか

著者プロフィール

日高正博(ひだかまさひろ)

Androidの開発者カンファレンスDroidKaigiや技術書イベントの技術書典を主宰。技術の共有やコミュニケーションに興味があり,ひつじがトレードマーク。(イラスト:shatiko)

GitHub:mhidaka
Twitter:@mhidaka
URL:https://techbooster.booth.pm/

バックナンバー

ちょっと気になる隣の技術畑