nekoblog

nekoblog

ちょっとためになるブログ

Solidity とは何か? 開発環境を構築する!

はじめに

最近、「 Web3(Web3.0)」という言葉を耳にすることが増えたという人も多いと思います。 Web3.0の基盤は、ブロックチェーン技術をベースに構築され、既存のWebの問題点が解決できると期待されています。 この記事では、現在トレンドの Web3(Web3.0)を実現する為に、ブロックチェーン上で動作する仕組みである Solidity を理解し、開発環境を構築していきます。

参考にした本

Solidity とは

Solidityとはプログラミング言語の名前で、Ethereumのブロックチェーン上で動作するプログラム(コントラクト)を記述することができるプログラミング言語です。

SolidityはC++PythonJavaScriptを参考に、Ethereum Virtual Machine(EVM)の操作を目的に作られています。Solidityは静的言語で継承やライブラリ、ユーザーが定義した複雑な型をサポートします。 Solidityで投票やクラウドファンディング、匿名のオークションやマルチシグウォレットなどを作成することができます。

コントラクトをデプロイする際には最新バージョンのSolidityを使うことが推奨されています。

Solidityの開発環境

:::note warn こちらの記事ではmac OS で環境構築をおこなっています。 :::

必要なツール

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でスマートコントラクトの構築を学習できる、インタラクティブなオンラインレッスンです。

https://cryptozombies.io/jp/

スマートコントラクトのチェックリスト

https://jeffrey-scholz.medium.com/the-ultimate-100-point-checklist-before-sending-your-smart-contract-for-audit-af9a5b5d95d0

ここからは別の記事で詳しくまとめていく予定です。 追記: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開発には、以下のようなプログラミング言語や技術が使用されることが多いです。

  1. Unity: ゲーム開発に使用されることが多い。Unityは2D/3Dのグラフィックスを扱うことができる。
  2. Unreal Engine: ゲーム開発に使用されることが多い。Unreal Engineは高いグラフィックス性能を持つ。
  3. C++: VRアプリケーションの高速な処理に使用されることが多い。
  4. OpenVR: VRアプリケーションの開発に使用されることが多い。
  5. WebVR: VRアプリケーションの開発に使用されることが多い。WebVRは、Webブラウザ上で動作する。

また、VR開発には、3Dグラフィックスや動画、音響などの要素が重要になります。プログラミング言語や技術を使って、これらの要素を実現することが重要になります。

サイト一覧

VR関連の公式サイト

Oculus

Oculus公式デベロッパーズポータル URL : https://developer.oculus.com/

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 banner.png

https://github.com/oculus-samples/Unity-SharedSpaces

Unity-AssetStreaming

URL:https://github.com/oculus-samples/Unity-AssetStreaming banner-1.png

https://github.com/oculus-samples/Unity-AssetStreaming

Unity-FirstHand

URL:https://github.com/oculus-samples/Unity-FirstHand banner.png

https://github.com/oculus-samples/Unity-FirstHand

Unity-TheWorldBeyond

URL:https://github.com/oculus-samples/Unity-TheWorldBeyond CoverMiniLandscape.png

https://github.com/oculus-samples/Unity-TheWorldBeyond

Unity-SharedSpatialAnchors

URL:https://github.com/oculus-samples/Unity-SharedSpatialAnchors 165530747-ab6ee610-c0a6-4f43-bed4-57db257984d9.png

https://github.com/oculus-samples/Unity-SharedSpatialAnchors

Unity-UltimateGloveBall

URL:https://github.com/oculus-samples/Unity-UltimateGloveBall banner.jpg

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で有名な「いいね!」機能も、もともとは同社のハッカソンを通じて誕生したものだそうです。

警告! 企業と秘密保持契約を結んだ場合は、情報の取り扱いに注意してください!

ハッカソンのイベント事例

官公庁や大学、企業がさまざまなハッカソンイベントを実施しています。 参考にイベント記事などを見てみると発表の方法など勉強になります。

ハッカソンに参加して感じたメリット

  • 最新技術・テーマに触れる絶好の機会になった
    最先端のテクノロジーを利用して開発を行うハッカソンに参加した為、新しい技術に触れるだけでなくその活用の可能性をさまざまな人と協力しながら模索する経験は、とって大きな財産になりました。

  • コミュニケーション活性化
    普段個人作業の多い自分にとって、担当外の業務について知る機会となりました。一つのゴールに向かってコミュニケーションを重ねることで、互いの理解が進み、あまり接点のない人とも信頼関係を育むきっかけとなりました。

  • ゼロから完成まで作り上げる達成感と経験値の獲得
    ゼロから完成まで一貫して作り上げたときの達成感は格別なものがありました。また、作り上げた成果物に対して、きちんと評価を受けることで、開発のモチベーションも高まりました。

事前準備

スムーズに作業を開始する為にいろいろな事前準備を行う必要があります。

こちらの本を読むとアイデアの出し方やタスクの進行管理などがスムーズに行えます。

心構えと把握すること

  • 仕事をしながらハッカソンで開発する為の時間管理
    • ハッカソン期間中、仕事を定時に終えれるようになっているか
    • 仕事後、ハッカソンの作業をするメンタルやモチベーションを保てるか
    • 体調などのコンディションを整えているか

注意! 作業時間を1日2~3時間確保すること

  • チームメンバーに関する情報を把握する
    • チームメンバーが何を目的に参加したのか
    • チームメンバーのやりたい事と出来る事は何か
    • チームメンバーとしっかりミーティングが出来る時間があるか

注意! 作業時間には、他のメンバーの作業を助けることもあります。 また、作業を助けてもらう事もあるので、何に詳しいかを把握するとスムーズに作業が出来ます。

やることリスト

  1. テーマに対して問題点をチーム内で洗い出す。
  2. 問題点を1つに絞りこみ、ペルソナを設定して解決策(サービス)を検討する。
  3. 実装する機能を決めて、必要となるタスクを洗い出して工数を見積り、担当者を割り振る。
  4. 開発をする。
  5. プレゼン準備と練習をする。

プレゼン準備で考えること

  • テーマの問題点をどのように解決するサービスなのか
  • どの部分をデモで見せるのか
  • 自分たちのこだわりはどこか

まとめ

ハッカソンは短期間で企画から開発まで行うので、まったく楽なイベントではありません。 しかし、参加して得られるメリットは多いので、少しでも気になった方は参加を検討してみてはいかがでしょうか。 エンジニアとしてのキャリアアップを加速させるきっかけとなるはずです。

Oculus Integration で Firebase Analytics と Crashlytics を設定する

はじめに

Oculus アプリで Firebase Analytics と Crashlytics を実装したので、備忘録としてまとめました。

Firebase とは

アプリを開発の際に、ユーザーベースを拡大、収益を高めるためのツールです。Firebaseを使えば、インフラ構築に手間取ることなくビジネスを収益化し、効率よくアプリを開発し、運用・管理することができるようになります。 image00.png

事前準備

実装

Firebaseをインストールする

プロジェクトコードを有効にする

Firebase Analytics と Crashlytics がプロジェクトに追加されたら、Oculusメニューからサンプルコードを有効にします: Oculus> Samples> Firebase> Enable Firebase Sample スクリーンショット 2022-01-31 15.57.29.png

'unsafe'を許可する

クラッシュを強制する的に発生させるために、Crashlyticsサンプルでは C#unsafeキーワードを使用しています。これはデフォルトでは禁止されているのでunityで設定して動作できるようにする必要があります。unsafeキーワードは、プレーヤーの設定で有効にする事ができます。 : Edit > Project Settings... > Player > Android settings > Allow 'unsafe' code スクリーンショット 2022-01-31 16.04.44.png

ビルドして実行

この時点で、サンプルシーンを開いて、いくつかのイベントとクラッシュをトリガーできるはずです。レポートは、Firebaseコンソール で確認できます。

自分の作成したアプリへも、 StartCrashlytics.cs を使用するだけで簡単にクラッシュを解析する事ができます。

symbols.zip ファイルをFirebaseにアップロードする

Scripting Backend を IL2CPP に設定してビルドし、symbols.zip を作成して Firebase にアップロードするとより詳細なクラッシュ報告を確認することが出来ます。 スクリーンショット 2022-02-02 17.45.07.png 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)に基づき、すでに公開済みのものや独自にないし別ソースから入手されたものなどの紹介です。

パチスロ開発について

パチスロの開発フローについては、以前まとめた記事とほとんど同じです。 https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_229633_52e7acd8-cf87-fbe4-121c-cb23656eedd1.png 下記の記事が分かりやすくまとまっています。

潜入!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で利用可能な機能で設計された短いゲームのアプリケーションです。 unnamed.png ※ Lightship ARDK については、こちら にまとめました。 ※ 動作するように設定したコードは こちら に用意しました。

プロジェクトを動作させるまでに必要な設定を備忘録としてまとめました。

AR Voyage プロジェクトの内容

AR Voyage プロジェクトには6つのシーンがあります。

  • Splash : スプラッシュ画像を表示する
  • Map : 4つのデモのどれを再生するかを選択するためのメインメニュー画面
  • SnowballToss : サンプルゲーム
  • Walkabout : サンプルゲーム
  • SnowballFight : サンプルゲーム
  • BuildAShip : サンプルゲーム

unnamed.jpg

サンプルアプリを動作させるための手順

  1. 公式サイトからダウンロード
  2. unityプロジェクトを作成
  3. Universal RP を設定
  4. ArdkAuthConfig を設定
  5. iOSビルド設定

1と2の項目は「Lightship ARDK のサンプルプロジェクトを動かしてみる」と同じです。

https://qiita.com/nekoharuyuki/items/54b0e91c1b69446e2684

1. 公式サイトからダウンロード

こちら からダウンロードして設定しました。 ダウンロードにはアカウント登録が必要です。

以下のファイルをダウンロードします。 - ardk-1.0.1.unitypackage - ardk-voyage-1.0.1.tar

サイトのこちらのボタンからダウンロードします。 スクリーンショット 2021-11-15 18.24.21.png

2. unityプロジェクトを作成

unityプロジェクトを作成する際に「Mobile 3D」を選択してプロジェクトを作成します。 https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_229633_e7c3135d-6ff9-8ba7-7fd5-bc3a93d9b7df.png

プロジェクトを作成したら、ardk-1.0.1.unitypackageをインポートして、ardk-voyage-1.0.1.tarを解凍してプロジェクトに配置します。 配置は以下のようになります。 スクリーンショット 2021-11-15 18.56.33.png エラーが表示されているので、解消します。

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」を設定します。 スクリーンショット 2021-11-15 12.26.57.png

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 を以下のように設定します。

スクリーンショット 2021-11-15 19.10.30.png

Player Settings... をクリックし、以下の項目を入力します。

  • Company Name の入力 スクリーンショット 2021-11-15 17.15.46.png
  • Camera Usage Description と Location Usage Description を入力 スクリーンショット 2021-11-15 17.15.23.png

Build Settings で Build And Run を実行すると以下のようなミニゲームが遊べます。 meshing_lightship.gif

AR開発で参考になる本

Lightship ARDK のサンプルプロジェクトを動かしてみる

Lightship ARDKとは?

Nianticが開発している「Ingress」や「ポケモンGO」などの基盤となるプラットフォームです。

unnamed.jpg ARDKには「Mapping (リアルタイムでの現実世界の再現)」,「Understanding (環境の理解)」,「Sharing (体験の共有)」というAR機能の3つの核を処理するツールや,技術がまとめられており,世界中の開発者が持つARの世界観を実現できるようになります。

https://lightship.dev/

Lightship ARDK で制作されたデモが多数公開されているので、今回動作するように設定しましたので備忘録としてまとめます。

meshing_lightship.gif semantics_lightship.gif

※ こちらは AR Voyage Project にあります。今後、動作させれるようにしてまとめます。

追記 : 動作させれるようにしてまとめました。

https://qiita.com/nekoharuyuki/items/fd08ac68cf5ae7025d86

AR開発で参考になる本

やったこと

  1. 開発者登録
  2. Lightship ARDK とサンプルをダウンロード
  3. Unityのプロジェクトにインポート
  4. iOSでビルド
  5. androidでビルド

動画でやり方が説明されています。(英語ですが...)

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 をダウンロードします。 スクリーンショット 2021-11-10 23.33.43.png スクリーンショット 2021-11-10 23.33.51.png

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」でプロジェクトを作成しました。 スクリーンショット 2021-11-10 23.13.27.png

3.2 サンプルプロジェクトを開く

以下のパッケージをインポートします。

  • ardk-1.0.1.unitypackage
  • ardk-examples-1.0.1.unitypackage

今回は SemanticSegmentation の動作する環境を整えていきます。 スクリーンショット 2021-11-10 23.25.57.png この状態だとエラーが出るので対応します。

3.3 ArdkAuthConfig を用意する

Resources フォルダ で「Create -> ARDK -> ArdkAuthConfig」を選択します。 ardk_auth_config.png ArdkAuthConfig ファイルのApi Keyにkeyを登録します。 (今回はとりあえず SemanticSegmentation を動かしたいだけなので、適当に入力します。) api_key.png (時々何かのタイミングでキーが消える事があるので注意) 参考 : https://lightship.dev/docs/authentication.html

3.4 MockupScene に ARDK_MockWorld Layer を設定する

Hierarchy の MockupScene を選択します。 スクリーンショット 2021-11-11 0.26.59.png Layer から add Layer... を選択します。 User Layer の空いているところに ARDK_MockWorld を追加して、MockupScene に設定します。 スクリーンショット 2021-11-11 0.29.08.png これで全てのエラーが消えます。

4. iOSでビルド

https://lightship.dev/docs/building_ios.html

こちらのサイトに記載されている方法でビルドします。

5. androidでビルド

https://lightship.dev/docs/building_android.html

こちらのサイトに記載されている方法でビルドします。

まとめ

サンプルを動かすことが出来ました!

https://twitter.com/pirorororonn/status/1458610482567254019