屈強な男性のブログ

チャンピオン・ジャンプの感想を中心に、日々の雑記とか諸々

golang(Go言語)でGoogle App Engineプログラムに挑戦

 

2年位前からずっと興味があった、GAE⁺Goにチャレンジしてみた。

ずっとやろうとは思っていたけれど、時間と体力と気力がなくて、ちょっと手を付けては辞めての繰り返しだった。

 

<動機 なぜチャレンジ?>

僕は普段、工場のバッチシステムを作っているわけさ。古いJavaでさ。

そこはすげーレガシーな世界で、いまだに「Cobol」とか「ホストコンピュータ」とかがのさばっているのさ。流行りの「クラウド」とか「Paas」とか「Ajax」とか「SPA」とかとは縁遠い世界なわけさ。

 

まあ、そういう単語が最先端だったのも随分前だけれども、時間の流れから取り残された工場で働く僕としては、やっぱり最先端に見えて仕方ないわけさ。

輝いて見えるね。

 

つーか危機感が強いね、明らかに遅れているもんね。

ある日突然、工場長が、

「これからはクラウドでPaasでAjaxでSPAだよねー。」

とか言い出したら、ついていけないもん。

要領のいいひとは管理職とか上流行程とかプログラムを触らない立場に逃げられるんだろうけどさ、俺にゃあ、無理だ。

むしろ上流に行きたくない。上流は営業の世界だから、人間の操作が面倒くさい。だったら、技術を覚えてPGやってるほうが気楽だ。

 

 

<なんでGAEなのさ?>

クラウドをいろいろ調べてみると、無料なのが「GAE」こと「Google App Engine」だったんだ。他のは大体、有料だった

AWSやAZUREもあたってみたが、クレジットカードの登録が必要だった。

 

あと、ちゃんと本番環境にデプロイできたからだ。

※HEROKUも試したが、原因不明なデプロイエラーがでた。GAEはちゃんとデプロイできた。

phpレンタルサーバも試したが、php.iniが嫌だし、動的型付言語はランタイムエラーの解決が難しすぎる。

 

Javaを試す→しっくりこない>

GAEは複数のプログラム言語に対応していて、

 

よく使われている言語JavaPythonPHP、Go でアプリケーションを作成できます。

 だそうだ。

 

第一のターゲットはJavaだった。だって僕、Javaしか知らねーもん。

だけど、Javaって遅いんだよ、クソ遅い。

PaaS最前線!たったの15分でできるGAE/GO入門! - apps-gcp

で紹介されているように、遅いんだ。

ただし、Slim3ってフレームワークを導入すると早くなるらしい。

 ・・・うーんフレームワークかあ。嫌だなあ。

 

たとえばStrutsを経験したひとならわかると思うけど、Javaフレームワークってクソい難しいんだよね。だったら、新しい言語を覚えるほうが楽なんだよ。

これは世間の常識から外れているけど、真実なんだよ。

フレームワーク特有のクセに対し、いちいち対策を立てる必要があるし、フレームワークがカバーしていない問題に関してはハードコーディングが必要になる。

そもそも「フレームワークがカバーしている範囲」を知ることが困難だ。

 

Pythonを試す→ヴァージョンの差が激しすぎぃ>

新しい言語を検討して、Pythonを試したが、Hello worldでエラーがでた。

調べてみると、

Pythonでは 2.x 系と 3.x 系でとんでもないレベルの差異がある。

それこそHello worldに影響が出るレベルで!

 

<Goは楽>

で、Go言語を試してみたが・・・これは楽。

基本的な構造はJavaと大差ないから、経験を生かして学習できる。

※ポインタはCの勉強経験がそのまま利用できた。

Go言語は、JavaC++の「便利だけど難しい機能」を削除した言語だ。

機能を厳選したおかげで、仕様が小さく、学習コストが低く済む。

 

Go言語。いやgolang、気に入りました。

 

そんなわけで、ちょっとずつ開発を進めていますが、いかんせん本業の合間なので、遅遅として進んでおりません。

 

でここで結果を発表したかったが、まだ、成果物はできていません。

ちょっといい感触をつかんだので、そのうち発表できると思います。

 

 余談っつーか本談①

 

話は変わるけどさあぁ、Go言語ってほんとーに検索しづらい単語だよね。ポケモンGoばかりが引っかかる。

golangを正式な日本語名にしてほしい。それこそ「golang言語」でもいい。「頭痛が痛い」みたいに意味が重複してしているが、ググりやすさのほうを優先してほしい。

 

 余談っつーか本談②

 Javaって難しすぎると思うの。たとえば言語標準の機能、

・継承

アノテーション

ジェネリクス

ラムダ式

・ストリーム

って100パーセント理解して使いこなせている人ってどれくらいいるんだろう?

そのうえに、Servret、DI、ORマッピングが乗るからね、さらに、デザインパターンときたもんだ。僕にゃあ無理だね。

 

その点、Goは機能自体が少ないから、まあシンプルだし、楽だね。