リソース・マネージャを知る

リソース・マネージャを知る

Androidアプリケーション開発では、処理を担当する「コード」と、文字列や画像などの「リソース」を分離することが推奨されています。

Androidプロジェクトの作成時に自動生成されるsrcフォルダ以下が「コード」。resフォルダ以下が「リソース」を管理するフォルダです。「リソース」として管理される情報は、文字列や画像、音声、動画などがあります。

開発者が、res以下の適切なフォルダに、画像や音声そのほかのファイルを配置すると、開発環境は自動的に、それぞれのリソースに対して、ユニーク(一意)な「リソースID」を割り当てます。

そして、アプリケーションから、リソースに登録した画像を表示する、または音声を再生する際には、コード上から表示したい/再生したいリソースのリソースIDを指示すると、「リソース・マネージャ」が、指定されたリソースIDを元に目的のリソースを特定して、コード側に返します。

このようにして、「リソース・マネージャ」は、コードとリソースを結びつけているのです。

この「リソース・マネージャ」には、もう1つ大きな役割があります。リソースを特定する時に、端末の設定や状態に応じて、指定されたリソースIDに対応した複数のリソースの中から、最適なものを自動的に選択するのです。

先ほど、「リソースIDは一意だ」と述べたのに、複数のリソースの中から選択というと、矛盾していると思われるかも知れません。

確かに、リソースIDは全体に対して一意です。しかし、1つのリソースIDに対して複数のリソースが存在するのです。

リソースには、追加の際にそれぞれ「修飾子」を指定できます。同じリソースでも、これらの修飾子の指定が違えば、重複して登録ができます。

そして、リソース・マネージャは、これらの修飾子をキーに、どのリソースを選択するかを決定します。

指定できる修飾子は、例えば画面の解像度、ディスプレイの大きさ、キーボードの有無などさまざまなものがあり、1つ、または複数を組み合わせて指定することができます。

これら修飾子の指定をきめ細かくすることが、リソース・マネージャを使いこなす、ひいては複数端末に対応していくために必要不可欠なのです。

まとめ

いかがだったでしょうか。ここまで駆け足で見てきましたが、次回以降はいよいよ、「表示」、「操作」、「機能」の違いを乗り越えて、複数端末に対応できるように、サンプル・アプリの開発を進めていきます。

補足になりますが、Androidで互換性の問題が顕在化するのは、今回が初めてではありません。米国に目を向けてみれば、「HTC Magic」(HT-03Aと同等の機種)以前に、「HTC G1」という端末が販売されています。

G1は、世界初のAndroid端末であり、ハードウエアのフル・キーボードを備えています。G1しか無かったころには、当時の開発者、特にゲーム開発者は、ハードウエア・キーボードを使って操作するゲームを数多くリリースしていました。

しかし、後から登場したHT-03A(HTC Magic)には、ハードウエア・キーボードは搭載されていません。そのため、HT-03Aの発売直後は、HT-03Aで操作ができないゲームが続出するという事態が起こったのです。

その後、「Motorola Droid」や「Nexus One」といったさまざまなAndroid端末が発売され、海外では、複数の端末の存在が当たり前になっています。しかし、冒頭で述べたとおり、2台目の端末が発売されるのは、日本ではこれが初めてのことです。

ハードウエア・キーボードの有無のような極端な違いはないにせよ、HT-03AとXperiaにも、明白な違いがあります。また、KDDIやソフトバンクモバイルが発売する予定のAndroid端末も、それぞれが異なる特徴を持っています。

今後、さらに端末が増えた時に、複数端末の対応で混乱が起こらないように、私たち開発者は、あらかじめ準備しておく必要があると私は考えています。

本連載が現在、そして将来にわたって、開発者の皆さんのお力になれれば幸いです。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30