Location via proxy:   
[Report a bug]   [Manage cookies]                

Goの勉強① WebSocketでチャットアプリをつくる

www.oreilly.co.jp

近所のブックオフにGoの本が300円で売られていたので購入
ちょうど仕事でGoを使うことになったため貴重な休日をつぶして勉強する

なぜ今更Go?

今までGoは使っていなかった

自分は元々社内に知見がないような技術を検証するチームで働いており、そのメンバは全員フルスタックエンジニアで超少数編成(多くて4人)であった
少人数かつフルスタックゆえに全員が画面もバックエンドもインフラも触る関係で、あらゆるコードをTypeScriptで統一しよう、という方針で仕事をしていた
そんなバリバリ技術やるぞやるぞやるぞなチームになぜか新卒の時からいたため、今まで積み上げたキャリアのほとんどはTypeScriptと戯れていた時間に

Goを使うチームへ

流石にずっとこのチームにいるとスキルセットが歪になると思ったためでかめのチームに合流させてもらうことに
そのチームで開発しているシステムは大規模でシンプルなRESTfulサービスであるため、画面、バックエンド、インフラとチームががっつり分けられている
そしてそれぞれのリーダが自由にチームビルディングをして...という感じの文化で、
自分が合流したバックエンドチームではプロパー、パートナー問わず大量のメンバが割と短期間で入れ替わりまくる環境ゆえ、比較的学習コストの低いGoを採用したとのこと

そんなこんなで全く触ってこなかったGoを勉強しなければならなくなった

GoでWebSocket使う

前置きはこれくらいにして、さっそく例の本を片手に勉強してみる

第一章ではWebSocket(最初はRESTじゃないんかい!)を使ったチャットアプリの解説がなされていたため手を動かしてみる

初めてのコード

package main

import (
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte(`
          <html>
              <head>
                  <title>チャット</title>
              </head>
              <body>
                  <h1>チャットアプリ</h1>
              </body>
          </html>
      `))
    })

    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatal("ListenAndServe", err)
    }
}

localhost:8080にアクセスした際にHTMLを返すだけのコード
http.HandleFuncがよくあるハンドラで、ResponseWriterに何かしら渡せばHTTPレスポンスを返せるんだなぁくらいは分かった

なにこれって思ったのは以下の部分で

   if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatal("ListenAndServe", err)
    }

Go特有のエラーハンドリングである、関数の戻り値として返される例外を検知してごにょごにょする、というのをやっているのわかったが...
どうやらif文の中でerr変数に例外を突っ込んでそのまま評価をしているっぽいが、こんな表現見たことないのでまあまあ混乱してしまった

とまあこんな感じで現在ミリ知らGolangの勉強中
とりあえずCleanArchitectureでSQLiteにでもCRUDできるREST APIを作れるようにはなろうと試行錯誤中

完成したらまたブログに書くかも

Slay the Spireで気持ちよくなった話

いきなりヤバイ
ネオボでまさかの包帯を貰ってしまったランが超気持ちよかったのでブログに書いてみた

使用キャラはサイレントでA20Hに挑戦!

第一層

初手包帯は熱い!と大興奮したものの、やはりサイレントは初期デッキがゴミすぎて他キャラに輪をかけてアタック不足
早々によさげなアタックがないとジリ貧でスライムボスに蹂躙されるだけ...と思ったら

\イカサマ一発ツモ/

火力不足なら防御積みまくればいいじゃないと言わんばかりのツモ運
一層であればこれだけでも防御は十分、あとはひたすら火力を盛ることに集中して登塔を続ける

剣の舞 + とどめの一撃という黄金コンビも確保

包帯とシナジー抜群な鋼の嵐!

道中のエリートでティンシャまでゲット!!

包帯ティンシャは熱すぎる

結局一層は難なくクリア、それはもうスムーズにいきすぎてスクショ取り忘れたほどに
なお報酬はアンロード、融合ハンマーを入手
なお、今後の展開を考えると結果論融合ハンマー取らない方が良かったかも
結果論じゃなくても他のでよかったかも

第二層

途中で毒の卵を入手したのと融合ハンマーを貰ったのもあって完全にスキル一辺倒のピックをした

すべてUG済みのアクロ×3 準備×2 イカサマ×2というディスカの鬼

ボスはブロンズオートマトン君だったけど包帯でブロックガンガン積めるせいでハイパービームも余裕で受け切っての完封勝利
映す価値無し

ディスカと相性がいい凧も手に入れたけどエナジー過多感は否めない

第三層

もはやドローカード連打してるだけで勝手に相手が全滅するような状態になってしまったため、ほぼ消化試合のようになってしまった
本来クッソ相性が悪いタイムイーター君ですら完封

なにこれ

終点

相も変わらずディスカで攻撃と防御を行う意味不明のデッキで突き進む

HP満タンで矛盾戦というのは珍しい気がする

三枚目のイカサマを入手

いよいよ心臓戦!

...特に語ることがないほどに無双してあっさり勝利した

無敵になったからやめたけどまだまだ回せた

結局貝の化石のバッファも剝がされぬまま完封勝利

最近A20Hで一層すら突破できないスランプに陥っていたが、今までプレイした中でも一、二を争うほどの上振れで堂々たる完封勝利を収めることができた
週末仕事終わりのしんどい時間を癒すことができたのでささやかな自慢がてら書き起こしてみた

圧倒的ドローカードの暴力

はじめに

はじめまして そこらのアラサー独身男性です

特筆するような趣味もない陰キャを脱するために思い付きでブログを始めてみました 3日坊主にならないよう週に3、4回は更新するのを目標にぼちぼちやっていこうと思っています

どこかのだれかのほんの一瞬でも時間つぶしになれたら幸いです