スマホ用の落下防止ストラップを自作した話
使っていたWiiリモコン専用ストラップの松葉紐が切れそうになっていたので、交換するにあたって以下の条件を満たす製品を探した。
- 松葉紐が簡単に交換出来ること。
- 腕を通す穴の大きさを調節出来ること。
- スマホ上部に取り付けた時丁度よい長さであること。
しかし、見つけられなかったので自作することにした。
材料は以下の3点。
材料の選定にあたっては、メーカーの有名さ、製品の売り上げ、レビュー、評価の順に重視した。
NuAns NEO [Reloaded]にはストラップホールがあったが、Pixel 3aにはない。しかし幸いPixel 3aにはイヤホンジャックがあるので、以下の製品でストラップホールを確保できる。
以前はPluggy Lockを使用していたが、国内供給が安定していないのか値段がばらついていたのでalumania STRAP TYPE HEADPHONE CAP for 3.5mm PLUGで代用した。出来ればオリジナルの製品を利用したいところだが、致し方なし。
ドラゴンクエストビルダーズの感想
Switch版のドラゴンクエストビルダーズをプレイした。ストーリーは一通りプレイしたが、フリービルドまでやる気は起きなかった。
単なるマインクラフトフォロワーではなく、しっかりとドラクエ、それもロトシリーズの系譜に連なる作品として良くできていた。
既に各所でも語られている事だが、ストーリーの章が進むとそれまでに築いた資産が失われる点や、ボス戦の面白くなさは大きな欠点で、個人的には閉所での操作のし辛さも気になった。
一方でNPCとの会話の軽妙かつ誰もが個性的で素晴らしかった。竜王の動機付けがやや強引だったり、全体的に話の内容がDQ7的で暗いのは気になったが、最終章の雰囲気はDQ3で初めてアレフガルドに降りたった時を思い出させる物で、心揺さぶるものがあった。ルビスがそれまでのシリーズと比べて過干渉気味で、かつ不信感を募らせる演出は興味深かった。
2にも期待している。
Acer Chromebook Tab 10が欲しい
これまで度々タブレットが欲しいと度々思いつつも結局買うまでには至らなかったが、Acer Chromebook Tab 10はかなり欲しい。
Windowsタブレットはフル機能のWindowsが使えることは魅力的だがタブレットとしては使いづらい。iPadは悪くないが不自由さが目につく。Androidタブレットは決定打に欠ける。
ChromebookならばPC版と同等のUIのGoogle Chromeが動くし、SoCが対応していれば開発者モードを有効化しchromebrewを導入する事でgit等の主要なパッケージはインストール出来る。
私的にはアスペクト比は3:2が良かったが、最近はラップトップなら3:2が良いがラップトップなら4:3でも良いかなと思い始めた。
問題は国内でのChromebook Tab 10が困難な事だが。
日記 2018-03
- 外耳炎で病院のお世話になった。通院不要になるまで大分かかった。
- 薄い財布を買った。良い。
- 気合いを入れて風呂の排水溝を掃除した。吐き気を催す邪悪な臭いだった。
- バンナイズのデジアナ格納庫-9のレッグバッグが欲しい。
- この日記を書くためにBlackBerry KEYoneが欲しいと思ったが、コストに見合わない上に巨大で重いので止めた。
- MSYS2上でgccから比較的新しめのC++を利用出来る環境を構築した。
std::is_aggregate_v
が動いて僕満足。 - Unityを再開した。
- バージョンの命名規則が変更されたタイミングでディレクトリ構造が変更されたのか、Google検索ではマニュアル及びスクリプトリファレンスについて404エラーが頻発する。
- 言語、バージョン、によってディレクトリ構造やナビゲーションがバラバラで辛い。
- 日本語のドキュメントでは古いバージョンでは左上のメニューがプルダウンメニューではなくなる。また、右上はC#とJSの切り替えになり、言語の切り替えではなくなる。
- https://docs.unity3d.com/ja/current/ScriptReference/Vector2.html
- https://docs.unity3d.com/ja/2018.1/ScriptReference/Vector2.html
- https://docs.unity3d.com/ja/2017.3/ScriptReference/Vector2.html
- https://docs.unity3d.com/ja/530/ScriptReference/Vector2.html
- https://docs.unity3d.com/2018.1/Documentation/ScriptReference/Vector2.html
- https://docs.unity3d.com/2017.3/Documentation/ScriptReference/Vector2.html
- https://docs.unity3d.com/ScriptReference/Vector2.html
- カオス
- ドキュメントが翻訳されているか否かはバージョンによってマチマチなので、原文のニュアンスの解釈に迷ったら (日本語の場合) 5.3の情報と見比べると良さそうだ。
OnBecameInvisible
が予期したタイミングで呼ばれず困惑したが、陰を落としているオブジェクトはレンダラーから見えているため、単純にオブジェクト自身がカメラの表示範囲から外れただけではレンダラーがカメラから見えなくなったとは見なされない為であった。Transform
を自身の向いている方向に動かそうとして、想定と異なる方向に移動してしまったので原因を調べた。Transform.Translate
にlocalRotation
と速度を乗算した値を渡していたが、そもそもTransform.Translate
は (引数が1つの場合) 自身の軸を基準に移動を行うため、localRotation
の乗算は余計だったようだ。
Git 環境構築メモ on Windows
CUIとGUIは分けて考える. 導入するツールは以下の通り.
ライセンスに気をつける. 特にGUIアプリケーション. GUIアプリケーションは好きなもの1つでよいだろう.
各アプリケーションの更新はRSSを購読して確認する.
- Releases · git-for-windows/git · GitHub atom
- Releases · git-lfs/git-lfs · GitHub atom
- Releases · nvie/gitflow · GitHub atom
GUIアプリケーションは更新通知機能がついてたり, ついていなかったりするかも知れない. 最近Sourcetreeが不自然な挙動見せるけど実利用で問題ないので見て見ぬふりをする.
基本的に公式に書いてある手順に従って導入する.
GitのインストーラはオプションでGit LFSも同時にインストールする事が出来るが, 必ずしも最新版とは限らないため使わない方が良い. git-lfs/README.mdに従ってインストールしよう.
git-flowはWindowsだとちょっと難しい感じがしないでもない.
シェルはGit Bashが基本だが, 余力があればfish shell等を導入しても良いかも知れない. ここらへんUnix, Linux環境向けの話ばかりで初心者はトラブルが起きた時自分で対応出来ない気がする.
シェルを思い通りにしようと思うと, コマンドプロンプト, Windows PowerShell, Git Bash, Cygwin, MSYS2等の各のシェルについてどのようにパスを通し, どのように環境変数が参照されるのかを把握する必要があるため, 学習コストが高い.
基本的に長いものにはまかれろの精神で, メジャーでカスタマイズする項目が少なくて済むツールを導入する. 多くの人が使用している環境の方が情報も豊富.
まずgit init --bare --shared
でベアリポジトリを作成. ディレクトリを作成する訳ではなく, カレントリディレクトリ自身をリポジトリに作成するので注意. ベアリポジトリの名前はxxx.git
とするのが通例.
次にgit clone <repository> [<directory>]
でベアリポジトリをクローン, ノンベアリポジトリを作成する. クローン先のディレクトリが空でなかった場合, クローンに失敗する. 指定しなかった場合, リポジトリ名と同じ名前のディレクトリを作成し, そこにクローンする. 作成しようとしたディレクトリ名のディレクトリが既に存在した場合, クローンに失敗する.
Git LFSの設定はワークツリー内で行う. 例えばgit lfs track "*.png"
等とすればpngファイルのコミット時にGit LFSが使用される. 設定は.gitattributes
ファイルに保存される. 恐らく, Gitの操作をする際にこのファイルを読み, それに従ってコミットを行う, という仕組みなのだろう. 当然Git LFSの設定は共有すべきなので.gitattributes
ファイルはコミットしておく.
最後にgit-flowの初期化処理を行う. git flow init
で初期化したらそれで終わりである. 対話形式で初期設定を行うが, 基本的にデフォルトの設定で構わない. 尚, この行程はGUIアプリケーションでもたぶん問題ない.
その他, SSHの設定等が必要かもしれないが, サーバーをきちんと用意したりしないのであればたぶんデフォルトで問題ない.
尚, Git LFSは自身が管理するファイルについて, 複数のユーザによる同時アップロードが発生した際の競合を防ぐためのファイルロックの仕組みを備えるが, 殆どサーバは実装していないため, 以下のような警告が発生するかも知れない. その場合警告に従ってこの設定を無効化する必要があるかも知れない. 詳細はこちら
Remote "origin" does not support the LFS locking API. Consider disabling it with : $ git config lfs.C:/Users/agate_pris/test.git/info/lfs.locksverify false
以上.
Unity プロジェクト作成
手順
- Dropbox 上にディレクトリ
project-name
を作成. - そのディレクトリに移動.
- 以下のコマンドを実行.
git init --bare --shared=true project-name.git
- 同期の完了を待つ.
- 作業用ディレクトリにプル. ディレクトリ名は
project-name/dev.git
にした. dev.git
に移動 Unity のプロジェクトproject-name.unity
を作成.Assets/ProjectName/Games/Game.cs
を作成, Visual Studio で開ける事を確認, シーンGame
に空のオブジェクトGame
を作成し, コンポーネントGame
を追加. 実行確認..gitignore
を作成. 内容は後述.- コミット, プッシュ.
.gitignore
/project-name.unity/[Aa]ssets/AssetStoreTools* /project-name.unity/[Bb]uild/ /project-name.unity/[Bb]uilds/ /project-name.unity/[Ll]ibrary/ /project-name.unity/[Oo]bj/ /project-name.unity/[Tt]emp/ # Autogenerated VS/MD solution and project files ExportedObj/ *.booproj *.csproj *.pidb *.sln *.suo *.svd *.tmp *.unityproj *.user *.userprefs # Unity3D generated meta files *.pidb.meta # Unity3D Generated File On Crash Reports sysinfo.txt # Builds *.apk *.unitypackage
ディレクトリ構成
リモート
project-name
project-name.git
ローカル
project-name
dev.git
.gitignore
project-name.unity
dev.git
については, ブランチを切る時はまた別のディレクトリを作成してそこで作業をする.
参考文献
Unityを三日坊主して分かった事
最初から目標を大きくするな
それ一番言われてるから.
使用する機能を最初から隅から隅まで理解しようとするな
機能が必要になったら調べればいい. そもそも全体を把握しないと何のためにあるのか分からない事もある.
郷に入らば郷に従え
エンジンの設計に逆らうのはエンジンをある程度理解してからでも遅くない.
案ずるより生むが易し
簡単な小さい目標を立てて, 何でもいいからまず動かす.
とりあえず
週末なんかしたいな.