Windows上のVisual Studio Codeからサーバー上のファイルを編集する
こんにちは、mtwandこと #00a3af 浅葱です。 最近よくいろんな人に「あさねぎさん」と呼ばれるのですが「あさぎ」です。実は。
さて、今までHoloLensとかUnityとかの話を書いていたのですが、今回はちょっと違う話をします。 まあ、個人でUnityアプリとかHoloLensアプリとかやるのであればサーバーサイドを書く機会もあると思うので、一応関係しているということで。
なぜ?
- とあるアプリを作っている中で、APIサーバーを立てる必要が出てきたため。
- 今までは某リンゴ社のいいやつを会社から支給されていたのですが、今は会社が変わり返却してしまったので、Windowsからあれこれする必要が出てきた。
- Vimが苦手(使えないわけじゃないけど、VS使えるならそっちが良いかなと)
- rmateがなぜか使えなかった(後々になって ~ポート開放のミス説が浮上~ 色々頑張った結果textmateが必要とか、mac版しかないとか、そもそも必要以上のもの入れたくないとか、いろいろあったので。ただその後rmateを使ってないので不明)
前提
- サーバーはCentOS
- ホストはWindows
- サーバーは最低限構築されている
- サーバーサイドのSSHは構築済み
- VSCode
- 個人開発程度の規模を想定
- yourname, yourServer.addressなどは適宜置き換えてください
- 個人的な備忘録も兼ねて書いてます。記述の正確さ・信頼性は担保されるものではありません。
WindowsにSSHを入れる
Windowsにはデフォルトで使えるSSHソフトウェアがないので、まずはこちら
github.com からDLします。軽量ですね。
DLできたら解凍して、好きな場所に保存。
上記のような形で保存先をPATHに追加します。
そうするとこんな感じ
でPowerShellやコマンドプロンプト上でSSHが使えるようになります。
(余談ですがインターネットに繋がっているとはいえローカルPCのユーザー名隠すのって何か意味あるんですかね)
FireWallを設定
今のままだと後々ファイルのやり取りをするときに使うポートが引っかかって正常動作しないので、ssh.exeのファイアウォール経由の通信を許可してもらいます。
コントロール パネル\システムとセキュリティ\Windows ファイアウォール\許可されたアプリ
を開き、 別のアプリの許可
から先ほど保存したOpenSSH-Win64内部にあるssh.exeを追加しましょう。
サーバーの設置場所がLAN内ならプライベート、LAN外ならパブリックをクリックすればよいです。
SSHのConfigを作成
C:\Users\you\.ssh\config
を作成、編集します。中身は
Host yourServer.address RemoteForward 52698 localhost:52698 User yourname
のように記述します。
ちなみにですが、面倒くさがって echo "Host..." > config
のようにやるのはやめた方が良いかもしれません。
私は最初これをやって、謎の \337\336
がファイルの先頭に挿入され小一時間悩みました。何だったんだあれは。
ちなみにこの先公開鍵認証などを利用するのであればIdentityFileの設定もやってしまった方が良いでしょう。 その説明は、今回は割愛します。
configの作成までできたら C:\Users\you
をPATHに追加してください。sshが読みに行きます。
上記までできたらsshの実行までテストしましょう。
ssh yourServer.com
と入力して yourname
でログインしようとするよう動作すればよいと思います。
サーバーにrsubを導入
yum install rsub
で入ると思います。
yumって使う前に yum update
とかあまりしないんでしょうか。
yum check-update
をしてカーネルのupdateがないか確認する、なんて記述も見たのでどうもめんどくさいことになるのかもしれないですね。
すみません、そこらへんは無知です。
ポートの開放
firewall-cmd --zone=public --add-port=52698/tcp --permanent
で良いと思います。
VSCodeにRemote VSCodeを導入
これ
いれて、VSCodeのユーザー設定に
//-------- Remote VSCode configuration -------- // Port number to use for connection. "remote.port": 52698, // Launch the server on start up. "remote.onstartup": true, // Address to listen on. "remote.host": "127.0.0.1", // If set to true, error for remote.port already in use won't be shown anymore. "remote.dontShowPortAlreadyInUseError": false
これを記述します。IP等に関わらずまるっとコピペでOKです。
これを記述するとバックグラウンドでrsubとやり取りするためのサーバーが立ち上がります。
失敗すると「接続に失敗。10秒後にやり直します」みたいなアラートが出るのですが、上記設定で失敗した場合の対処方法が現在わからないので、問題が起きたらお教えいただけると嬉しいです。解決法まで教えてくれると万々歳。
なお "remote.onstartup": true
の部分がサーバーの自動起動設定になっています。
こちらをfalseにする場合は F1
キーからの Remote: Start server
でサーバーを手動で起動する必要があります。
SSHで接続してrsubを起動
もう後は使うだけです。
VSCode上で Ctrl + @
で統合ターミナルが立ち上がるので、統合ターミナルを立ち上げます。
ターミナル上で ssh -R 52698:127.0.0.1:52698 youname@yourServer.address
のように記述。ログイン。
うまくsshできたら rsub -p 52698 /path/to/file/
のようにコマンドを実行するとVSCode上でファイルが編集できるようになります。
あとはいつも通り編集して、保存。サーバー側にも反映されます。
rsubはどうやら実行すると転送だけしたらフォアグラウンドでのプロセスは終了するらしいので、複数のファイルを同時にrsubしたり、VSCode上のターミナルでサーバーを操作したりが可能なはずです。試してないけど。
最後に
こういう、Windowsからうまいことサーバー上のファイルをあれこれする、みたいなのほとんど未経験でここまで来たので割と楽しかったです。 でもやっぱりサーバーサイドはmacみたいな優れたUNIX環境で書き上げちゃうのがストレスもないし一番のように思います。
ではまた。
HoloLensアプリの基盤になるやつ作ったよ
これ。
書きたいことは大体READMEに書いたので省略。
目的としては
- HoloLensアプリ開発の最初の難関であるSharingまでをとりあえずすっ飛ばしたい
- これあると自分が楽
- なんとなくやってるんだよ感をアピールしたい
以上の三点が挙げられます。
特に深いことは考えてません。
なんというか、そもそもが自分で作った部分がほとんどないし、色々と汚かったり雑だったり、ベース部分は自分も他人のブログやらなにやら見て真似したものなので、あまり胸を張って自分のプロダクトだとは言えない状況です。
でもとりあえず、公開されば誰か使ってくれるかもしれないし、どうやったら改善できるのか誰か教えてくれるかもしれないし。
恥を忍んで公開しました。
とりあえず目下としてはプログラムできる人に見てもらってダメ出ししてもらうのと、プログラムできない人に使ってもらって感想もらえたらうれしいです。 もちろん、プログラムできる人からのお褒めの言葉も、プログラムできない人からの改善要望も随時受け付けてます。 宜しくお願い致します。
はぁ。でもなんかあれですね、ダメな部分があるとわかっているものを公開するの嫌ですね。 元々コードをきれいに書くって意識が薄いのでコード人に見られるの嫌いなんですが、本当に嫌だ。 人に見せて恥じることのないプログラムをかけるようになりたいですね。 日ペンでやってくんねえかな『美プログラミング講座』
自作HoloLensアプリで文字を入力する
こんにちは、mtwandこと00a3afです。あさぎです。
最近は日差しが強くなってきて、熱中症対策と共に、HoloLensのオーバーヒート問題なんかも気になってきました。 結露を避けつつ本体の温度を下げるのは結構気を使いますね。特にHoloLensはどうにも熱伝導率の低そうな素材が中心のガジェットなので、つい過激な方法で冷やしたくなりますが、「つい頭にきて…」では済まされなさそうなので慎重にやりましょう。いや、マジで。
さて、それはそうと前回書いた
こちらの記事の続きです。
今回は
自作HoloLensアプリで文字を入力する
話をします。
uGUIは使えない
まず、uGUIは使えません。 いや、ボタンとかは使えた気がします。試してないけど…。
とりあえず、InputFieldなどは普通には使えません。 UnityEditor上だと普通に使えるのですが、HoloLensに持っていくと、タップしてもアクティブになりませんし、キーボードが立ち上がることもありません
(キーボードを呼び出す方法はあるようです)
ただし、uGUI自体が全く動かないわけではなく、uGUIを配置して表示させることなどは普通にできますので、これはこれで利用していきます。
キーボードが出ないなら作ればいいじゃない
これこれ、これですよ。
詳しくは記事を読んでもらうとして、発想だけ パク 参考にします。
特に今回はIPアドレスを前提としたものだったので、フルキーボードを読んでしまうと役不足になりますし。
今回作ったのはこういうものです
0-9, .
, Del
, Enter
ボタンをUnityのCubeから作成し、配置。それぞれに自作のKeyManager
をアタッチします。
KeyManager
KeyManagerは今回のために作成したスクリプトです。
BaseKeyManagerというスクリプトを基底クラスとして持ち、 Any
KeyManagerのように命名されます。
これを三種類、今回は CharKeyManager
, DelKeyManager
, EnterKeyManager
を作成しました。
BaseKeyManagerは MonoBehaviour
を継承するクラスで、 private void OnSelect()
と virtual void Clicked()
を持ちます。
OnSelect()
は GazeGestureManager
で AirTap
時に呼ばれる関数で、これが呼ばれたとき、この関数は Clicked
を呼び出します。
ClickedはBaseKeyManager上では動きが定義されていません。継承先であるCharKeyManager, DelKeyManager, EnterKeyManager でそれぞれ規定されます。
今回は transform.parent.gameObject.SendMessageUpwards("OnClickChar", character);
のように書きました。
これでこのボタンを内包するGameObjectでボタンのクリックが検知できるようになります。
Windowを作る
今回は、多少汎用的に作りたいという思いもあり、Windowオブジェクトと、それを管理するWindowManagerを作りました。
ただこれは個人的にまだ改良したい部分があるので詳しくは解説いたしません。
さしあたっては、先程作成したキーを内包するオブジェクトと、そこにアタッチされた private void OnClickChar(string character)
などのイベントを処理する関数を持つスクリプトが存在するとお考え下さい。
そして OnClickChar
などの関数はそれぞれ後ほど作成するInputField上の文字列を操作する
text = GameObject.Find("InputField").GetComponent<inputField>().text + character; GameObject.Find("InputField").GetComponent<inputField>().text = text;
のような処理をします。(Del, Enterなどのボタンも同様にそれぞれの処理を作ります)
InputFieldを配置
入力した文字を表示・保持するためのInputFieldを配置します(試してませんが3DTextでも問題はないはずです)。
先ほど作ったWindowの配下にCanvasを、さらにその下にInputFieldを作成します。
Canvasは設定を変え、WorldSpace上、Windowの中に配置されるようにしてください。HeadLockedはMR的ではないという話もありますし。
↑こんな感じに
あと、uGUI使うときいつも困るのですが、デフォルトの設定どうにかならないんですかね。輪郭ぼけてるし、文字デカイし。 ってことで、これも調整します。
はい。なんかだいたいこういう感じにしていつも使ってます。正しいのかどうか、私にもわかりません。どなたか最適解があれば教えてください。
起動
さて、こうしてInputFieldまで設置したら、あとはもうほとんどやることはありません。 今まで作ったObjectを正しく配置して、アプリを起動すればといりあえず、IPアドレスを入力できるダイアログが完成です。
あとはこれをPrefabやらなにやら好きなように加工して自作アプリに埋め込んでください。
KeyBoardの配置を考える必要はありますが、やろうと思えばフルキーボードも自作できると思います。アセットもあるしおすすめはしませんが…。
個人的にはこれを少し改造してGoogleのGodanキーボードでも作ってみようかなと思っています。変換までやる気はないですが、かな文字だけでも打てたら少しはホロラビリティ(造語)が上がりそうですね。
詳しくは近々UnityのプロジェクトをGithubにでも上げられたらと思うので、記事を読んでもわからないという方、すぐ使いたいという方はそちらをお待ちいただくか、素直にアセット買った方が良いでしょう。
というか、AirTapを必要としない文字入力の手段が欲しいですね、音声以外で。
Sharingの接続先を入力できるようにする
どうも、mtwandこと00a3afです。
本日はSharingアプリケーションを作成する際に、Serverアドレスを実行側で設定する方法について書きます。
完成図はこちらです
本日のブログのネタができました。
— 浅葱 (@asagi_00a3af) 2017年7月19日
なんで私は何かこう、周回遅れみたいなことしてるんだ? pic.twitter.com/xyp5CpXgcr
ちなみに先駆者、と言いますか、既に同じことをされている方がいらっしゃるのでご紹介しておきます。
HoloLens/チュートリアル240の接続先をアプリ内で変更できるAdd-onを作った。
私はシーンの切り替えなどは恥ずかしながら経験がなく、本項においても同様の手法は使いませんのでご了承ください。
先に結論
基本的な処理の流れは以下のようになります
- Sharing関連の処理を全てDisableにする
- 接続先を入力し、その情報を
SharingStage
に渡す - Sharing関連の処理を起動する
難しいことはないですね
Sharing関連の処理をDisableにする
具体的には SharingStage
, SharingSessionTracker
, CustomNessages
, AutoJoinSession
, ImportExportAnchorManager
などです。
私はそのほかにもAppStateManatger
, SpatialMapping
, SurfaceMeshesToPlanes
, そのほかSpectator View関係の処理をDisableにしています。
これらの処理はSharingStageを中心とするSharing関係の処理に大きく関連しているので、IPアドレスを指定しないまま勝手に動き出すと大変です。
なお、これらの処理ですが、SharingStage
が OnAwake
で走り出す設計になっているので、(対処療法的ではありますが)アタッチされたオブジェクトごとあらかじめDeActiveしておくとよいでしょう。
接続先を入力し、その情報を SharingStage
に渡す
今回はTextInputDialogなるものを自作し、その情報を同じく自作した管理クラスに渡し、SharingStageからその情報を参照しました。
ただし、SharingStageスクリプトはHolotoolkitにて提供されているスクリプトで、これを改変するのはあまり推奨されません。
先述のGameObjectごとDeActive化、というのもそもそも乱暴な方法ではありますし、Singleton化されている処理でもあるので、何か普通にもっとうまくやれる気がするので誰か良い方法教えてください。
Sharing関連の処理を起動する
今回はすべてDeActive化されているだけなのでこれを SetActive(true)
すればOKです。
最後に
今回の一通りの処理はここ HololensAppBase/HololensSharingWithConfirmApplicationBase.unitypackage at master · M-T-Asagi/HololensAppBase · GitHub にまとまってるので、ご入用の方はどうぞ。 ただ、自分でもわかるほど作りが雑なのと、HoloToolKitが古かったり手加えてあったりと、恐らく普通には使いまわせないと思うので適当に切り出してご利用ください。
また、ダイアログ関連の処理については追って記事を書きます。正直こっちが本命な気もする。
自分のプロジェクトでSpectator Viewをやる方法。
こんにちは、mtwandこと00a3afです。 最近HoloLens Meetup Vol.4に参加してSpectator Viewについてお話ししました。 緊張とか不安とか色々あったけど、とりあえずいうこと言えてよかった。
さて、そのSpectator Viewですが、前回に引き続き、今回はご自身のプロジェクトでSpectator Viewを動かす方法を書きます。 ぶっちゃけ事前準備(前回の記事)ができていたら難しいことは何もないです。
また、MicrosoftさんのAdding Spectator View Support to Your Unity App、そして前回も紹介いたしましたが、中村 薫@かおるん さんの記事を参考に実行しましたので、手順についてはこちらをご参考いただいた方が良いと思います。
機材を用意する
ないとできません。 最低限
- 開発PC
- HoloLens
- カメラ
- 諸々のコード類
がないとできません。
Calibrationを実行。
Calibrationプロジェクトを自分の環境に合わせ手直しし、実行します。
実行が完了すると User/Documents
にキャリビュレーションデータが出力されるので、こちらを確保しておきます。
ちなみにですが、Calibration実行後に再度Calibrationを実行すると、画像データはバックアップされるのですが、 CalibrationData.txtは消されるので、うまくいったデータがあれば忘れる前に別の場所にコピーしておいた方が良いです。
Spectator Viewの実行に必要なデータをコピーする
- 最新のHoloToolKitをインポート
- ここ からHolographic Camera Rigをコピーし自分のプロジェクトに貼り付ける
スクリプトの手直し(直ってました)
本項の内容は最新版のスクリプトを使っている場合は無視してください。最新版ではすでに修正されている内容です
- RemoteSpatialMappingSource.cs を修正
- 53行目付近を
SurfaceObject surface = CreateSurface(mesh, ”RemoteSpatialMapping”, transform); AddSurfaceObject(surface);
のように修正
- 53行目付近を
Prefabなどを配置
- 先ほどインポートした
Addons/HolographicCameraRig
の中にSpectatorViewManager.prefab
というPrefabがあるのでシーンに配置 - SpectatorViewManagerのSpectator View IP(カメラに接続されるHoloLensのIPアドレス), Sharing Service IP(HoloLensなどが接続しに行くSharingService.exeが実行されているマシンのIPアドレス)を入力、Anchor(ImportExportManagerなどがアタッチされているオブジェクト), Sharingオブジェクトを指定(シーン上に配置されているアンカー、Sharingオブジェクトをドラッグアンドドロップでアタッチ)。
- SV_***.cs , SceneManager.csをAnchorに, RemoteSpatialMappingをCustomSpatialMappingに配置(CustomSpatialMappingという名前にする必要があるかどうか、未検証です)
CopyDLL.cmd を実行
https://github.com/Microsoft/HoloLensCompanionKit/blob/master/SpectatorView/CopyDLL.cmd を実行
この時これを普通にダブルクリックしてもダメなので、
HoloLensCompanionKit/blob/master/SpectatorView
で Shift+右クリック
で コマンドウィンドウをここで開く
を実行するか、管理者権限でコマンドプロンプト、もしくはPowerShellを起動し、 HoloLensCompanionKit/blob/master/SpectatorView
まで移動。
CopyDLL.cmd /path/to/your/project/Assets
のように、プロジェクトのAssetsフォルダをオプションに指定し実行。
動かす
- まず、プロジェクトをビルドし、HoloLensに配置
- SharingService.exe を実行
- HoloLens上でプロジェクトを実行
- Unity Editorを実行
- Unity Editor側のSpectator ViewメニューからCompositorを起動
- Compositor Window上にカメラの映像が表示されることを確認
- Spatial Mappingボタンを押す
- 接続が成功していればSpatial Mappingが実行される
- Spectator Viewを楽しむ
- うまくいかない場合は両側プログラムを停止し、2からやり直し
トラブルシューティング
ここ らへんも参考にしてもらいつつ
- HoloLens, Cameraの動作状態を確認する
- キャプチャボードの動作・出力解像度などを確認する
- 各種ケーブルの接続状態を確認する
- Sharingの実行状態を確認する
- Calibrationの結果を見直す
- ここ らへんを参考にしつつ、値が正常か確認
大切なこと
あきらめない気持ち
最後に
弊社ではSpectator Viewの実験、試走などのお手伝いを受け入れています。 Spectator Viewをしたいが設備・道具がない、HoloLensが複数台ない、などの方は @asagi_00a3af までご連絡ください。 プログラムの実装など含め、ご相談をお受けします。 (あんまり大規模なものや、公序良俗に反する内容・団体からの依頼など、場合によってはお受けきれない場合がありますので、ご了承ください。最初はあくまで相談ということで、宜しくお願い致します)
Spectator Viewやった
この前仕事でHoloLensのSpectator Viewやりました。 今更か……という感じもしますが、調べてみると結構やってみた系の記事なかった気がするので、自分のハマりポイント書くついでにつらつら書いていこうと思います。
参考元
SpectatorViewの公式リポジトリ github.com
中村 薫@かおるん さんの記事。Spectator Viewの基本的な部分を全編日本語で書いてくださっている。必見。 www.naturalsoftware.jp
ANDREASJAKL.COM の記事。キャリビュレーションがうまくいかなかったときに参考にした。 www.andreasjakl.com
使えるキャプチャボードが実質限られている
これはハマりポイントというかSpectator View試すのが遅くなった理由なんですが、今日現在
Software
- Blackmagic Capture Card SDK
- Search for Desktop Video SDK in “Latest Downloads”
- If using a BlackMagic DeckLink card.
- Blackmagic Desktop Video Runtime
- Search for Desktop Video Update in “Latest Downloads”
- Version number must match the Capture Card SDK.
- If using a BlackMagic DeckLink card.
- Elgato Game Capture HD
- If using an Elgato capture card.
- Elgato Filters
- If using an Elgato capture card.
ということで、BlackMagicとElgato製のキャプチャボード以外使えません。 多分自分でSDK引っ張ってきて手持ちのキャプチャボード使えるようにプログラム書けばいけると思うのですが、そのあたり全く触ったことないうえ、たまたま会社に合ったキャプチャーボードのSDKがこれまた使いづらく、全然自分でやれる気配がなかったのであきらめました。
Blackmagic Intensity Shuttle USB 3.0の相性問題
正確に言えば相性問題ではなく、PCに搭載されているUSB3.0ボードの信号帯域の問題らしいのですが、要は家電量販店で買ってきたPCそのままでは動かない可能性が高い、ということらしいです。 弊社のPCは運良くというか、必要な信号帯域の確保がされていたらしく、セットアップしたら普通に使えました。 もしかしたら最新のPC(USBポート全部3.0になってるようなやつ。弊社PCはこれでした)なら問題なく使えるのかもしれません。
相性問題…?
BlackMagic使っていて、個人的に最大の問題だったのはBlackMagicの相性問題そのものではなく、BlackMagicが問題をしっかり克服して使えているのか偶然起動しただけなのかがわかってないせいで、後々キャリビュレーションなどの工程に入ったときそれが設定のミスなのか、プログラムのバグなのか、BlackMagicの相性問題なのか分からなかったところです。
具体的にはCalibration.slnをビルドして実行したとき、ウィンドウにパステルブルーっぽい画面が表示されるばっかりで、どうもキャリビュレーションが始まらない。 これは結局下記ぺー時で参照できるような
BlackmagicのOutputの解像度とプログラム上で受け取ろうとしている解像度が一致しないことによる問題だった(私の環境では両方と1080p30に合わせることで成功している)のですが、前述のとおりBlackmagicの相性問題を疑ってしまい全然作業が進まなくなりました。
Blackmagicには専用のキャプチャアプリがあるのでこちらで動作を先に確認しておきましょう。 こちらで一度映ったのが確認できれば相性問題の心配はほぼいらないと思います。
そして何より、機械の声(Debugログ)をちゃんと聞こう。
キャリビュレーションAppは動いているが、HoloLens側の写真が排出されない
いざいろいろと難関を乗り越えキャリビュレーションAppが動いても、HoloLensサイドの画像(xx_holo.jpg)が排出されないことがあるかもしれません。 これはおそらく
上記三点を確認すれば直ると思います。 一応キャリビュレーションは最初からやり直した方が良いです。
キャリビュレーションが終わらない?
キャリビュレーションAppは自動で終了したり、終了時に自動でCalibrationData.txtを生成したりはしません。 ある程度写真が取れて(10-20枚程度?)そろそろ良いだろうというときにはキャリビュレーションAppのウィンドウをアクティブにして、自分でEnterキーを押すことで処理を完結させる必要があります。 そうすろと30-60秒程したした後にCalibrationData.txtが生成されるので、あとは普通にプログラムを終了してOK
HoloLensの映像、切り替わりませんが…。
これは私の勘違い話なのですが、Spectator ViewはHoloLensのカメラを接続したカメラの映像で置き換えるというようなものではありません。 ので、DevicePortalなどから見るMixed Reality Captureはいつも通りのHoloLensのカメラを通してみた世界の映像になっています。 中村薫さんが紹介されいるようにサンプルプロジェクトをUnityで起動するとUnityEditorを通してSpectatorViewの世界を楽しめる(録画や撮影も可)ので、現在はそちらから、ということらしいです。
最後、これから
ここまでで私の躓きポイントを紹介しましたが、これがこれからSpectator Viewを始めようという皆さんの助けになれば幸いです。
個人的な今後最大の課題は実際に客前や出張でSpectator Viewを使うときサーバーになるPCはどうしようかな、とかそういうところですが、ほかにも現実映像とVirtual映像の合成処理を担当しているのはPCなのかHoloLensなのかとか、もし処理自体はPCでやっているのだとしたらMSの最初のプレゼンの時に見たような解像度高めのバーチャル映像をMixedにできるのかなとか、いろいろ考えています。
何より、SpectatorViewをうまく使ったアプリケーションの開発が一番大事ですね。
HoloLens開発ブログします
個人的な開発ブログです
主に仕事で開発した内容で差し支えなさそうなものをぽちぽち書いていこうと思っていますが、あくまで個人としてのブログです。 ここに書かれた内容は常に私個人の意見・主張であり、所属する団体・会社等とは一切かかわりありません。
方針
基本的にはUnityやHoloLensに関する個人的な開発・研究記録になります。 誰かの役に立てばとは思いますが、あくまで自分の未来のためになればという心づもりです。
とはいえ、一般に公開している以上その内容について一切責任を負わないということはできないとも思うので、いくつか方針としてのルールを定めておきます
- 内容について間違いなどが発覚した場合などは、できる限りそれを明記したうえで訂正するものとします。
- あまりに細かいミスの場合(タイプミスやコードに関わらない誤字脱字など)修正内容を明記しない場合もある。
- 内容について正当な権利を持つ方から記事の削除・修正の依頼があった場合、それに従うものとする
- その時、削除・修正の依頼の有無は相手の要望による非公表にする場合もあるものとする。
とりあえずはこんなところで、追記があれば + (追加されたルール) xxxx/xx/xx 追加 という形で追加していきたいと思います。