取得できない!なんで?という経験を3つほどしたので、その際に確認した点をご紹介しようと思います。作成する際の例も記載します。機能フラグを作成する方法は下記の記事で触れていますので、併せてご参照いただければと思います。機能フラグ作成・取得するにあたり使用した環境は下記の通りです。アプリケーション「SampleApplication」が作成済みであること上記のアプリケーションに機能フラグ設定プロファイル「SampleProfile」が作成済みであること上記のアプリケーションに環境「dev」が作成済みであること機能フラグを環境にデプロイした直後に再デプロイが可能なデプロイ戦略が作成済みであること最後の項目で触れているデプロイ戦略の作成方法については下記の記事をご参照ください。本記事では検証のためにデプロイを何度か繰り返しますので、デプロイ後の待ち時間が不要なデプロイ戦略を活用します。取得するためのスクリプトを用意します。jq上記のスクリプトを実行すると、下記のような実行結果が出力されます。作成した機能フラグのバージョンが環境にデプロイされているかまずは初歩的なところから。機能フラグで属性を定義してバージョンを作成した後、環境の方に反映するためにはデプロイを行う必要があります。うっかりバージョンだけ作成して満足しちゃったなんてことにならないように、ちゃんとデプロイまで行う必要があることを忘れないようにしましょう。環境の詳細画面で、どのバージョンが環境に反映されているのかを確認することができます。下記の例ではバージョン「3」が環境に反映されている状態です。機能フラグが有効になっているか機能フラグは有効/無効を切り替えることができます。デフォルトでは無効になっているため注意が必要です。属性が取得できません。返ってくるだけになります。}}マネジメントコンソール上では、少し分かりづらい位置に有効/無効のスイッチが配置されていますので、見逃さないようにしましょう。ちなみに有効/無効を切り替えるだけでバージョンが上がりますので、デプロイが必要なことも忘れずに。機能フラグを作成する場合の例です。記載することで有効化できます。自体を記載しない場合は、デフォルトで無効になります。}}属性の名前や型の定義だけ行い、値が未登録ではないか機能フラグの属性は、名前や型だけを定義して、値は登録しない(空文字ではない)ということが可能です。取得できないため注意が必要です。スキーマでは、属性の定義(名前や型)を「flags」に、値の登録は「values」に記載します。このうち、値の登録は必須ではないため、何も記載しなければ値が未登録の状態になります。記載せず未登録の状態にしています。機能フラグを作成すると、マネジメントコンソール上では下記の通りに表示されます。値の欄を確認すると「sampleString」は空文字なので空欄、「sampleNumber」は値が未登録ということで-が表示されています。マネジメントコンソール上では空文字と未登録の区別をつけれるように表示を変えてくれているようです。属性を取得すると下記の通りになります。「sampleString」の値だけが取得できて、「sampleNumber」についてはまるで属性が存在しないかのような結果になります。スキーマが参考になりそうです。「values」内を返しているように見えます。なると、値が未登録の属性が存在しないかのような結果になることに合点がいきます。内で値を登録してあげた方が安全な気がします。属性を定義する際は、こうした挙動になり得るということを理解しておくと良いでしょう。作成例を見てきましたが、同じ挙動をマネジメントコンソール上でも再現することが可能です。変更があった場合などに挙動が変わる可能性があるのでご注意ください。再現は簡単で、新規の属性を作成する際に値を入力しない(入力してから削除は不可)で「フラグを作成」をクリックするだけです。すると、先ほど説明した通り、値の欄が-で表示されます(これは値が未登録であることを示しています)。ここで、逆に空文字はどうやって登録するのか?という疑問が湧くのですが、これも一応対応可能です。入力した値を全て削除します。その後「フラグを作成」をクリックします。すると、値の欄が空白になります(これは値が空文字であることを示しています)。リクエストの内容を確認してみましょう。デベロッパーツールで確認を行います。リクエストのペイロードに含まれる「contentString」を見てみます。中身を展開すると下記の通りでした。期待通り「sampleString」は空文字で「sampleNumber」の値は未登録となっていました。再現作業は以上になります。取得できなかった場合、取得側の実装で属性が存在することを前提としてしまっていると、エラーを引き起こす可能性があります。機能フラグでは属性を定義しても取得することができないケースがあるということで、実装側は属性が取得できなくても正常に動作するように考慮しておくと安全だと考えます。今回は以上になります。