📉

BMI計算プログラムでGo言語に入門してみる

2022/07/23に公開

Go言語はC++に代わる最速なプログラミング言語?

今まではC++が動作などが最速なプログラミング言語と思われていましたが、C++は古いのでそれに代わる言語が求められました。そこで検索大手のGoogleが開発したのがGoという言語です。しかしGoだと他にも多く使用されている言葉なので、Go言語かGolangと言われています。

Go言語は他の言語には無い多くの長所がある

Go言語は最近ランキング上位に急に上がった言語です。人気が急上昇した理由は以下だと思われます。なお以下以外にも長所はありますが、冗長(無駄に長文)になってしまうので省略しています。

Go言語は静的型付け言語なので正確?

型付けとは例えばWebフォームで文字入力をする時に、入力者が英語の数字を入力する所を日本語の数字を入力した場合などに、誤入力が出来ないように出来ます。これを開発者が決めるのが静的で、自動で決まるのが動的です。動的は楽ではありますが、人間が確認した方が正確かもしれません。TypeScriptを使用している専門家な人も、静的型付けが出来るので好んでいます。

Go言語は動作が早く速度こそ集客アップのSEOに通じる

C#やJAVAも静的型付けではあるのですが、VM(仮想マシン)を使用し動作が遅くなるので、早いGo言語やRustやフラッターやNext.jsなどが注目されいています。ただしVM以外のネイティブ(スピーカー的)なハードコンパイル(コンパイル)する言語の速度は早いです。

Go言語はコンパイルだけでなくインタプリタでも使える

コンパイルとはプログラマーが読めない機械語に翻訳するということです。ユーザーが使用する直前にコンパイルするインタプリタと違い、コンパイル言語は最初からコンパイルしているので、速度が早い長所があります。しかしインタプリタですと、プログラミングを間違っても、コンパイルする手間が無く楽です。

WindowsでプログラミングするならVBスクリプトでコマンド操作が楽

WindowsでもGo言語はインストールすれば開発・動作が出来ます。これはWindowsのツールとしても、Go言語は使えるということです。他の言語ですとWebでは使えてもスマホのアプリとしては使えませんが、Go言語はアンドロイドの開発元が、Go言語と同じGoogleという長所があります。これはWindowsに対するVBスクリプトも言えるかもしれません。

インタプリタで動作するコマンドは「go run main.go」です。「なぜmain.goという書類名が多いのか?」というと、あまり数が多い書類名だとシステム管理が面倒だからや、一々コマンドを入力しなくても、ダブルクリックするだけで動作するVBスクリプト書類を作れるからです。以下がディレクトリ(Unixなどの名称でWindowsだとフォルダ)構成と、そのスクリプトなどです。

▼ ディレクトリ構成

[root](WindowsだとC:(Cドライブ)などの最も上の場所)
  └─ [home] <-- WindowsでもUnixの様にすると、開発する上で便利。
       └─ [go-lang] <-- 言語やフレームワーク別のWindowsのフォルダ
            └─ [bmi]  <-- このレポジトリ(プロジェクト)のroot
                 └─ go run main.go.vbs  <-- この書類をダブルクリックすると、
                 └─ main.go                  main.goが起動する。
                 └─ README.md  <-- このレポジトリの説明文で、ここのみに作成する。
(ソースコードに全体思想なコメントを多く書くと混乱するため、READMEを1書類だけ作る)

▼ ダブルクリックで起動できるスクリプトのソースコード(中身の文章)

go run main.go.vbs
Set oWshShell = CreateObject("WScript.Shell")

'この書類はmain.goと同じ階層に設置か、以下のパスを書き直してください。
'cmd /kは端末画面がすぐに消えて見れないのを防ぐ処置です。
oWshShell.Run "cmd /k go run main.go"

▼上記の書類をダブルクリックすると、以下のコマンドプロンプトが表示

▼上記のBMI計算プログラムのソースコードは以下

main.go
package main

import (
  "fmt"
  "math"
)

/* 定数(const)*/
const (
// 体重(kg)
	weight = 62
// 身長(cm)
	height = 166
)

/* 関数(func) */
func main() {

/* 変数(var) 
形式は「var 変数名 型名」
本書類程度のユーザーが文字入力無しなプログラムなら型は省略可能 */
  var shinchou = height / 100.0
  var bmi = weight / math.Pow(shinchou, 2)
  var hyoujun = math.Pow(shinchou, 2) * 22.0
  var keisan = weight / hyoujun * 100

/* PrintかPrintlnかPrintfで表示可能 */
  fmt.Printf("BMI(17以下が痩せすぎ、25以上が肥満)=%f\n肥満度(100%が標準体重)=%.0f\n", bmi, keisan)
}

上記のソースコードには、Go言語というか多くのプログラミング言語の、最初の基礎をまとめたつもりです。逆にいうと、難しい部分はまだ含めていません。

BMIとは肥満を体重と身長から計算する指数

BMIとはボディマスインデックスの略で、身体測定や介護保険などでも参考にされている指数という目安です。

BMIの医療アプリ作成者は求人募集されやすい

プログラマーの求人案件では、最近は医療アプリなどのニーズも増えています。プログラミングと医療の基礎を覚えるのにはBMIの把握は最適です。

BMIは表計算ソフトの書類に計算式を埋め込める

アプリを作っても良いのですが、表計算ソフトの書類にも毎日のBMIなどを年単位で、簡単に埋め込めるので、体調管理もしやすいです。プログラミング言語で年次推移のチャートも作れますが、それよりも表計算ソフトで作った方が簡単です。

アプリを作るよりも表計算書類を作成の方が、早く簡単に高機能に出来ることもあるかもしれないので、表計算も知っておいた方が良いです。といいますか、表計算ソフトは事務や勤怠・工務・資産管理などでも使うので使えた方が良いです。

プログラミングor表計算をするかは最初にコストを考える

プログラミングは学習時間や開発時間などのコストがかかります。方や表計算はそのコストは減りますが、Webで広く公開・宣伝するなどの機能が落ちます。しかし「そこまで必要が無く会社の事務ツールとして早く欲しい」などのニーズもあると思います。

Go言語は多くのIDEに対応しフレームワークを必要としない?

よくあるエージェントの求人案件の事例はエクセルのマクロな自動機能である「VBAで作れる方募集」などです。ただしこのマクロもテキストエディタによっては、JavaScriptやVBスクリプト(VBAと類似)で作れるものがあります。

クライアントソフトorクラウドを使用かはケースバイケース

これはIDE(開発ソフト)は、そのようなテキストエディタを代わりとして使えるということです。そのようなフリーウエアは速度も早く軽快です。このような自分のPCなどのアプリをクライアントソフトと言います。

そもそもGitHubやデザインツールなどを見ると、Webページでクラウドで作成という時代でもあります。テキストエディタの不利な点は、クラウドなどと違い、エラーを記録できないなどではありますが、それほど必要とは思えません。なぜなら今の時代はテンプレートやフレームワークが多くあり、白紙から試行錯誤してコーディングをしなくても良いからです。

Go言語はバックエンドを支える有力なインフラに成りつつある

Go言語にも有名なフレームワークはありますが、他の言語と違い決定版と呼べるものはなく、数が多くあります。ただしGinが最も多くシェアを占めて、求人案件が少しはあるようです。しかしもう多くの大手サイトや、仮想通貨や、自動デプロイ機能や、多くの求人案件で求められるDockerでは9割もGo言語が使われているので、今後も安定したGo言語のニーズが続くと思います。

まずはニーズが多いものから習得した方が良い

Webアプリケーション開発というのは、ニーズが多いや新しいものを集めるので、多くの知識が必要となります。例えばフロントエンドなら描画速度が早いNext.jsと、バックエンドはGo言語を組み合わせて使用するなどです。ただしNext.jsよりも描画速度が遅いReactの方が現在では求人案件があります。

最新情報を常にチェックした方が良い

Next.jsはニーズとソースが多いReactのフレームワークで共通している部分がありますので、ニーズが少なくても勉強しておいて損は無いと思います。また画像は再編集可能なSVG書類などが最近のニーズです。またGo言語のコンパイラなどは半年おきに更新されているようなので、これもGo言語の公式ブログなどで、最新情報をチェックした方が良いです。最新のものとちょっと古いもので、圧倒的な差が出てくるのは、Web以外の投資やビジネスなどでも多いです。

Discussion