Libra Studio Log

開発に関することやゲーム、ガジェットなどについてつらつらと書き記しています

ゲーム「Horizon Zero Down」を購入

f:id:daihase:20220310182628p:plain

こんにちは、daihaseです。

これまためちゃくちゃ久々な投稿になっちゃいました...。 最近は事業の方も拡大し、色々忙しくなって中々開発に関わる記事など投稿することが出来ませんでした。 そんな中、ちょっと風変わりな投稿も交えていこうかなということで、今回初めてゲーム紹介に関することの投稿になります。

実は弊社ではゲームアプリを作っている経緯もあり、またパートナーのデザイナーさんによく資料としてゲームのUI/UXを見てもらい、業務で作成するアプリやWebコンテンツ制作に役立ってもらってたりもします。 結構ゲームなどのUIはアプリ制作においても参考になるようなデザインなども多く、他社さんと差別化図るためにも例えば同じiOS/Androidのアプリを作るにしても、こうしたPS4/5などのゲームのUIを参考にするのも非常にいいのかなと思うdahaseです。

さてはて、今回「Horizon Zero Down」というゲームを買って見たのですが、自分はプライベートではほとんどゲームをせず、最後にプレイしたのはFF12だったかと思います。 そんな状況で今回PS5で初めてHorizonを買ってプレイして見てびっくり。今ってこんなリアルで、ハイクオリティになってるんですね、ゲームって...。

ちなみに会社のPS5を繋いでいるモニターはDELLのALIENWARE AW2721D 27インチゲーミングモニターですが、こちらゲームを描画するのに非常に適したモニターとなっています。 PS5なので、240Hzリフレッシュレートはオーバースペック感が否めないですが(ゲーミングPCでの活用ならアリかもですね)

※実際のゲーム画面 f:id:daihase:20220310181001j:plain

f:id:daihase:20220310181004j:plain

(すごくないですかね、機械の細部まで見えるようだ...)

実はこのHorizonは既にPS5で最近続編のHorizon Forbidden Westというのが出てるんですよね。 ただ既存の超大作RPGなどと違ってまだ2作しか出ていないゲームなので、これからForbidden Westを買ってみよう、という方もまずZero Downから買って見てはいかがでしょうか?

それではよいゲームライフを〜

【PS4】Horizon Zero Dawn Complete Edition PlayStation®Hits

【PS4】Horizon Zero Dawn Complete Edition PlayStation®Hits

  • ソニー・インタラクティブエンタテインメント
Amazon

Go Moduleとgoenvを使った環境設定

f:id:daihase:20190809022658p:plain

こんにちは、daihaseです。およそ2年ぶりくらいの投稿です。 最近仕事が色々目まぐるしく変わっていて、更新する余裕がなかったので滞っていましたが、また少しずつやっていければと思います。

さて、本日はGo Moduleについて。 Go ModuleはGo1.13から導入されたGo言語公式の依存パッケージ管理ツールです。 そのため、かつての$GOPATH/src配下にプロジェクトを作らないといけないといった制約がなくなりました。 (よってここの記事は古い情報になりますのでご注意を...)

Go Moduleの仕組みやそれ自体の説明は他の方も書かれているので、ここではサクっと最新のGo環境を整えることをゴールとします。

goenvのインストール

Home brewの場合はこちら

$ brew install goenv

Gitの場合はこちら

$ git clone https://github.com/syndbg/goenv.git ~/.goenv

goenvのPATHを通す

$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(goenv init -)"' >> ~/.zshrc

追記した後は以下のコマンドでzshを更新します。

$ source ~/.zshrc  

また以下を入力してバージョンを確認しておきましょう。

goenv -v
goenv 2.0.0beta11

Goのインストール

次に以下のコマンドでGoをインストールします。 インストール可能なバージョンがリストで表示されるので、任意のバージョンをインストールしましょう。

goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
  1.3.2
  1.3.3
  1.4.0
  1.4.1
...
..
.

 1.15beta1
 1.15rc2

バージョン番号を指定しインストールします。

$ goenv install 1.**.*

インストールが完了したら、以下コマンドでglobal設定を行います。

$goenv global 1.**.*

最後にちゃんと指定したバージョンになっているか確認します。

go version
go version go1.15 darwin/amd64

GOPATHなどの設定

go getでインストールするパッケージなどをディレクトリとしてGOPATHを設定する必要があるので追記しましょう。 上記で設定したgoenvのPATHと合わせて以下のようになっていれば問題ありません。

export GOPATH=$HOME/go
export GOENV_ROOT=$HOME/.goenv
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"
export GO111MODULE=on // 1.13 以降は不要

※コメントにもありますが、環境変数$GO111MODULEに関してはモジュール対応モードがデフォルトで有効となります。

プロジェクトの作成

任意のディレクトリ上で以下を実行し初期化します。

go mod init github.com/${GITHUB_USER}/${PROJECT_NAME}

これでディレクトリ直下に go.modが作成されます。 (なお間違えたらこちらのファイルを削除し、go mod init からやり直せばOKです)

次にhello.goを作成し、以下のようなコードを書いてみます。

package main

import (
    "fmt"
    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Hello())
}

プロジェクトの実行

以下のコマンドで作成したコードを実行してみましょう。

go run hello.go
...
go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
Hello, world.

go runはコンパイル(go build) + 実行までを行うコマンドです。 ちゃんと Hello, world が表示されていますね。

※Go1.16以降はgo buildによるパッケージのインストールが廃止となっています。 go mod tidy or go get <パッケージ名>@<指定するバージョン> でインストールした後、 go build or go run を実行してください。

どうでしょうか、$GOPATH/src時代の開発に比べるとずいぶんシンプルになったかと思います。 それでは良い開発ライフを〜

GoでBasic認証を実装する

f:id:daihase:20190809022658p:plain

こんにちは、daihaseです。

久々のブログ記事です。今日はGolangを使ってBasic認証を実装してみます。Basic認証はご存知、ユーザー名パスワードを組み合わせた非常にシンプルな認証方式です。管理画面なんかでもよく見ますね。

こちら、Golangではnet/httpパッケージで簡単に実現出来ます。早速見てみましょう。

続きを読む

SwiftでTwitterとかにあるような「○○分前」といった表記を実現する

f:id:daihase:20190809100049p:plain

こんばんは、daihaseです。

タイトルにあるように「○○分前」「○○時間前」といったTwitterを始め、ユーザーの投稿一覧なんかを表示するアプリではおきまりの表記、こちらのSwiftでの実装方法を説明したいと思います。

まず日付となるとDateクラスですね。こちらを拡張したクラスを以下のように作ります。

続きを読む

GoでProtocol Buffersを使う

f:id:daihase:20190809022658p:plain

こんにちは、daihaseです。

今回はGoProtocol Buffersを使った記事を書きたいと思います。 まずProtocol Buffersですが、こちらはGoogleによって2008年に開発されたもので、一言でいうと言語やプラットフォームに依存せずに構造化されたデータをシリアライズ可能な仕組みといった感じでしょうか。

.protoというファイルに記載されたインターフェース定義言語(IDL) によって、クライアント/サーバーが共通で使用する構造を定義でき、これによってXMLやJSONと同じようにAPI通信の際に用いることが出来ます。

恐らく多くの方が使い慣れているJSONなどと比較してのメリットは、データサイズがとても小さいことや、軽量で高速、またプログラム上から簡単に使用出来るデータアクセスクラスを生成する、など色々ありますが、まずは簡単なサンプルにて使ってこちらを実感してみましょう。

続きを読む

軽量Webツールキット gorilla/mux

f:id:daihase:20190809022658p:plain

こんばんは、daihaseです。

今回は前回紹介したhttprouterのように軽量、それでいてAPI開発などをより楽にしてくれるWebツールキット、gorilla/muxを紹介したいと思います。

gorilla/muxには、Webアプリケーションのルーティング方法を制御するためのオプションが多数用意されており、主に以下のような機能をもっています。

続きを読む

軽量HTTProuter(httprouter)

f:id:daihase:20190809022658p:plain

こんにちは、daihaseです。

今日は前回やった「net/httpパッケージを使ったWebサーバー」、このような処理もライブラリを使ってもっと楽に!そして高性能に!というのをお題とします。

そこで紹介するのがhttprouter。GitHubのスター数も凄いですね。これが全ての基準ではないですが、ただそれだけ利用者も多く人気ということかと。

httprouterはその名前が示すように、HTTPの要求を特定のハンドラにルーティングします。基本的なGo標準のnet/httpと比較して以下のような機能を備えています。

続きを読む