a32nx チュートリアル -入門編-
とりあえず飛ばしてみようを目標に手順を限りなく簡略化した入門編。
事前準備
- a32nxのdevelop版
長く遊んでない場合はupdateを。
フライトプラン作成
simbriefにアクセスし、flight planを作成していく
https://dispatch.simbrief.com/home
- Edit flight または New flightからflight plan作成画面へ
- flight infoに出発地と到着地の空港コードを入力。AlternativeはNONEでOK。
- 希望の滑走路があればOptional Entriesから。到着滑走路はILSがないとかなり厳しい。
- Save flight
- Generate flight
離陸準備(MCDUの入力)
下にメッセージが出てきた時はCLR(Clear)を押す。
←→↓↑でページをめくれます。
- World mapを開き、
- flight planで選択した滑走路からSet as departure
- 天気をPRESETからClear skiesまたはFew clouds
- 時間はお好み
- flightを押してゲーム内へ
- flypadからImport simbrief dataを押す
- MCDU画面を見る
- Init
- INIT->Init request
- 次ページに行き、ZFW/ZFWCGをCopy&Paste
- F-PLN(Flight-Plan)
- F-PLNから左上の出発空港を押す->departure->出発滑走路とSIDを選択する->insert
- 左下の到着空港を押す->arrival->到着滑走路とSTARを選択する->insert
同じようなstarがいくつかあって判断がつかない場合はチャートを見てみましょう。
数字はバージョンみたいなものなので、違っても気にしなくてOK - NDをPLANモードにし、MCDUのF_PLNページで↑↓を押してルートを確認しましょう。途切れていたり、waypointが2重に入っていたりがたまによくある。
- 確認が終わったらNDはARCモードに戻す
- PERF(Performance)を押して、適当にV1=138, Vr=140, V2=142くらいを入力する。
Take Off !
- パーキングブレーキを解除後、スラストレバーをMAXにして、Vrの140ktに達したら機首を上げる。
- 満足したらAP1を押して、Autopilotを入れる
- スラストレバーをCLB(Climb)にセット
- Gear up
- flaps up
Top of decent (降下開始)
NDの右下にのびた矢印が降下開始地点の目安。

ちょっと早めの残り20マイルくらいで、Altitude selectorを1000ftにsetする。
MCDU->PERF->next phase->APPRページ->RADIOを210ftくらいにset
Approach
NDを見て滑走路まで残り20マイルくらいを目安に、
- APPR(Altitude selectorの右下あたり)をON
- AP1とAP2両方ON
- Gear down
- Auto Brake MAX
- 速度が落ちてきたらflapを下げていく
Landing
- 30ftのコールあたりでスラストをidleに
- 着地したらスラストをリバース
補足
flypad - 操縦席横にあるタブレット端末
MCDU - Multi-function Control and Display. スラストレバーの近くにあるコンピューター。
SID/STAR - Standard Instrument Departure/STandard ARrival 空港の出発・進入経路が書かれたチャート。SimbriefやflypadのRouteにある先頭と末尾に書いてあるのがだいたいSIDとSTAR。
例) SID: LAXAS3 STAR: IKOMAELAXAS3 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
- AIP
- Currentに黒ポチがついたバージョンを選択
- AD2 AERODROMES
- 空港を選択
- メニューが展開されるので、一番下をクリック
WebAPI設計 #2
ユーザーがしたいゴールを意識する
写真を追加する、友達一覧を表示するなど。
内部の仕組みにとらわれず、ユーザーが何をできるかにfocusする。
電子レンジがマイクロ波を当てる仕組みや歴史などはどうでも良い。ユーザーは温めたいだけという例。
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
決まった日時に通知することは簡単にできそう。よく見るSNSの通知などは通知サーバーが必要。で、それにはAppleのDeveloperアカウントが必要。
オプショナル型とか
SwiftのAnyにOptionalを突っ込むと取り出せなくなる話 - Qiita
どこよりも分かりやすいSwiftの"?"と"!" - Qiita
入門書でわかったつもりでも、書いてると「あれ?」ってなってくるオプショナル型まわり
命名規則とか
通信
[Swift] AlamofireでSemaphoreを使って同期通信する - Qiita
cookieのせて通信するならAlamofireが一番楽そうだった
JSONパース
通信とご一緒に。APIのレスポンスが型にない形式だと、とてもめんどくさくなる。日付とかね...
protocol, delegate
あっちが任せる側で、こっちが任せられる側...あれ、どっちだってなった。