a32nx チュートリアル -入門編-

とりあえず飛ばしてみようを目標に手順を限りなく簡略化した入門編。

事前準備

  • a32nxのdevelop版
    長く遊んでない場合はupdateを。

フライトプラン作成

simbriefにアクセスし、flight planを作成していく

https://dispatch.simbrief.com/home

  1. Edit flight または New flightからflight plan作成画面へ
  2. flight infoに出発地と到着地の空港コードを入力。AlternativeはNONEでOK。
  3. 希望の滑走路があればOptional Entriesから。到着滑走路はILSがないとかなり厳しい。
  4. Save flight
  5. Generate flight

離陸準備(MCDUの入力)

下にメッセージが出てきた時はCLR(Clear)を押す。

←→↓↑でページをめくれます。

  1. World mapを開き、
    1. flight planで選択した滑走路からSet as departure
    2. 天気をPRESETからClear skiesまたはFew clouds
    3. 時間はお好み
    4. flightを押してゲーム内へ
  2. flypadからImport simbrief dataを押す
  3. MCDU画面を見る
  4. Init
    1. INIT->Init request
    2. 次ページに行き、ZFW/ZFWCGをCopy&Paste
  5. F-PLN(Flight-Plan)
    1. F-PLNから左上の出発空港を押す->departure->出発滑走路とSIDを選択する->insert
    2. 左下の到着空港を押す->arrival->到着滑走路とSTARを選択する->insert
      同じようなstarがいくつかあって判断がつかない場合はチャートを見てみましょう。
      数字はバージョンみたいなものなので、違っても気にしなくてOK
    3. NDをPLANモードにし、MCDUのF_PLNページで↑↓を押してルートを確認しましょう。途切れていたり、waypointが2重に入っていたりがたまによくある。
    4. 確認が終わったらNDはARCモードに戻す
  6. PERF(Performance)を押して、適当にV1=138, Vr=140, V2=142くらいを入力する。

Take Off !

  1. パーキングブレーキを解除後、スラストレバーをMAXにして、Vrの140ktに達したら機首を上げる。
  2. 満足したらAP1を押して、Autopilotを入れる
  3. スラストレバーをCLB(Climb)にセット
  4. Gear up
  5. flaps up

Top of decent (降下開始)

NDの右下にのびた矢印が降下開始地点の目安。

ちょっと早めの残り20マイルくらいで、Altitude selectorを1000ftにsetする。

MCDU->PERF->next phase->APPRページ->RADIOを210ftくらいにset

Approach

NDを見て滑走路まで残り20マイルくらいを目安に、

  1. APPR(Altitude selectorの右下あたり)をON
  2. AP1とAP2両方ON
  3. Gear down
  4. Auto Brake MAX
  5. 速度が落ちてきたらflapを下げていく

Landing

  1. 30ftのコールあたりでスラストをidleに
  2. 着地したらスラストをリバース

補足

  • flypad - 操縦席横にあるタブレット端末

  • MCDU - Multi-function Control and Display. スラストレバーの近くにあるコンピューター。

  • SID/STAR - Standard Instrument Departure/STandard ARrival 空港の出発・進入経路が書かれたチャート。SimbriefやflypadのRouteにある先頭と末尾に書いてあるのがだいたいSIDとSTAR。
    例) SID: LAXAS3 STAR: IKOMAE

    LAXAS3 LAXAS Y56 TOHME Y54 KOHWA Y546 AGPUK MIRAI ABENO IKOMAE

  • ND - Navigation Display 右のディスプレイ

  • Managed/Selected Mode
    Speed, Heading, Altitudeに丸ポチがついていたら、Managed modeであり、いいかんじにやってくれるモード。基本Managed modeの方がよい。Selected modeは強制!ってかんじ

  • ZFW / ZFWCG
    Zero Fuel Weight : 燃料を除いた機体重量
    CG = Center of Gravity = 重心

  • チャートを見る

https://aisjapan.mlit.go.jp/LoginAction.do

  1. AIP
  2. Currentに黒ポチがついたバージョンを選択
  3. AD2 AERODROMES
  4. 空港を選択
  5. メニューが展開されるので、一番下をクリック

WebAPI設計 #1

WebAPI設計の本を読み始めたので、そのメモ。

1章 APIデザインとは何か

  • コンポーネント指向でパーツを分ける

  • 実装やロジックはラッピングし、APIコール側はロジックを極力減らし、考えなくてもいいものにする

ラジコンのコントローラーが直感的でなく、仕様書を読まないと使えない話。

レストランの注文がAPIとして例えられていた。料理は店員とシェフでラッピングされているため、コールする側は作り方を知らなくても、料理を得ることができる。

Vulkan メモ2

Physical devices and queue families

  • Validation layerのExtension supportの時もそうだったが、countの変数を0初期化して、vkEnumerate~にcountやその他を引数で渡すと数えてくれるらしい。

  • 最後にvectorの先頭ポインタを与えると一覧が得れるっぽい。countが0でないことを確認してから一覧を取得している。なんでかね。

  • 次に一覧をforで回してisSDeviceSuitableで適合するものを探す。なかったらphysicalDeviceがVK_NULL_HANDLEなのでエラーを吐かせる。

  • 物理デバイスの情報とかサポートしてる物とか取得できる。

  • queueFamilyが利用できるかのチェック。もし利用できなかったら数字は0になるわけだが、そういうマジックナンバーよくないよね。ってことでoptionalを使うらしい。

  • quereFamilyからqueueFlags(bit mask)を取得。比較してOKなら適合物理デバイスってことらしい。ただ正直これでなぜ適合なのかわからん。

Vulkanメモ 1

SetupのValidation layerまで。

window初期化

vulkanはレンダリング処理はするものの、windowを生成するのは大変らしい。tutorialではglfwを使ってwindowを生成するらしい

mainLoop, cleanup

描画のループ処理。Dxlibraryみたい。cleanupはプログラムが終了するときの処理。

createInstance

構造体に設定や情報を詰め込んでinstanceを生成する。

Validation Layer

Vulkanはオーバーヘッドを少なくするために、APIにチェック機構が備わっていない。そのため、自分でチェックする。正直よくわからん。

Swiftを書いて参考にした記事

ブックマークの整理も兼ねて参考にした記事(主にQiita)

UITabbar

iOS Swiftチートシート・ライブラリまとめ UITabBar・UITabBarItem編 - Qiita

App Transport Security

https://developer.apple.com/documentation/security/preventing_insecure_network_connections

叩くAPIがATSを満たしていなかったため、例外設定してあげる必要があった

Notification

[Swift4]通知の出し方 - Qiita

決まった日時に通知することは簡単にできそう。よく見るSNSの通知などは通知サーバーが必要。で、それにはAppleのDeveloperアカウントが必要。

オプショナル型とか

SwiftのAnyにOptionalを突っ込むと取り出せなくなる話 - Qiita

どこよりも分かりやすいSwiftの"?"と"!" - Qiita

入門書でわかったつもりでも、書いてると「あれ?」ってなってくるオプショナル型まわり

命名規則とか

Swiftガイドライン的な - Qiita

通信

[Swift] AlamofireでSemaphoreを使って同期通信する - Qiita

cookieのせて通信するならAlamofireが一番楽そうだった

JSONパース

Codableで色々なJSONに対応する - Qiita

通信とご一緒に。APIのレスポンスが型にない形式だと、とてもめんどくさくなる。日付とかね...

protocol, delegate

【Swift】delegate実装の流れ - Qiita

あっちが任せる側で、こっちが任せられる側...あれ、どっちだってなった。

UITableViewが動かない - UITableView is not working -

UITableViewが動かない。rowの数を出しても0と表示され、cell内でデバッグメッセージを入れても動かない。

qiita.com

この記事に書いてあるが、StoryboardでViewControllerのdelegate,sourcetableViewをリンクする。

私が見てた記事2つはこの手順がなかったため、ずっと動かずに困っていた...

ちなみになぜこの手順がいるか軽くだけ調べたが、

qiita.com

らしい...