GMO DevelopersDay
GMO DevelopersDay
2024.11.29Fri - 11.30Sat YouTube Live
イベント開催まであと11

GoとTypeScriptはいいぞおじさん

最近、仕事と私事でよく使っているGoとTypeScriptについて
今更ながらここがいいぞポイントをお話しようかと思います

はじめに

こんにちはネットワークソリューション部の梅崎です

最近、仕事と私事で物を書くときGoかTypeScriptをよく使っているなと思いまして
今更ながらここがいいぞポイントをお話しようかと思います

Goのいい所

周辺ツールが良い

C/C++とかを昔書いていたのですが小奴らはいわゆるオフィシャルな開発環境が無いなと思ってまして
Hello worldも躓きポイントが多かったような記憶があります

その点Goは公式のコンパイラにコンパイラやらライブラリ(モジュール)管理やらが入っていて
tarポールを展開するだけで開発ができるというのが結構感動で
それだけでプログラム入門へのハードルが下がったんじゃないかと勝手に思っています

クロスコンパイルが楽

Goのコンパイラはターゲットを指定すれば複数のOS、CPUアーキテクチャで動作するバイナリができるのは
超便利で例えばCliツールをLinuxとWinowsで共有でき、しかもラズパイで動かすこともできる(はず)と言うのはだいぶ開発効率良いのではと思います

並行処理がラフに使える

さっくり軽量スレッドを立てられて後はランタイムがいい感じに管理してくれるのでめちゃくちゃ便利です
また、channelやWaitGroup、context、Lock機構など並列処理で欠かせない物が一式揃っているので
実装したい内容に注力できるのがいいですね~

(脳内がマルチスレッド(not 非同期処理)に外部ライブラリが必要な世代で止まっていたので、goroutineは感動ものでした)

標準ライブラリ(準標準含む)で出来ることが多い

jsonエンコード/デコード、httpサーバーからwebsocket、引数処理から文字列処理いろいろ、バイナリエンコードなどなど
外部ライブラリを探して「これは信用できるのか」「今後のメンテナンスはされるのか」「シェアはどれぐらいなのか」などをあまり深く考えずに色々出来るのが良いです

私が作ったものでgRPCと(アーカイブになってしまった)gorilla/mux以外に使ったことが無いぐらいには
標準ライブラリで出来ることが色々あります
(GUIを作っていないことも大きいかもしれないですが)

作成物はシングルバイナリで出せる

SCPなどで1ファイルを送るだけでプログラムが動くので便利です(一部コンパイラオプションが必要ですが)

書き味もそんなに悪くない

C系から入ったのではじめこそ戸惑うことも多かったですが慣れれば案外悪くないなと思います
(ただ、短命な変数やレシーバーを一文字にする文化はまだまだなれませんが)

型推論も便利です

TypeScript のいい所

型がある

型があるのは個人的に必須事項として

トランスパイラのオプション次第では関数呼び出しなどでNullable(undefined)を判定するかを指定でき
Nullチェックを挟めばそれ以降はNullでは無いものとして扱えるので
ぬるぽでガッっとされないのは便利です

逆に明示的に型情報をなくして(Any)ざっくりも出来るっちゃできるのも
選択肢が自由でいいなと思うところです

ブラウザが基本何でもやってくれる

これ以降はJavascriptと共通なのですが

ブラウザのAPIが超便利で特にGUIを作りたいとき
HTMLとCSSと言った画面装飾とロジックのJavascriptを分離出来るのは
脳みそを圧迫しないのでよいです

ライブラリ要らずで出来ることが多い

私はVanilla JS信者なのですが Vanilla JS であまり困ったことは無く
HTTPアクセスやwebsocketから、画面描画(canvas)にAudio、永続ストレージ、バイナリ操作まで
殆どのことはブラウザベンダーの肩に乗っかって開発が出来きると思っています

(特に何も考えずに、windowを出してその上にを文字を描画できるのがすごいと思います)

覚えると使い道が多い

仕事でも土日の暇つぶしでもブラウザを使っていることが多いと思うのですが
TypeScriptが書けるとブラウザの拡張機能が作れるので

変な広告を消したり、押しづらいボタンを修正したり、画像や動画をダウンロードしたりなどなど
時短や自分のストレスポイントを減らせるのでおすすめです

ブラウザの拡張機能まで行かないにしてもサクッと開発者パネルを開いて
コードをポチポチして流し込むんでスクレイプみたいなことも出来るようになります

さいごに

つらつらと便利ポイントを書いてきたのですが
外部ライブラリ(特に3Dや機械学習)を使うときなどは別の言語を選ぶ必要にかられることもあると思います

そんなときはgRPCはいいぞおじさんにクラスチェンジして
各言語をgRPCでつなげて、いいとこ取りしたアプリを作っちゃえばいいのではと考えてたりします

ブログの著者欄

梅崎 皓太

GMOインターネットグループ株式会社

ネットワークエンジニア。GMOインターネットグループ株式会社のバックボーンから商材までのネットワーク設計・構築・運用を担当しています。 写真はマイニング事業で北欧に飛んでいたときにブリザードに遭遇した後の写真です。冷たすぎてiPhone電源落ちちゃってビックリ

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック