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

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

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

画像

【話し手】
白川 みちる(SHIRAKAWA Michiru)

(micchie)

Go言語コミュニティのオーガナイザーを務める。プログラミング初学者向けの教育に興味がある。

GitHub:mi-bear
Twitter:@micchiebear
URL:https://web.womenwhogo.tokyo/

技術分野は成熟が進み,新しい領域が急激に増えています。本コーナーでは技術へのタッチポイントを増やすことを目標に,各分野で活躍されている方をお迎えします。

今,Go言語は広く受け入れられています。しかし専門外の立場からは実際の使い勝手は意外とわかりにくいものです。言語の強みや利用の指針を知るために,Goコミュニティで活躍して普及に尽力されている白川さんへインタビューしました。等身大の魅力をうかがいます。

Goとの出会い

日高:まずGo言語に触れた経緯についてお聞きしたいと思います。

白川:うまく話せるか不安ですが6年ぐらい前が最初の一歩でした。当時在籍していた会社ではボランティアプロジェクトがあり,バッチ処理を作ったのですよ。Goで。

日高:じゃあ,たまたま選んだと。慣れた言語でやることもできたと思いますが何か理由があったんですか?

白川:そのころの私はPHPを10年ぐらいやっていたのですが,言語は何でもいいよって言われたのがきっかけで,私もちょっと違うものにチャレンジしたいな,という気持ちがありました。

日高:なぜそこでGoに行き着いたんですか? 光るものがあったとかでしょうか。興味がでてきました。

白川:あまり覚えてないですがキャラクターが可愛いかったのが印象に残っています。多分Twitterか何かを見ているときに目についていたんでしょうね。

日高:センスを感じますね。可愛い……なるほど。あのキャラクターの元になったのは……。

白川:ネズミですかね。彼はホリネズミ(英語でGopher)です。はい。

日高:Go言語のファーストインプレッションはどうでしたか。

白川:PHPをずっと書いていて,開発チームの中でスタンダードなコーディングルールを作ることにすごい苦しんでいたんですよね。Javadocのルールをまねて,チームに導入したり。でもGoは言語仕様もシンプルで,最初からこう書けばいいんだ,と理解できるし,gofmtでコードフォーマットをかけられる,めっちゃいいじゃんって思いました。

日高:苦しんでいたことが簡単に実現できるのを見てしまうと,めちゃくちゃ響きますね。

白川:そうです。バッチで書いた業務処理のパフォーマンスも良くて。

日高:あー,業務向けだし,バッチは決められた時間内に終わるのも要件だったんですね。パフォーマンスも確認できたのか。バッチでGo言語を始めたというのも多分,良かったんでしょうね。最初からプロダクトにっていうよりは試行錯誤する時間もあったってことですか。

白川:確かにそうですね。全然詳しくなかったのでゴルーチンをなんとなくで導入していたりと,今振り返ってみるとひどいコードだったと思うのですが,体験が良かったです。

シンプルに書ける魅力

日高:さらにGo言語を触ってみよう,詳しくなりたいと感じた経験は何かあったんでしょうか。業務だとPHPを使っていたというお話だったので。

白川:勉強会にたまたま参加して,そのあとにのめり込みました。Women Who Go Tokyoというコミュニティが毎月開かれていて,なにかしらのテーマがありました。そこからGo言語に定期的に触れるようになりました。

日高:6年前だから,多分2015年から2016年ぐらいのころの出来事でしょうか。興味が出たときにコミュニティがあったのは良かったですね。そのころのGo言語って今と比べてもっとシンプルだったんですか? それともほとんど変わらない体験が実現できてたんですか?

白川:プロダクトで深くGoに触れる経験は今までになく,踏み込んだ開発ではわからないのですが,バッチを書いたり,コマンドラインツールを作ったり,ちょっとした開発ツールを書いている範囲では大きな違いはありませんでした。ただ最近はベンダリングツール注1も整っていて,現在のほうがずっと便利に感じます。

日高:Go言語のファーストインプレッションのくだりでも開発ツールにちょうど良かったと出てきていましたが,利用歴が長くなるにつれて使い方も変化がでてきたりしましたか?

白川:最初のうちは手元で便利なことをしようと思うとすぐPHPを選んでいたんですよね。PHPもすごく好きだったので。でも,もうここ数年はずっとGoを使ってます。環境構築が楽なんですよ。

日高:詳しく知りたいですね。僕はAndroidエンジニアですが,開発にはAndroid Studioなどの統合開発環境がやっぱり必要です。そのへんの事情の違いが気になります。

白川:過去に仕事で使ったPHP以外にRubyなどもちょっと触っていたのですが,私にとってはGoとVimがあればそれだけですぐに開発がはじめられる,というのがシンプルでよかったです。前述のコードフォーマットのgofmtも標準の開発ツールですし。

日高:すばらしい。ご自身の開発スタイルに合っていたんですね。

白川:そうですね。GoにもGoLandという統合開発環境があります。でも私はターミナルで操作しちゃうことが結構多い。ちゃんと環境を整えるよりも思いついたときにサッと使いたいんだろうなと。

日高:開発環境自体も整理されているけど自分のスタイルにGo言語が合っていたというのが大きそう。この6年間の経験を通してGo言語の一番の魅力的だなっていう点を挙げるとしたら何がありそうですか?

白川:私は,最初に出会ったコミュニティであるWomen Who Go Tokyoのオーガナイザーになったのですが,そこではプログラミングの勉強会も開催しています。ライフワークとして数年間続けているのですが,そのとき思うのは,書き方がシンプルなのでレビューがしやすい。正解だって感じるパターンがある程度わかる感じがあります。

日高:ひとつのことを実現するのに,コダワリみたいなのが入りにくい,単一に近い書き方になるということでしょうか?

白川:そうです。そこが結構いいなと。同じ言語を使っているけど所属や人によって音楽性の違いをたまに感じるんです。Go言語の世界では音楽性の違いが起きにくい気がします。また,私が過去に触れた言語よりは型が強いので,余計にちゃんとしていると感じました。だから初学者が自分で間違いに気付きやすい,教えていて手がかからない,そういう点で学び始めに合っているなと感じています。

注1)
ライブラリやバイナリの依存関係解決ツール。Go言語ではGo Modulesが有名。

著者プロフィール

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

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

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

バックナンバー

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

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