- 投稿日:2019-12-22T23:50:53+09:00
【Mac】goenvを使ったGoのインストール
はじめに
Macデビューしたのに当たって、Goの開発環境構築を"goenv"を使って行ったので、そのまとめです。
goenvとは?
goenvは、pyenvから複製されたGo用のバージョン管理ツールです。
プロジェクトに応じて、GoのVersionを変更がある場合などに、Versionを切り替えて開発をすることができます。goenvのインストール
まずは
goenv
をインストールする前にhomebrewをアップデートします。$ brew update
アップデートが終了したら、次に
goenv
をインストールしていきますが、最新のgoのVersionをインストールしたい場合は、HEAD
をオプションにつけた方が良いです。
(ちなみに後からでもgoenvのリポジトリを最新にすることは可能です。)$ brew install --HEAD goenv
goenv
がインストールできたら、~/.bash_profile
に下記の設定を追加します。~/.bash_profileexport GOENV_ROOT="$HOME/.goenv" export PATH="$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)"これでTerminalから
goenv
がコールできるようになっているはずなので、Version
を確認します。
設定が有効になっていない場合があるので、その場合はShellの再起動を行って設定を有効にします。$ exec $SHELLここまで実行したら、goenvのVersionを確認します。
$ goenv --version goenv 2.0.0beta11Version情報が表示されれば、goenvの準備は完了です。
Goのインストール
次にgoをインストールしていきます。
今回は、私事で1.13.0で開発をする必要があるため、このVersionをインストールしていきます。まずは対象のVersionがリポジトリで管理されているかを調べます。
$ goenv install -l . . . 1.13.0 1.13beta1 1.13rc1 . .インストールする対象のVersionが見つかったら、
goenv
を介してgoをインストールします。
と言っても、ここまで来てしまえば、後は対象のVersionを指定するだけで、インストールが始まります。$ goenv install 1.13.0Goの環境設定
最後に使用するGoの設定を行います。
今回は先ほどインストールした1.13.0を使用するので、それを設定していきます。まずは先ほど、インストールしたVersionがLOCAL環境に存在しているか確認します。
$ goenv versions 1.13.0上記のように表示されればOKです。ですが、このままではLOCAL環境でGoを使うことができないので、対象となるVersionを指定して、Goを使える状態にしていきます。
まずは全体に適用するGoのVersionを指定します。$ goenv global 1.13.0文字通り、
goenv global
を指定することで、対象のVersionを設定することができます。
初回の設定では、$GOPATH
,$GOROOT
の設定が出来ていないので、設定を追加します。~/.bash_profile... export PATH="$GOROOT/bin:$PATH" export PATH="$PATH:$GOPATH/bin"上記を追加したら、.bash_profileを再度読み込みます。
$ source .bash_profile最後にGoのVersionが確認できれば、インストールは終了です。
$ go version go version go1.13 darwin/amd64【おまけ】VSCodeとGo拡張設定
ついでにVSCodeの設定も行っていきます。
必要になるのは言わずもがな、Go言語拡張。
これがないと、ほぼ何もできません。
今回使用している
goenv
のVersionが2.0.0beta11
なのですが、下記記事にあるように、2.0.0beta6の段階で仕様変更があったようです。
そのため、今回の設定では、GOROOTを見つけられず下記のようなErrorが出力されます。
この状態では、当然なからGOROOTを見つけられていないので、コード補完等も全く機能しません。
このままでは、非常に不便なので、作業フォルダに存在する.vscode/settings.json
に設定を追加します。'.vscode/settings.json'{ "go.goroot": "~/.goenv/versions/1.13.0" }上記のように明示的に$GOROOTのパスを宣言することで、コード補完がされるようになります。
後はVSCodeを再起動して、再度作業ディレクトリを開きコード補完がされていることを確認します。
- 投稿日:2019-12-22T17:28:15+09:00
macOSをCatalinaにしたらdotnet new出来なくなったのを解決した
初投稿です。
発生した環境
- macOS Mojave --> Catalinaにアップデートした
- ルートディレクトリに、
dotnet new
で使用するテンプレートを置いている- dotnet CLIを使用している
goal
dotnet new
を実行して、exceptionが発生しなくなること起きる条件
- macのルートディレクトリ配下に、
dotnet new --install
でインストール出来るテンプレートを置いてた- macOSをCatalinaにアップデートする(今回はMojaveからアップデートした)
- アップデートの影響で、ルートディレクトリ配下に置いてたテンプレートが
Relocated Items
ディレクトリに移動させられると発生起きるとどうなるか
dotnet new
やdotnet new console
すると、下記のexceptionが発生するようになった/HogeTemplate
ディレクトリにテンプレートを置いていた場合、下記のようなエラーメッセージになるCould not find a part of the path '/MyDotnetTemplates/HogeTemplate'. at System.IO.Enumeration.FileSystemEnumerator`1.CreateDirectoryHandle(String path, Boolean ignoreNotFound) at System.IO.Enumeration.FileSystemEnumerator`1.Init() at System.IO.Enumeration.FileSystemEnumerator`1..ctor(String directory, Boolean isNormalized, EnumerationOptions options) at System.IO.Enumeration.FileSystemEnumerable`1..ctor(String directory, FindTransform transform, EnumerationOptions options, Boolean isNormalized) at System.IO.Enumeration.FileSystemEnumerableFactory.UserEntries(String directory, String expression, EnumerationOptions options) at System.IO.Directory.InternalEnumeratePaths(String path, String searchPattern, SearchTarget searchTarget, EnumerationOptions options) at System.IO.Directory.EnumerateFileSystemEntries(String path, String searchPattern, SearchOption searchOption) at Microsoft.TemplateEngine.Utils.PhysicalFileSystem.EnumerateFileSystemEntries(String directoryName, String pattern, SearchOption searchOption) at Microsoft.TemplateEngine.Edge.Settings.Scanner.DetermineDirectoriesToScan(String baseDir) at Microsoft.TemplateEngine.Edge.Settings.Scanner.Scan(String baseDir, Boolean allowDevInstall) at Microsoft.TemplateEngine.Edge.Settings.TemplateCache.Scan(String installDir, IReadOnlyList`1& mountPointIdsForNewInstalls, Boolean allowDevInstall) at Microsoft.TemplateEngine.Edge.Settings.SettingsLoader.RebuildCacheFromSettingsIfNotCurrent(Boolean forceRebuild) at Microsoft.TemplateEngine.Cli.New3Command.ExecuteAsync() at Microsoft.TemplateEngine.Cli.CommandParsing.NewCommandInputCli.<>c__DisplayClass19_0.<<OnExecute>b__0>d.MoveNext()なぜ起きるのか
dotnet new --install <directory>
を実行すると、使用している.NET SDKのバージョンに応じて、テンプレートが置いてあるディレクトリの絶対パスを~/.templateengine/<sdk_version>
ディレクトリ以下の下記ファイルに書き込みにいく
- en-US.templatecache.json
- installUnitDescriptors.json
- nugetTemplateSearchInfo.json
- settings.json
- templatecache.json
dotnet new
を実行すると、インストールされているテンプレートを上記の絶対パスで探しに行く- macOSのアップデートでは上記ファイルの絶対パスが更新されないので、exceptionが発生した
どうしたら起きなくなる?
.templateengine/<sdk_version>
ディレクトリ以下にある、対象テンプレートの情報を全消しする
- 投稿日:2019-12-22T14:46:37+09:00
FlutterでiOSアプリ開発入門(第一部)
FlutterでiOSアプリ開発入門
本記事はmacOSユーザーを想定しています。
ほとんどGoogleが提供するドキュメントの直訳です?なぜFlutterなのか
- 技術的資産性が高い
- メンテナンスされている
- 学習コストが低い
Googleによるメンテナンス、発展の余地、クロスプラットフォーム、ホットリロードなど様々な要素から技術的な資産性が高いな〜と感じています
またβ版のFlutter for Webも気になります…!
【第一部】 導入編
こちらのドキュメントに従ってインストールしていきます
https://flutter.dev/docs/get-started/install/macosGet started
ステップ1と2はgitからcloneすることで省略可能
$ git clone https://github.com/flutter/flutter.git1. Download the Flutter SDK
Get the Flutter SDKからSDKをダウンロードします
https://flutter.dev/docs/get-started/install/macos2. Locate the file
解凍したファイルを任意のディレクトリに置きます(ドキュメントではDevelopmentというディレクトリに設置)
$ mkdir ~/Development $ cd ~/Development $ unzip ~/Downloads/flutter_macos_v1.12.13+hotfix.5-stable.zip3. Add the flutter tool to your path
.zshrcに以下を記載
export PATH="$PATH:`pwd`/Development/flutter/bin"sourceで反映
source .zshrc4. (Optional) Pre-download development binaries
一応ダウンロードしておきます。
$ flutter precache5. Run flutter doctor
Flutterがインストールされていることを確認します。
$ flutter doctorFlutterのインストールが確認できました。
?Tips ルートディレクトリ以外でflutterコマンドが認識されなかったりする場合はターミナルを再起動してみよう
$ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✅] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.14.6 18G1012, locale ja-JP) [❌] Android toolchain - develop for Android devices ✗ Unable to locate Android SDK. Install Android Studio from: https://developer.android.com/studio/index.html On first launch it will assist you in installing the Android SDK components. (or visit https://flutter.dev/setup/#android-setup for detailed instructions). If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location. You may also want to add it to your PATH environment variable. [❗️] Xcode - develop for iOS and macOS ✗ Xcode installation is incomplete; a full installation is necessary for iOS development. Download at: https://developer.apple.com/xcode/download/ Or install Xcode via the App Store. Once installed, run: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -runFirstLaunch [❗️] Android Studio (not installed) [❗️] VS Code (version 1.40.1) ✗ Flutter extension not installed; install from https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter [❗️] Connected device ! No devices available ! Doctor found issues in 5 categories.iOS setup
1. Install Xcode
まだXcodeがインストールされていない場合は、Mac App Storeから事前にインストールしてください。
$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer $ sudo xcodebuild -runFirstLaunch2. Set up the simulator
iOSデバイスのシュミレーターを立ち上げます
$ open -a Simulator3. Create a simple Flutter app
いよいよアプリを作成!
$ flutter create sample_app$ cd sample_app$ flutter run
?Error シミュレーターを起動していなかった場合
$ flutter run No supported devices connected.事前に立ち上げておく
$ open -a Simulator
?Error iPhoneを接続していた場合
実機で動かすにはセットアップが必要なので一旦はシミュレーターに頼ります$ flutter run More than one device connected; please specify a device with the '-d <deviceId>' flag, or use '-d all' to act on all devices. k3ntar0-iPhoneXs • 00008020-001E1DAA26------ • ios • iOS 13.3 iPhone 11 Pro Max • 3B03E8AB-04A8-4CED-A35F-523900------ • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)$ flutter run -d <deviceId>無事立ち上がりました!
4. Deploy to iOS devices
先ほどはシミュレーターで動かしましたが、次は実機で動かせるようにします
a. Install CocoaPods
$ sudo gem install cocoapods $ pod setupb. Open Runner
RunnerのプロジェクトがXcodeで開きます
open ios/Runner.xcworkspacec. Setup Xcode
XcodeはUIがめちゃくちゃわかりにくいので気を強く持ってください
- Runnerを選択
- Signing & Capabilitiesを選択
- Teamを設定
- Bundle Identifierを設定
このあたりは他の記事に説明を譲ります
d. Launch app in real iPhone
sample_app が追加されています!
第二部に続く?
(coming soon)
- 投稿日:2019-12-22T01:08:24+09:00
クリスマスイブイブに AzureKinect を Python で動かす。
3D Sensor Advent Calendar 2019の23日目の記事です。
概要
3D センサー歴 3 か月程度の初心者ですが、AzureKinect 手元にあるので、頑張ってみようかと思った Advent Calendar 第四弾です。
週一記事、Qiitaを書いて、何とかここまで来ました。
今回は、目標として、初心者レベルで Azure Kinect Sensor SDK 使って、Python で接続、動作するところまで試してみたいと思います。環境
- Windows10 Pro
- Azure Kinect Sensor SDK 1.2.0
- (Python 3.7.4)
- (Open3D 0.8.0)
環境としては、上記は Windows10 と Azure Kinect Sensor SDK 1.2.0がインストールされている状態で開始します。
(1.3.0 ではないので注意!)まずは Windows に Python,Open3Dをインストール
まずは、Pythonをインストールします。
やり方は色々ありますが、初心者向けに Windows でインストールするなら以下があるでしょうか
- Python をダウンロードしインストール
- Anaconda (機械学習やデータサイエンスやらを色々入れられるパッケージ)をダウンロードしインストール
- Miniconda(Anaconda の最小インストール版)をダウンロードしインストール
どれもインストールは簡単ですが、とりあえず Miniconda の最新版(現時点でMiniconda3 4.7.12)で入れます。
環境変数に設定するのはおススメされてないので、下のレジストリに入れる設定にチェックしてインストール
その次に、Azure KinectをPythonで使用するには、 Open3Dというframeworkをインストールするのが簡単そうでした。
Open3Dは、3Dデータを扱うソフトウェアの開発をサポートするオープンソースライブラリです。 Open3DはC++とPythonのフロントエンドを提供し、厳選されたデータ構造とアルゴリズムを どちらの環境でも利用できます。とのことです。
実はこのライブラリが最新バージョンの 0.8.0 で、「AzureKinect」に対応しています。
こちらを使ったら、作業ができます。Open3Dインストール
Open3D 0.8.0 は以下のようにPython2.7,3.5,3.6に対応していますが、最新の3.7.4でも動作しました。(Mac でも Open3D は動きますが、残念ながら AzureKinect のモジュールはWindowとUbuntuのみのようです、残念!)
とりあえず、以下のコマンドを使用すると一発で入ると思います。(base) D:\>conda install -c open3d-admin open3d
- Open3D のサンプルを実行
とりあえず、Open3D が正しく認識されているかを以下のコマンドで確認できます
python -c "import open3d"上記は何も返ってきませんが、エラーにならなければ成功です。
次に、sampleモジュールを実行してみましょう。これが問題なければ、Open3Dのインストールは成功です。
sampleモジュールは、以下のgithub からダウンロードしてください。
https://github.com/intel-isl/Open3Dダウンロードは、D直下に配置したとして作業します。
sample モジュールを実行しようと思ったら、matplotlibというツールが必要なようです。これは、conda install コマンドですぐに入れられます。(base) D:\>cd D:\Open3D-master\examples\Python\Basic (base) D:\Open3D-master\examples\Python\Basic>conda install matplotlib (base) D:\Open3D-master\examples\Python\Basic>python rgbd_redwood.pyAzureKinect のsampleモジュールを実行
さて、次に本命の AzureKinect のモジュールを実行してみましょう!
実行するサンプルは以下になります
azure_kinect_viewer.py(base) D:\Open3D-master>python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --align_depth_to_colorただ、ここで注意点があります。
・SDK1.2.0 というprogram内のフォルダ名を直接参照しているらしく、SDK1.3.0だと動きません(1.3.0というフォルダ名にリネームすればできるかもしれませんが、その場合環境変数なども変更が必要です)
・私の環境では、以下のようなエラーが出ました。File "examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py", line 72, in <module> v.run() File "examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py", line 36, in run vis.update_geometry() TypeError: update_geometry(): incompatible function arguments. The following argument types are supported: 1. (self: open3d.open3d.visualization.Visualizer, arg0: open3d.open3d.geometry.Geometry) -> bool Invoked with: VisualizerWithKeyCallback with name viewer調べてもエラーが出なそうな部分なのでよく分からず、とりあえず
update_geometry() が while で都度更新する際に何か変なパラメータを渡してるのではないか・・・くらいしか推測できません。
とりあえず、36行目の
vis.update_geometry()
を削除することで、画面の更新はできなくなりますが動作だけは確認できました。azure_kinect_viewer.py抜粋vis_geometry_added = False while not self.flag_exit: rgbd = self.sensor.capture_frame(self.align_depth_to_color) if rgbd is None: continue if not vis_geometry_added: vis.add_geometry(rgbd) vis_geometry_added = True vis.update_geometry() <== この部分を削除 vis.poll_events() vis.update_renderer()すると、静止画ではありますが、AzureKinectの動作が確認できました。
実際には左にカラー写真もついているのですが、部屋が汚かったのでDepthのみ・・・
ちなみに、上記の絵は Depth 画像にカメラの補正をかけた状態の絵となります。
第三回でも紹介しましたが、AzureKinect は内部カメラパラメータで補正を既にかける関数を保持しており補正後の状態を取得することができます。補正前だと、こんな感じの絵が取得できます。
補正をかけた状態でないと、正しい3次元での位置合わせができないのでAzureKinectで簡単にできるのは助かります。
・・・ところで、このOpen3D、すごく楽です。特に描画処理が、たった三行(コメント含めて四行)しかないので、全体のスクリプトが非常に少ないですね。下のこの部分だけですごく簡単です。
vis = o3d.visualization.VisualizerWithKeyCallback() vis.register_key_callback(glfw_key_escape, self.escape_callback) vis.create_window('viewer', 1920, 540) print("Sensor initialized. Press [ESC] to exit.")何とかPythonで表示することだけはできました・・・。
振り返り
- 今回は、Pythonだけではなく、Macでも動いてくれることを期待したのですが、そうはうまくいきませんでした。
- Open3D、将来性がありそうなライブラリです。ただ、非常に速いスピードで成長しているからか、結構単純な不具合みたいなものもある気がします。(ドキュメントに未実装の記述があったりするようで)楽しみではあるので、使っていれば段々改善されるのではないかと。
- なんとなく、Pythonで扱うのは簡単そうに見えますが、AzureKinectの描画処理は重く、センサー部分の非同期なハンドリングもてこずりそうで、Pythonで制御しきれるのかが漠然とした不安が。でも、Pythonとつなぐのは機械学習などにもつなげられそうで、良さそうです。
ということで、今回も初歩の初歩で終わってしまいました。
四回の記事全部、初心者オブ初心者、みたいな状態からから抜けられませんでした。
でも、これに懲りず、3Dセンサーの学びを深めるような活動をこれからもしていきたいと思います。
この場を提供していただいたゆるふわUNAさん、又、読んでいただいた方、応援していただいた方に感謝の意を表したいと思います。
どうもありがとうございました。明日24日のクリスマス・イブは pisa-kun さんの「RealSense l515プレオーダー記念 Lidarについてまとめてみる」です。
RealSense L515、良さそうですよね。日本で売り出した際には自分も手に入れてる気がします・・・。
来年も、xR、および 3DSensor 関連の技術で頑張っていきたいと思います。
- 投稿日:2019-12-22T00:10:12+09:00
Red Hat Enterprise Linux 8 を開発目的で無料でセットアップする方法
Red Hat Enterprise Linux 8 を個人利用の開発目的でVirtual Box上に無料でセットアップする方法のまとめを記載。
本記事の内容
- RHELの無償利用について
- Red Hat Developerサイトでのアカウント作成
- 必要なモジュールの準備
- VirtualBox上にRHEL8環境の構築
- ホストOS(MacOS)からゲストOS(VirtualBox上のRHEL8)へのSSH接続設定
前提情報
- ホストOS:macOS Catalina 10.15.1
- 仮想化ソフト:VirtualBox Version 6.1.0 r135406
- ゲストOS:Red Hat Enterprise Linux release 8.0 (Ootpa)
- カーネルバージョン:4.18.0-80.el8.x86_64
1. RHELの無償利用について
以下記事ご参照。
デベロッパーサブスクリプションにより、ローカルアプリケーションの開発目的であれば無償で利用可能。Red Hat、Red Hat Developer Programを拡張し無料のRed Hat Enterprise Linuxデベロッパーサブスクリプションを追加
オープンソースソリューションのプロバイダーとして世界をリードするRed Hat, Inc.(NYSE:RHT、以下Red Hat)は本日、Red Hat Developer Programの一環として、無料のRed Hat Enterprise Linuxサブスクリプションの提供を開始したことを発表しました。Red Hat Enterprise Linux Developer Suiteは、自己サポート、非実運用のデベロッパーサブスクリプションとして提供されます。これにより、エンタープライズグレードのアプリケーションを構築するためのより安定した開発プラットフォームを提供し、クラウド、物理、仮想、およびコンテナ中心のインフラストラクチャに渡る、ミッションクリティカルなデプロイメントへの明確な経路を提示します。
DevNation 2015で発表されたRed Hat Developer Programは、エンタープライズ開発者の需要への対応に貢献するために進化を続けており、エンタープライズ開発者がRed Hat製品をさらに活用できるようにするコンテンツ、ツール、およびリソースへのシンプル化されたアクセスを提供します。現在このリソースのカタログには、Red Hat Enterprise Linux Developer SuiteおよびRed Hat JBoss Middlewareポートフォリオへのアクセスが含まれており、いずれも無料のデベロッパーサブスクリプションを通して利用可能です。これらのサブスクリプションによって、開発者はRed Hatのエンタープライズグレードテクノロジーにより容易にアクセスし、ローカルアプリケーション開発にのみ利用できます。実運用には、有料のサブスクリプションレベルが必要です。
2. Red Hat Developerサイトでのアカウント作成
上記デベロッパーサブスクリプションを利用する為に、「Red Hat Developer」サイトにて、開発者用アカウントを作成。
Red Hat Developer
https://developers.redhat.com/
3. 必要なモジュールの準備
今回は、無償の仮想化ソフトとしてVirtual Boxを利用。
- Virtual Box のダウンロード&インストール
Oracle VM VirtualBox
https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html
Mac OS X → 「dmg Image」Red Hat Developer
https://developers.redhat.com/
4. VirtualBoxでのRHEL8環境の構築
5. ホストOS(MacOS)からゲストOS(VirtualBox上のRHEL8)へのSSH接続設定
- MacOS上のターミナルから接続確認
ターミナル[root@MacOS ~]# ssh login00@192.168.56.100 The authenticity of host '192.168.56.100 (192.168.56.100)' can't be established. ECDSA key fingerprint is SHA256:e8qM9h+dOaDkGhhjqPdFpv9+WImxufYd8sGJYaCaAks. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.100' (ECDSA) to the list of known hosts. login00@192.168.56.100's password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Sat Dec 21 08:20:22 2019 [login00@localhost ~]$
- RHELのバージョン確認
ターミナル[login00@localhost ~]$ cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) [login00@localhost ~]$ [login00@localhost ~]$ uname -a Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [login00@localhost ~]$