Solidity とは何か? 開発環境を構築する!
はじめに
最近、「 Web3(Web3.0)」という言葉を耳にすることが増えたという人も多いと思います。 Web3.0の基盤は、ブロックチェーン技術をベースに構築され、既存のWebの問題点が解決できると期待されています。 この記事では、現在トレンドの Web3(Web3.0)を実現する為に、ブロックチェーン上で動作する仕組みである Solidity を理解し、開発環境を構築していきます。
参考にした本
- マスタリング・イーサリアム ―スマートコントラクトとDAppの構築
- SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで
- 詳解 ビットコイン ―ゼロから設計する過程で学ぶデジタル通貨システム
- ブロックチェーン dapp&ゲーム開発入門 Solidityによるイーサリアム分散アプリプログラミング
Solidity とは
Solidityとはプログラミング言語の名前で、Ethereumのブロックチェーン上で動作するプログラム(コントラクト)を記述することができるプログラミング言語です。
SolidityはC++、Python、JavaScriptを参考に、Ethereum Virtual Machine(EVM)の操作を目的に作られています。Solidityは静的言語で継承やライブラリ、ユーザーが定義した複雑な型をサポートします。 Solidityで投票やクラウドファンディング、匿名のオークションやマルチシグウォレットなどを作成することができます。
コントラクトをデプロイする際には最新バージョンのSolidityを使うことが推奨されています。
Solidityの開発環境
:::note warn こちらの記事ではmac OS で環境構築をおこなっています。 :::
必要なツール
- node.js
- Ganache ローカル開発時に Ethereum プライベートブロックチェーンを可視化するツールです。
- Truffle Ethereum アプリケーション開発におけるフレームワークです。
- MetaMask イーサリアムブロックチェーンに対応した仮想通貨ウォレットです。
Solidityのテストとコンパイル手順
1. 必要なツールをインストールする
node.jsをインストールしたら、Truffleをインストールします。 ターミナルを立ち上げて以下のコマンドを実行します。
$ npm install -g truffle
必要なツールのインストールが完了したら、以下のコマンドを実行します。
$ truffle version
正しくインストールされている場合、TruffleとSolidityなどのバージョンが表示されます。 エラーが表示される場合は、npmが追加されていることを確認します。
2. プロジェクト作成
新しいアプリケーションを構築するために、greeterというディレクトリを作成し、このディレクトリに移動します。
$ mkdir greeter $ cd greeter
空のTruffleプロジェクトを以下のコマンドを実行して作成します。
$ truffle init
いくつかファイルが作成され、下記の構造になります。
. ├── build │ └── contracts │ └── Migrations.json ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migration.js ├── test └── truffle-config.js 5 directories, 4 files
ディレクトリ構造について
デフォルトのTruffleディレクトリ構造は下記の構成になっています。
contracts/
:contractsディレクトリには、スマートコントラクトのSolidityソースファイルを置きます。
migrations/
:ファイルをデプロイする手順をこのmigrationsディレクトリにあるファイルで管理します。migrationsディレクトリに置くファイルには名前の頭に数字を入れるという決まりがあり、その順番に沿ってデプロイが実行されます。
“1_initial_migration.js”という名前のファイルが既に存在しており、これはデフォルトで実行しなければならないので、次の手順を2から始まる名前のファイルに書き込むことになります。
test/
:スマートコントラクトのJavaScriptテストとSolidityテストのテストファイルが格納されます。
truffle-config.js
:Truffleプロジェクトの構成ファイル
3. テスト
testディレクトリにgreeter_test.jsを作成します。
$ touch test/greeter_test.js
const GreeterContract = artifacts.require("Greeter"); contract("Greeter", (accounts) => { describe("deployment", () => { it("has been deployed successfully", async () => { const greeter = await GreeterContract.deployed(); assert(greeter, "contract failed to deploy"); }); }); });
デプロイ出来るか確認のテストコードです。
4. コントラクト
ここで漸く Solidity を使用したコーディングを行います。 ちなみに、Solidity でスマートコントラクトの構築を学習するのに、CryptoZombiesがオススメです。
CryptoZombies 暗号からゾンビを生み出すゲームの開発を通じて、Solidityでスマートコントラクトの構築を学習できる、インタラクティブなオンラインレッスンです。
スマートコントラクトのチェックリスト
ここからは別の記事で詳しくまとめていく予定です。 追記:2022年07月19日に 「Truffle のチュートリアル ETHEREUM PET SHOP をやってみた」でまとめました。
https://qiita.com/nekoharuyuki/items/d9dd7bf5b5154d259944
5. コンパイル
$ truffle compile
まとめ
Solidity の基礎を理解し、開発環境を構築していきました。
この記事では、truffle init
を使って新しいスマートコントラクトプロジェクトを作成する事が出来るようになりました。
今後は以下の内容をまとめる予定です。
* truffle unbox pet-shop
で作成される、Truffleのチュートリアルで ETHEREUM PET SHOP の流れにそって、実際にウェブ上に分散型アプリケーションを作成する。
* 公開されているテストネットワーク Görli testnet にデプロイする。
VR開発で役立つサイトのまとめ
はじめに
VR開発は、これまでのゲームやコンテンツ開発とは異なり、さまざまなノウハウが必要となります。酔いの防止やフレームレート維持といったマイナス要素を発生させないテクニックから、VRならではの表現手法、VR空間での UI / UX 作成など様々あります。 その知見は、イベントでの共有やウェブサイト上に散在しており、なかなか探すのが難しい状態かと思います。
そこで、VR開発の経験で得た情報をキャッチアップするのに役立つサイトをまとめました。ぜひ活用していただければと思います。
VR(Virtual Reality)開発は、3Dグラフィックスや動画、音響などを用いて、仮想空間を作り出すことで、ユーザーが身を置いたような現実的な体験を提供する技術です。
VR開発について
VR開発には、以下のようなプログラミング言語や技術が使用されることが多いです。
- Unity: ゲーム開発に使用されることが多い。Unityは2D/3Dのグラフィックスを扱うことができる。
- Unreal Engine: ゲーム開発に使用されることが多い。Unreal Engineは高いグラフィックス性能を持つ。
- C++: VRアプリケーションの高速な処理に使用されることが多い。
- OpenVR: VRアプリケーションの開発に使用されることが多い。
- WebVR: VRアプリケーションの開発に使用されることが多い。WebVRは、Webブラウザ上で動作する。
また、VR開発には、3Dグラフィックスや動画、音響などの要素が重要になります。プログラミング言語や技術を使って、これらの要素を実現することが重要になります。
サイト一覧
VR関連の公式サイト
Oculus
Oculus公式デベロッパーズポータル URL : https://developer.oculus.com/
OculusはFacebookによって開発されたVR(Virtual Reality) ヘッドセットです。 Oculusは、高い視覚・聴覚・タッチの体験を提供することで、没入感のあるVR体験を提供します。
Oculusは、Oculus Quest, Oculus Rift, Oculus Rift S, Oculus Goなどの製品があります。 Oculus Questはワイヤレスで、Oculus Rift, Oculus Rift SはPCと接続して使用することができます。 Oculus Goはスマートフォンアプリを使って、VR体験を楽しむことができます。
Oculusは、ゲーム、エンターテイメント、教育、商業など、様々な用途で使用することができます。 Oculusは、UnityやUnreal Engineなどのゲームエンジンと組み合わせることで、高品質のVRゲームの開発ができます。
また、Oculusは、Oculus Storeというアプリストアを持っており、Oculusで使用できるアプリを購入・ダウンロードすることができます。
HTC Vive
HTC Vive開発者サポート URL : https://developer.viveport.com/
https://developer.viveport.com/
HTC ViveはHTCによって開発されたVR(Virtual Reality) ヘッドセットです。 HTC Viveは、高い視覚・聴覚・タッチの体験を提供することで、没入感のあるVR体験を提供します。
HTC Viveは、PCと接続して使用することができ、高性能のグラフィックス処理が可能です。 広い空間で使用することができるため、広い空間でのVR体験を楽しむことができます。
HTC Viveは、ゲーム、エンターテイメント、教育、商業など、様々な用途で使用することができます。 HTC Viveは、SteamVRというVRプラットフォームに対応しており、Steam上で購入・ダウンロードできるVRアプリを楽しむことができます。
また、HTC Viveは、トラッキングカメラやコントローラーと組み合わせることで、身体の動きを取り込んだ没入感のあるVR体験を楽しむことができます。
Google Cardboard、Daydream
Google VR Blog URL : https://www.blog.google/products/google-vr/
https://blog.google/products/google-ar-vr/
Google Cardboardは、Googleによって開発された低コストのVR(Virtual Reality) ヘッドセットです。 Google Cardboardは、スマートフォンを収納する紙製のカードボードに、レンズやボタンなどが装備されています。
Google Cardboardは、スマートフォン上のVRアプリを使用することで、VR体験を楽しむことができます。 Google PlayストアやApp Storeなどで、Google Cardboard対応のVRアプリをダウンロードすることができます。
Google Daydreamは、Googleによって開発されたVR(Virtual Reality) プラットフォームです。 DaydreamはGoogle Cardboardと同じようにスマートフォンを使用して、VR体験を楽しむことができますが、スマートフォンに対応したDaydream対応のVRヘッドセットを使用することができます。 Daydreamは、ゲーム、エンターテイメント、教育、商業など、様々な用途で使用することができます。
サンプルコード
oculus-samples
Unity-SharedSpaces
URL:https://github.com/oculus-samples/Unity-SharedSpaces
https://github.com/oculus-samples/Unity-SharedSpaces
Unity-AssetStreaming
URL:https://github.com/oculus-samples/Unity-AssetStreaming
https://github.com/oculus-samples/Unity-AssetStreaming
Unity-FirstHand
URL:https://github.com/oculus-samples/Unity-FirstHand
https://github.com/oculus-samples/Unity-FirstHand
Unity-TheWorldBeyond
URL:https://github.com/oculus-samples/Unity-TheWorldBeyond
https://github.com/oculus-samples/Unity-TheWorldBeyond
Unity-SharedSpatialAnchors
URL:https://github.com/oculus-samples/Unity-SharedSpatialAnchors
https://github.com/oculus-samples/Unity-SharedSpatialAnchors
Unity-UltimateGloveBall
URL:https://github.com/oculus-samples/Unity-UltimateGloveBall
https://github.com/oculus-samples/Unity-UltimateGloveBall
その他
https://github.com/oculus-samples/Unity-Movement
https://github.com/oculus-samples/Unity-AppSpaceWarp
自作のサンプルコード
https://github.com/nekoharuyuki/VRGrabPrj
https://github.com/nekoharuyuki/CommunityVR
まとめ
VR開発の経験や知識をキャッチアップするのに役立つサイトをまとめました。 また、他にも良いサイトがありましたら更新していきます。
ハッカソンのやる事リスト
はじめに
ハッカソンとは、同じテーマに興味を持った開発者が集まり、協議・協力しながら集中的にコーディングを行う催しです。 ハッカソンという言葉は、ハック(hack)とマラソン(marathon)を組み合わせた造語とされています。
ハッカソンは、プログラマーの個人作業になりやすいプログラミングを、大人数で賑やかに行う点に特徴があります。短時間で集中して開発を進めることで、スキルの向上が促されたり、意見を出し合いながら進めることで、新しいアイデアや発見が得られたりといったことが期待できます。ハッカソンはプログラマーの祭典として、あるいは、研修活動などとして行われます。
今回、自分がハッカソンを体験して勉強になった事を備忘録としてまとめます。 また、次回参加する機会があった場合の為に 「やることリスト」 を用意しました。
ハッカソンを体験して勉強になった事
参加したハッカソンの内容
- 企業の開発中のSDKを使用して、サービスを2週間で作成する
- 一緒に開発するメンバーはほぼ初対面、年齢も所在地もバラバラ
- 技術レベルは初心者から中級者、職種もさまざまな人が参加
- ハッカソンの成果物は、アプリケーションと発表スピーチ
企業がハッカソンを主催する目的は多々ありますが、新しいサービスや機能に関するアイデアやヒントを発掘できることが大きな目的としてあります。 内容によっては、製品化を目指して本格的なプロジェクトになることもありえます。例えば、Facebookで有名な「いいね!」機能も、もともとは同社のハッカソンを通じて誕生したものだそうです。
警告! 企業と秘密保持契約を結んだ場合は、情報の取り扱いに注意してください!
ハッカソンのイベント事例
官公庁や大学、企業がさまざまなハッカソンイベントを実施しています。 参考にイベント記事などを見てみると発表の方法など勉強になります。
- 国土交通省「アイデアソン・ハッカソン」
- 東京大学「JPHACKS(ジャパンハックス)」
- Yahoo! JAPAN「Hack Day」
- ソニー「GO FOR IT~Home Hacker's Workshop~」
ハッカソンに参加して感じたメリット
最新技術・テーマに触れる絶好の機会になった
最先端のテクノロジーを利用して開発を行うハッカソンに参加した為、新しい技術に触れるだけでなくその活用の可能性をさまざまな人と協力しながら模索する経験は、とって大きな財産になりました。コミュニケーション活性化
普段個人作業の多い自分にとって、担当外の業務について知る機会となりました。一つのゴールに向かってコミュニケーションを重ねることで、互いの理解が進み、あまり接点のない人とも信頼関係を育むきっかけとなりました。ゼロから完成まで作り上げる達成感と経験値の獲得
ゼロから完成まで一貫して作り上げたときの達成感は格別なものがありました。また、作り上げた成果物に対して、きちんと評価を受けることで、開発のモチベーションも高まりました。
事前準備
スムーズに作業を開始する為にいろいろな事前準備を行う必要があります。
こちらの本を読むとアイデアの出し方やタスクの進行管理などがスムーズに行えます。
心構えと把握すること
- 仕事をしながらハッカソンで開発する為の時間管理
注意! 作業時間を1日2~3時間確保すること
- チームメンバーに関する情報を把握する
- チームメンバーが何を目的に参加したのか
- チームメンバーのやりたい事と出来る事は何か
- チームメンバーとしっかりミーティングが出来る時間があるか
注意! 作業時間には、他のメンバーの作業を助けることもあります。 また、作業を助けてもらう事もあるので、何に詳しいかを把握するとスムーズに作業が出来ます。
やることリスト
- テーマに対して問題点をチーム内で洗い出す。
- 問題点を1つに絞りこみ、ペルソナを設定して解決策(サービス)を検討する。
- 実装する機能を決めて、必要となるタスクを洗い出して工数を見積り、担当者を割り振る。
- 開発をする。
- プレゼン準備と練習をする。
プレゼン準備で考えること
- テーマの問題点をどのように解決するサービスなのか
- どの部分をデモで見せるのか
- 自分たちのこだわりはどこか
まとめ
ハッカソンは短期間で企画から開発まで行うので、まったく楽なイベントではありません。 しかし、参加して得られるメリットは多いので、少しでも気になった方は参加を検討してみてはいかがでしょうか。 エンジニアとしてのキャリアアップを加速させるきっかけとなるはずです。
Oculus Integration で Firebase Analytics と Crashlytics を設定する
はじめに
Oculus アプリで Firebase Analytics と Crashlytics を実装したので、備忘録としてまとめました。
Firebase とは
アプリを開発の際に、ユーザーベースを拡大、収益を高めるためのツールです。Firebaseを使えば、インフラ構築に手間取ることなくビジネスを収益化し、効率よくアプリを開発し、運用・管理することができるようになります。
- スマホアプリでの実装
- Firebaseの基礎的な使い方
事前準備
- Oculus Integration
- Firebase のアカウント
実装
Firebaseをインストールする
1."UnityプロジェクトにFirebaseを追加する" の記事に記載されているステップ1〜4に従って実装します。 ※ ステップ5はサンプルコードに含まれているため、必須ではありません。
2.ダウンロードした
firebase_unity_sdk
から、dotnet4 / FirebaseAnalytics.unitypackage
とdotnet4 / FirebaseCrashlytics.unitypackage
をインポートします。3.AndroidAuto-Resolver が有効でない場合、必ず有効に設定します。
Assets > Play Serveces Resolver > Android Resolver -> Settings
- 4.テンプレート
google-services.json
を独自のものに置き換えます。 テンプレートは下記の場所に保存されているので上書きします。
プロジェクトコードを有効にする
Firebase Analytics と Crashlytics がプロジェクトに追加されたら、Oculusメニューからサンプルコードを有効にします: Oculus> Samples> Firebase> Enable Firebase Sample
'unsafe'を許可する
クラッシュを強制する的に発生させるために、Crashlyticsサンプルでは C#
の unsafe
キーワードを使用しています。これはデフォルトでは禁止されているのでunityで設定して動作できるようにする必要があります。unsafe
キーワードは、プレーヤーの設定で有効にする事ができます。 : Edit > Project Settings... > Player > Android settings > Allow 'unsafe' code
ビルドして実行
この時点で、サンプルシーンを開いて、いくつかのイベントとクラッシュをトリガーできるはずです。レポートは、Firebaseコンソール で確認できます。
自分の作成したアプリへも、 StartCrashlytics.cs
を使用するだけで簡単にクラッシュを解析する事ができます。
symbols.zip ファイルをFirebaseにアップロードする
Scripting Backend を IL2CPP に設定してビルドし、symbols.zip を作成して Firebase にアップロードするとより詳細なクラッシュ報告を確認することが出来ます。 Firebase CLI コマンドを実行して、生成した Crashlytics 互換のシンボル ファイルを Firebase サーバーにアップロードします。
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: Firebase Android アプリ ID(パッケージ名ではありません) Firebase Android アプリ ID の例: 1:567383003300:android:17104a2ced0c9b9b
Firebase アプリ ID を確認する方法
google-services.json の mobilesdk_app_id に記載されています。
Unity 内で直接 APK をビルドした場合: PATH/TO/SYMBOLS は、ビルドが完了したときにプロジェクトのルート ディレクトリに生成される、圧縮されたシンボル ファイルのパスです(例: myproject/myapp-1.0-v100.symbols.zip
)。
最後に、強制的にテスト クラッシュを発生させて Crashlytics の設定を完了し、Firebase コンソールの Crashlytics ダッシュボードで最初のデータを確認します。
https://firebase.google.com/docs/crashlytics/ndk-reports?hl=ja#alternative-options-symbol-uploading
遊技機開発ならではのノウハウ 【パチスロ】
はじめに
以前、遊技機開発ならではのノウハウ 【パチンコ】をまとめました。多くの人に読んで頂き、とても嬉しく思います。 私自身、数年前の仕事でパチスロのプロジェクトでもエンジニアの経験しましたので、リール制御や液晶演出やサウンドなど様々な開発について、旧来の開発フローや手法ですが、用語の解説も合わせてザックリと紹介します。 ※ 秘密保持契約(NDA)に基づき、すでに公開済みのものや独自にないし別ソースから入手されたものなどの紹介です。
パチスロ開発について
パチスロの開発フローについては、以前まとめた記事とほとんど同じです。 下記の記事が分かりやすくまとまっています。
潜入!SANKYO調査隊!~パチスロ開発篇~ 皆さんからの要望が多かったパチスロの開発現場に潜入調査!
エンジニアがやる事
リール制御
パチスロは一見すると回したリールを自力で止めるゲームのようですが、実際にはパチンコと同じで抽選によって当たるものが決められています。レバーを叩いた時点で、当たり、小役、ハズレなどの各種抽選が行われており、その抽選結果に応じた位置でリールが止まります。パチンコと違う部分は役によってはしっかり狙わないと揃わず、揃わなければ出玉は得られません。
リール制御は、しっかりと、法律で定められており、ボタンを押してから、0.19秒以内に止まらなければなりません。 また、法律上は、最大5コマまで、リールがスベる事ができます。 ※ 停止の時間は、メーカーによって、バラバラで横並びで決まっているわけではありません。
実装には以下の方式があります。
コントロール方式 条件装置を最大限すべらせて揃えようとする方式
テーブル方式 最初に止めたリールの位置により第2リール、第3リールの停止する位置をあらかじめ決めておく方式
液晶演出
遊技機映像の需要拡大や液晶パネル品質向上も伴ない、より一層、高品質な表現が求められるようになってきています。開発会社では各社で、映像制作ツールの導入や検証研究を行い、制作技術向上に取り組んでいます。中でもAfter Effectsのスキル習得は注力されており、デザイナーだけでなくエンジニアもAEに接することが多くありました。
ベースとなる仕組みはパチンコ開発でまとめた通りですが、パチンコ開発との違いとして、開発会社によってはリアルタイムCGで開発している事もあります。 https://qiita.com/nekoharuyuki/items/f9bfe3924c0818058172
リアルタイムCGとは 即時にレンダリングされるCGのこと。ゲーム、VR、イベント、シミュレータなどで用いられています。これに対して、事前にレンダリングされているCGのことをプリレンダーと呼びます。リアルタイムCGの制作においては、リアルタイム性を最優先とし、プリレンダーよりも表現精度を落とす場合が多くあります。そのため制作者には、限られたデータ容量のなかで、最大限豊かな表現をするための様々な工夫が要求されます。
サウンド
エンジニアはパチンコやパチスロ台の映像に対するサウンドの制御を行います。効果音やBGMなどの実装などが中心になりますが、サウンドと合わせて役物の制御実装も行います。
まとめ
以前、まとめた 遊技機開発ならではのノウハウ 【パチンコ】 よりもスッキリとした内容になっていますが、参考にして頂けたら嬉しいです。
Lightship ARDK の AR Voyage プロジェクトを動かしてみる
AR Voyage とは?
AR Voyageは、Lightship ARDKで利用可能な機能で設計された短いゲームのアプリケーションです。 ※ Lightship ARDK については、こちら にまとめました。 ※ 動作するように設定したコードは こちら に用意しました。
プロジェクトを動作させるまでに必要な設定を備忘録としてまとめました。
AR Voyage プロジェクトの内容
AR Voyage プロジェクトには6つのシーンがあります。
- Splash : スプラッシュ画像を表示する
- Map : 4つのデモのどれを再生するかを選択するためのメインメニュー画面
- SnowballToss : サンプルゲーム
- Walkabout : サンプルゲーム
- SnowballFight : サンプルゲーム
- BuildAShip : サンプルゲーム
サンプルアプリを動作させるための手順
- 公式サイトからダウンロード
- unityプロジェクトを作成
- Universal RP を設定
- ArdkAuthConfig を設定
- iOSビルド設定
1と2の項目は「Lightship ARDK のサンプルプロジェクトを動かしてみる」と同じです。
https://qiita.com/nekoharuyuki/items/54b0e91c1b69446e2684
1. 公式サイトからダウンロード
こちら からダウンロードして設定しました。 ダウンロードにはアカウント登録が必要です。
以下のファイルをダウンロードします。 - ardk-1.0.1.unitypackage - ardk-voyage-1.0.1.tar
サイトのこちらのボタンからダウンロードします。
2. unityプロジェクトを作成
unityプロジェクトを作成する際に「Mobile 3D」を選択してプロジェクトを作成します。
プロジェクトを作成したら、ardk-1.0.1.unitypackage
をインポートして、ardk-voyage-1.0.1.tar
を解凍してプロジェクトに配置します。
配置は以下のようになります。
エラーが表示されているので、解消します。
3. Universal RP を設定
パッケージマネージャーから、Universal RPを追加します。
https://docs.unity3d.com/ja/2019.4/Manual/com.unity.render-pipelines.universal.html
メニューの「Edit -> Project Setting」を開きます。 「Project Setting」の「Graphics」をクリックし、「Scriptable Render Pipeline Settings」に「ARVoyageUrpAsset」を設定します。
4. ArdkAuthConfig を設定
#Niantic.ARDK.Internals.StartupSystems#: Could not load an ArdkAuthConfig, please add one under Resources/ARDK/
こちらのエラーは、以前書いたこちらの内容で解消します。
5. iOSビルド設定
2021/11 リリース 現在では、iOSのみがビルド可能になっています。 androidでのビルドは出来ませんでした。
Build Settings を以下のように設定します。
Player Settings... をクリックし、以下の項目を入力します。
- Company Name の入力
- Camera Usage Description と Location Usage Description を入力
Build Settings で Build And Run を実行すると以下のようなミニゲームが遊べます。
AR開発で参考になる本
Lightship ARDK のサンプルプロジェクトを動かしてみる
Lightship ARDKとは?
Nianticが開発している「Ingress」や「ポケモンGO」などの基盤となるプラットフォームです。
ARDKには「Mapping (リアルタイムでの現実世界の再現)」,「Understanding (環境の理解)」,「Sharing (体験の共有)」というAR機能の3つの核を処理するツールや,技術がまとめられており,世界中の開発者が持つARの世界観を実現できるようになります。
Lightship ARDK で制作されたデモが多数公開されているので、今回動作するように設定しましたので備忘録としてまとめます。
※ こちらは AR Voyage Project にあります。今後、動作させれるようにしてまとめます。
追記 : 動作させれるようにしてまとめました。
https://qiita.com/nekoharuyuki/items/fd08ac68cf5ae7025d86
AR開発で参考になる本
やったこと
動画でやり方が説明されています。(英語ですが...)
https://www.youtube.com/watch?v=Yvk-5y9fu_g&t=7s
YouTubeチャンネル もあります。
1. 開発者登録
Lightshipのサイト へアクセスして、「Download Now」をクリックします。 初回アクセスでメールアドレスなどの情報登録があるので登録を行います。
2. Lightship ARDK とサンプルをダウンロード
Download ARDK ページに移動して、下記画像のボタンから、ardk-1.0.1.unitypackage と ardk-examples-1.0.1.unitypackage をダウンロードします。
3. Unityのプロジェクトにインポート
ダウンロードしたパッケージをUnityプロジェクトにインポートします。 Macを使用している場合は、M1 をサポートしていないとのことなので注意が必要です。
ARDK is not supported by certain Mac models with Apple Silicon processors (‘M1 chips’) as ARDK requires the Unity 2019.4 LTS version which is also incompatible with Apple Silicon. The Niantic team is aware of this issue and is working to support this in future versions.
ARDKは、AppleSiliconと互換性のないUnity2019.4 LTSバージョンを必要とするため、Apple Siliconプロセッサ(「M1チップ」)を搭載した特定のMacモデルではサポートされていません。Nianticチームはこの問題を認識しており、将来のバージョンでこれをサポートするよう取り組んでいます。
参考 : https://lightship.dev/docs/importing_ardk.html
追記 Apple Siliconプロセッサ(「M1チップ」)を搭載した特定のMacモデルでも対応出来るようになりました。Developing Using M1 Macs に対応方法の記載があります。
3.1 Unityのプロジェクトを作成
動画 でプロジェクトを作成する際に「Mobile 3D」を選択していたので、「Mobile 3D」でプロジェクトを作成しました。
3.2 サンプルプロジェクトを開く
以下のパッケージをインポートします。
- ardk-1.0.1.unitypackage
- ardk-examples-1.0.1.unitypackage
今回は SemanticSegmentation の動作する環境を整えていきます。 この状態だとエラーが出るので対応します。
3.3 ArdkAuthConfig を用意する
Resources フォルダ で「Create -> ARDK -> ArdkAuthConfig」を選択します。 ArdkAuthConfig ファイルのApi Keyにkeyを登録します。 (今回はとりあえず SemanticSegmentation を動かしたいだけなので、適当に入力します。) (時々何かのタイミングでキーが消える事があるので注意) 参考 : https://lightship.dev/docs/authentication.html
3.4 MockupScene に ARDK_MockWorld Layer を設定する
Hierarchy の MockupScene を選択します。 Layer から add Layer... を選択します。 User Layer の空いているところに ARDK_MockWorld を追加して、MockupScene に設定します。 これで全てのエラーが消えます。
4. iOSでビルド
https://lightship.dev/docs/building_ios.html
こちらのサイトに記載されている方法でビルドします。
5. androidでビルド
https://lightship.dev/docs/building_android.html
こちらのサイトに記載されている方法でビルドします。
まとめ
サンプルを動かすことが出来ました!