tag:blogger.com,1999:blog-26735469886392884442024-03-14T00:49:42.557+09:00menXpon自分の学習ノート兼ログですが、皆さんの参考にもなれば幸いです。Anonymoushttp://www.blogger.com/profile/05534455044217377631noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-2673546988639288444.post-57602429802788322942020-04-12T00:14:00.001+09:002020-04-12T00:38:31.902+09:00iPad Pro(9.7インチ)が楽天モバイル(MNO)で使えるか?→使える<a href="https://network.mobile.rakuten.co.jp/assets/img/top/gl-hero-sp-0409.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a> 楽天モバイルのMNOサービスが2020年4月8日正式リリースされた。下記の通り、300万人まで1年間無料で使えるので、試しに契約してみた。そしてiPadで使用できるかを確認したので報告する。<br />
<br />
<div style="text-align: center;">
<a href="https://network.mobile.rakuten.co.jp/assets/img/top/gl-hero-sp-0409.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: 1em;"><img alt="2020.4.8 携帯キャリアサービス開始 Rakuten UN-LIMIT 2.0 プラン料金一年無料※2 300万名対象※3 プラン料金2,980円/月※通話料等は別費用 日本全国どこでもデータ使い放題※4 楽天回線エリア高速で完全使い放題 パートナー回線エリアデータ容量5GB/月(4/22〜)超過後は最大1Mbpsで使い放題※1 Rakuten UN-LIMIT提供キャンペーン最大20,800ポイント還元" border="0" height="400" src="https://network.mobile.rakuten.co.jp/assets/img/top/gl-hero-sp-0409.png" style="background-repeat: no-repeat no-repeat; border-style: none; box-sizing: inherit; color: white; font-family: "noto sans jp", sans-serif; font-size: 28px; height: auto; margin-top: 0px; max-width: 375px; padding: 0px; text-align: center; vertical-align: bottom; width: 375px;" width="219" /></a></div>
<br />
なお、楽天モバイルは以前から提供しているMVNOサービス(現在新規受付終了)もあり、ネット上の情報が新しいMNOサービスのものと混在してしまっている。今回はMNOサービスであるUN-LIMITプランによるものである。<br />
<br />
導通確認した機種<br />
iPad Pro 2016年 9.7inch celler(ドコモ)モデル (初代9.7inch)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Ihdg9_VtSGg/XpHcyRlkGtI/AAAAAAACnTY/SZJpX8vB8MsNTCk_EPjkxysQKmYvYsbrwCLcBGAsYHQ/s1600/33DF82AC-21F3-46EF-8D1E-53026F47C2F8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="843" height="192" src="https://1.bp.blogspot.com/-Ihdg9_VtSGg/XpHcyRlkGtI/AAAAAAACnTY/SZJpX8vB8MsNTCk_EPjkxysQKmYvYsbrwCLcBGAsYHQ/s320/33DF82AC-21F3-46EF-8D1E-53026F47C2F8.png" width="320" /></a></div>
ドコモで購入したもので、未だSimロックを解除していない。<br />
<br />
<br />
結論を言うと、Simロックを解除すれば楽天モバイルで使用することができた。<br />
<br />
<br />
申込を4月8日にWEBサイトから行い、Simカードは4月10日に郵送で届いた。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-nvCuU_QpXx0/XpHV6id1gzI/AAAAAAACnRk/PAWCWbiOmmkC01--AQaCwR8LldlmQdgygCLcBGAsYHQ/s1600/7FBA5BE9-CA2C-4B41-8BA1-5A765B3BD202.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="937" data-original-width="1280" height="234" src="https://1.bp.blogspot.com/-nvCuU_QpXx0/XpHV6id1gzI/AAAAAAACnRk/PAWCWbiOmmkC01--AQaCwR8LldlmQdgygCLcBGAsYHQ/s320/7FBA5BE9-CA2C-4B41-8BA1-5A765B3BD202.jpeg" width="320" /></a></div>
<br />
<br />
内容物は以下のSimカードとシンプルな案内書のみ。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-9FqdSmzd-8w/XpHXERRKZfI/AAAAAAACnR8/Y0A62czpjPkHuirvxh5x-SF9BHpRlt2rgCLcBGAsYHQ/s1600/39DAFEA6-EFAD-4B0C-B006-203C0AF39F49.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="696" data-original-width="1280" height="174" src="https://1.bp.blogspot.com/-9FqdSmzd-8w/XpHXERRKZfI/AAAAAAACnR8/Y0A62czpjPkHuirvxh5x-SF9BHpRlt2rgCLcBGAsYHQ/s320/39DAFEA6-EFAD-4B0C-B006-203C0AF39F49.jpeg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-6B6h8q9Et3M/XpHXMRV2nRI/AAAAAAACnSA/xsVrpGUShPsiawHyrhXs1QtYwSuLp_6DwCLcBGAsYHQ/s1600/6C664042-3FE1-41F0-BA48-DAD14D033050.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="845" data-original-width="1280" height="211" src="https://1.bp.blogspot.com/-6B6h8q9Et3M/XpHXMRV2nRI/AAAAAAACnSA/xsVrpGUShPsiawHyrhXs1QtYwSuLp_6DwCLcBGAsYHQ/s320/6C664042-3FE1-41F0-BA48-DAD14D033050.jpeg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Simは1枚だが、通常サイズ、microサイズ、nanoサイズいずれも対応可能な物となっていた。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-KX0v-P6M2EY/XpHYOuTU6nI/AAAAAAACnSg/7rJ0enBlDEEAQNbGDMNnI5Un4n8Xa5EbgCLcBGAsYHQ/s1600/3F0F9F21-51D6-4EFC-BD08-9A56648999B5.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1061" data-original-width="1280" height="265" src="https://1.bp.blogspot.com/-KX0v-P6M2EY/XpHYOuTU6nI/AAAAAAACnSg/7rJ0enBlDEEAQNbGDMNnI5Un4n8Xa5EbgCLcBGAsYHQ/s320/3F0F9F21-51D6-4EFC-BD08-9A56648999B5.jpeg" width="320" /></a></div>
<br />
<br />
最初にドコモで契約した時のままの状態(Simロック)でSimカードをiPad Proに差込、楽天モバイル回線で使えるかどうか確認してみた。<br />
<br />
結果は、アクティベーションが完了せず楽天モバイルのSimでは使用できなかった。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-sm-7kGYKUMg/XpHY70YRljI/AAAAAAACnSw/tpOGvZbvyTwtm-0LNqjOswwLREdkOr9YACLcBGAsYHQ/s1600/EFB8DD81-2F5E-46D1-AA90-4B2E78D8F2C1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://1.bp.blogspot.com/-sm-7kGYKUMg/XpHY70YRljI/AAAAAAACnSw/tpOGvZbvyTwtm-0LNqjOswwLREdkOr9YACLcBGAsYHQ/s320/EFB8DD81-2F5E-46D1-AA90-4B2E78D8F2C1.png" width="240" /></a></div>
<br />
<br />
そこで、ドコモのSimロックを解除し、楽天モバイルのSimに差し替えてみたところ、無事に通信することができた。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-IuwMh6U0jOM/XpHZIFpdxyI/AAAAAAACnS0/R6OlRUZ6x_4Cu5E2D0F2L_boqisN3yvJwCLcBGAsYHQ/s1600/4F10717F-B547-465F-8843-1769E37455DE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1560" data-original-width="845" height="320" src="https://1.bp.blogspot.com/-IuwMh6U0jOM/XpHZIFpdxyI/AAAAAAACnS0/R6OlRUZ6x_4Cu5E2D0F2L_boqisN3yvJwCLcBGAsYHQ/s320/4F10717F-B547-465F-8843-1769E37455DE.png" width="173" /></a></div>
ドコモの機種のSimロック解除はオンラインで簡単に即時解除可能である。<br />
MNOとしての楽天モバイルのSimを用いて通信するため、APN設定は不要である。<br />
<br />
当初ネットで調べた際に、「iOS で使用するには、対応したAndroid端末で一度Simの開通処理をしなければならない」と言った話を見かけたが、実際はSimフリーの端末であればSimカードを差し替えるだけで簡単に使用できる。<br />
<br />
通信速度はコロナによる巣籠り状態で、家の中でしか検証できておらず、auローミングエリアでしかまだ通信を行っていない。少なくともこの状態では、個人的に元のdocomo回線と同等の使い勝手で利用できている。楽天回線エリアでの使い勝手と通信速度は追って検証できたら報告する。<br />
<br />
iOSではRakuten Linkアプルが使えない(リリースされていない)ため、無料通話の恩恵は受けられない。しかし、iPadでは元々通話は行わないことと、楽天エリア内ならデータ無制限、auローミングエリア内でも月5GBまでは1年間無料で使用できることを考えれば取り敢えず2台目利用として契約してみる価値は十分にあると思う。ただし、契約に際して1回だけ事務手数料3300円(税込)が発生するので注意が必要である。<br />
<br />
<div style="text-align: center;">
<br /></div>
<div>
<br /></div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-55651314285616253142020-01-06T00:10:00.004+09:002020-01-06T00:15:32.233+09:001Passwordを個人プランから家族プランに変更する方法(iOS,Androidアプリ内支払いの人向け)<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-6EWDOF0iv9M/XhFQFe45kEI/AAAAAAACkbU/HR025sZd2Tg2bwOFpFMP_XVwyblS1FVmgCLcBGAsYHQ/s1600/1pass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="832" data-original-width="1600" height="166" src="https://1.bp.blogspot.com/-6EWDOF0iv9M/XhFQFe45kEI/AAAAAAACkbU/HR025sZd2Tg2bwOFpFMP_XVwyblS1FVmgCLcBGAsYHQ/s320/1pass.png" width="320" /></a></div>
昔からパスワード管理に1Passwordを使用していた。最近、家族も使用するようになったので、個人プランから家族プランに変更しようと考えたが、iOSアプリ内支払いのため、プラン変更に一手間掛かったので変更方法とその経緯を記載する。<br />
<br />
これまで個人プランのサブスクリプション購入はiOSアプリを用いてApp Store経由で支払っていた。その場合、<a href="https://support.1password.com/change-account-type/" target="_blank">プラン変更公式ヘルプページ</a>に記載されている方法である、ウェブページのサイドバーに家族プランへ変更するための「招待」ボタンが表示されずプランの変更ができなかった。また、App Storeのアカウントからアクセスできるサブスクリプション変更の選択肢にも個人プランの「月額払い」と「年額払い」変更の選択肢しかなく、家族プランへの変更はできなかった。<br />
しかし、以下の方法で無事にプラン変更が行うことができた。解説している日本語のページが少なかったので、参考にまとめる。<br />
<h3>
変更方法</h3>
結論を言うと、サポートに連絡をして、一度現在のサブスクリプション購入を停止し、新たに家族プランのサブスクリプションを購入し直すというやり方である。<br />
その際、一時的に有料プランでは無くなるのでサービス利用時に注意が表示されるが、データが無くなることは無いので安心して欲しい。また、現在のサブスクリプションの有効残期間の差額もきちんと返金処理をしてくれる。<br />
<h3>
概略手順</h3>
<ol>
<li><a href="https://support.1password.com/contact/" target="_blank">公式問合せフォーム</a>からサポートに変更したい旨を連絡</li>
<li>サポートからのメールの指示通り、App Storeの1Passwordサブスクリプション購入を停止</li>
<li>サブスクリプション購入停止を完了した旨とApp Store支払いの領収書をメールでサポートに送信(私はApp Storeの支払い履歴のスクリーンショットを送った)</li>
<li>サポートがキャンセル確認し、残期間の差額返金処理を完了</li>
<li>ウェブページのサイドバーに「招待」が表示されので、そこから新たに家族プランとしてサブスクリプション購入</li>
</ol>
<br />
プラン変更公式ヘルプページをよくよく見ると、標準の手順の下に以下のような記載があったので直接サポートに連絡しないと変更できないようである。<br />
<blockquote class="tr_bq">
If you started your subscription with an in-app purchase, you won't see the option to invite people. For help upgrading your account, <a href="https://support.1password.com/contact/">contact 1Password Support</a>.<br />
“ もしアプリ内購入でサブスクリプションを開始した場合、ユーザーを招待するオプションは表示されません。 アカウントのアップグレードについては、1Passwordサポートにお問い合わせください。”</blockquote>
<h3>
公式サポートとのメールのやり取り</h3>
<blockquote class="tr_bq">
【私】問合せフォームにて送付(2020/1/3)<br />
Hello.<br />
I already have a personal account. However, I want to change my personal account to a family account. Payments are made from the App Store.<br />
What should I do?</blockquote>
<blockquote class="tr_bq">
【サポート】 (2020/1/4 00:59) <br />
Hey there! 👋<br />
Thanks for taking the time to contact us.<br />
If you want to upgrade to 1Password Families, you can do that in a browser.<br />
<ol>
<li>Sign in to your account on 1Password.com.</li>
<li>Click Invite People in the sidebar and choose Upgrade to a Family Account.</li>
<li>Enter a name for your family account and click Upgrade Account.</li>
</ol>
After you've upgraded to a family account, learn how to share passwords in 1Password Families.<br />
If you started your subscription using an in-app purchase on your Apple or Android device, or if you're still having trouble, reply to this message. One of my human friends will get back to you as soon as possible.<br />
BitBot, and the entire 1Password team ❤️🇨🇦</blockquote>
<blockquote class="tr_bq">
【私】(2020/1/4 01:05)<br />
Hi,<br />
I started my subscription using an in-app purchase on my Apple device.<br />
What should I do?</blockquote>
<blockquote class="tr_bq">
【サポート】 (2020/1/4 01:34)<br />
Hey there 👋,<br />
Thank you so much for reaching out to us here at 1Password.<br />
I'm thrilled to hear that you're looking to convert to a Families account. I have one myself and I honestly cannot live without it. In order to convert your account, you'll need to cancel your iTunes subscription (which will not affect your data) by doing the following:<br />
<ol>
<li>Open the App Store on your iOS device</li>
</ol>
<ol>
<li>Tap your profile picture in the upper right (it may be a person icon if you don't have a picture associated with your Apple ID)</li>
</ol>
<ol>
<li>Tap Manage Subscriptions</li>
</ol>
If you aren't running the latest operating system on your iOS device you can also follow these instructions: https://support.apple.com/en-us/HT202039<br />
Once canceled, please send me a receipt for what you paid Apple and I'd be happy to issue you a credit for any unused time and give you the instructions to convert your account.<br />
--<br />
Tyler<br />
USA<br />
First Responder at 1Password</blockquote>
<blockquote class="tr_bq">
【私】 (2020/1/4 02:04)<br />
Thank you for correspondence.<br />
<br />
I have followed the instructions and canceled my subscription. <br />
But I don't know which receipt, so I will send you a screenshot of the payment history and cancellation screen. (it's Japanese. Let me know if you have any problems)</blockquote>
<blockquote class="tr_bq">
【サポート】 (2020/1/5 10:33)<br />
Thank you so much for sending that over and I've given you a credit for what you paid Apple.<br />
I've also gone ahead and marked your iTunes subscription as canceled so you can now convert your account by doing the following:<br />
<ol>
<li>Log into your account at https://my.1password.com</li>
</ol>
<ol>
<li>Click on "Invite People..." on the right</li>
</ol>
<ol>
<li>Click "Upgrade to a Family Account"</li>
</ol>
Be sure to check out our guide on using 1Password Families (https://support.1password.com/explore/families/) and let me know if you have any questions. To manage your billing and choose our annual plan you can click on the Billing tab online at https://my.1password.com.</blockquote>
年始の週末前の2日間程度しかかからなかったので、対応には満足している。<br />
<br />
(2020/1/6)Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-55165305244250249332019-02-01T23:38:00.001+09:002019-02-03T03:04:54.024+09:00Insta360 ONE X : 仕様・使い方まとめ<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-xeLEwuI6M0k/XFRFymsZ0TI/AAAAAAACTnc/MwMN70LH3qMcWFiC3QJNek1XHuHPtFxWwCLcBGAs/s1600/onex_img01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="800" height="320" src="https://2.bp.blogspot.com/-xeLEwuI6M0k/XFRFymsZ0TI/AAAAAAACTnc/MwMN70LH3qMcWFiC3QJNek1XHuHPtFxWwCLcBGAs/s320/onex_img01.png" width="320" /></a></div>
<br />
<br />
最近新たなカメラのジャンルとして、360度(全天球)カメラが注目されている。とある理由から私も興味を持ち、先日「Insta360 ONE X」という360度カメラを購入した。<br />
<br />
「Insta360 ONE X」の購入に際し、事前に使い勝手や性能についてカタログやレビュー動画等で調べた。しかし、360度カメラは新しいジャンルであり、一見目を引くような動画・写真中心の形骸的な情報しか見つからず、なかなか知りたい情報を得ることができなかった。360度カメラは従来のカメラと違った性質を持っているため、初めて360度カメラの購入を検討している者にとって上記の様な情報のみでは製品のことが想像しづらい。<br />
<br />
そこで、購入前の私と同様な悩みを持つ人たちに向け、実際購入して分かった「Insta360 ONE X」の仕様・使い方などの情報をまとめていく。<br />
(少しずつ加筆していく予定)<br />
<br />
※質問等あれば遠慮なくコメント下さい。可能な範囲でお答えします。<br />
<br />
<h3>
<span style="font-size: medium;">緒言</span></h3>
「Insta360 ONE X」は、「Shenzhen Arashi Vision Co., Ltd」という中国のベンチャー企業が製造する「Insta360」ブランドの360度カメラの1つである。2018年に発売され、一つ前の機種に「Insta360 ONE」がある。日本では「株式会社ハコスコ」が取り扱い代理店を務める。<br />
<br />
<span style="font-size: medium;">・<a href="https://hacosco.com/insta360-one-x/" target="_blank">Insta360 ONE X 公式サイト(ハコスコ)</a></span><br />
<br />
<b>公式製品仕様(2019/01)</b><br />
<table style="border-collapse: collapse; border: 1px solid #ccc; width: 100%;">
<tbody>
<tr>
<td style="background-color: #f9fcfe; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">本体サイズ</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">高さ114.56mm x 幅48mm x 奥行き27.60mm(レンズ含む) </span><br />
<span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;">高さ114.56mm x 幅48mm x 奥行き18.10mm(レンズ除く)</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">重量</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">90.9g(バッテリー除く)、115g(バッテリー含む)</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">レンズ</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">200° 2 x F2.0 魚眼レンズ</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">解像度(静止画)</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">6080 x 3040 (18MP)</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">解像度(動画)</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">5760 x 2880@30fps</span><br />
<span style="font-size: x-small;">3840 x 1920@50fps</span><br />
<span style="font-size: x-small;">3840 x 1920@30fps</span><br />
<span style="font-size: x-small;">3008 x 1504@100fps</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">対応SNS</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">Facebook</span><br />
<span style="font-size: x-small;">YouTube</span><br />
<span style="font-size: x-small;">Periscope</span><br />
<span style="font-size: x-small;">Instagram</span><br />
<span style="font-size: x-small;">LINE</span><br />
<span style="font-size: x-small;">Facebook Messenger</span><br />
<span style="font-size: x-small;">Twitter</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">静止画ファイル形式</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">保存フォーマット: insp dng(RAW)</span><br />
<span style="font-size: x-small;">出力フォーマット: jpg</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">動画ファイル形式</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">保存フォーマット: insv</span><br />
<span style="font-size: x-small;">出力フォーマット: mp4</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">色空間</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">bt.709</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">動画コーデック</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">H264</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ライブストリーミングプロトコル</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">rtmp</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ストレージ</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">Micro SD</span><br />
<span style="font-size: x-small;">UHS-I、V30以上、exFAT(FAT64)</span><br />
<span style="font-size: x-small;">format:最大128 GB</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ビットレート(各レンズ)</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">50Mbps</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">露光モード</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">オート</span><br />
<span style="font-size: x-small;">マニュアル(シャッター 1/8000s-55s, ISO 100-3200)</span><br />
<span style="font-size: x-small;">シャッター優先(1/8000s-2s)</span><br />
<span style="font-size: x-small;">ISO優先(100-3200)</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">EV値</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">-3EV~+3EV</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ホワイトバランス</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">Auto, Cloudy, Sunny, Fluorescent, Incandescent</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">静止画モード</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">360度撮影</span><br />
<span style="font-size: x-small;">インターバル撮影</span><br />
<span style="font-size: x-small;">RAW</span><br />
<span style="font-size: x-small;">HDR</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ビデオモード</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">360度撮影</span><br />
<span style="font-size: x-small;">タイムプラスモード</span><br />
<span style="font-size: x-small;">バレットタイム撮影</span><br />
<span style="font-size: x-small;">Log 360度動画</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ライブストリーミングモード</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">360度ライブストリーミングフリーキャスト</span><br />
<span style="font-size: x-small;">(ユーザが視聴範囲をコントロール可能)</span><br />
<span style="font-size: x-small;">720p@30fps</span><br />
<span style="font-size: x-small;">960p@30fps</span><br />
<span style="font-size: x-small;">1080p@30fps</span><br />
<span style="font-size: x-small;">1280p@30fps</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">接続</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">Bluetooth: BLE4.0</span><br />
<span style="font-size: x-small;">USB: Micro-USB</span><br />
<span style="font-size: x-small;">Wi-Fi:5G(最大20メートル範囲)</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ファイル容量(静止画)</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">6MB</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ファイル容量 / 1分あたり(5.7K 動画の場合)</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">800 MB</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">ジャイロセンサー</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">6軸センサー</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">スラビライズ機能</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">FlowStateスタビライゼーション</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">スティッチング</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">オプティカルフロー / テンプレート</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">電力</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">9V 2A / 5V 2A Micro USB 充電式</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">バッテリー容量</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">1200mAh (60min*)</span><br />
<span style="font-size: x-small;">*5.7K@30FPSまたは4K@50FPS動画撮影の場合</span><br />
<span style="font-size: x-small;">取り外し可能</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">動作温度</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">-10-40°C</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">保管温度</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">-20~40°C</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">アプリOS</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">iOS、Android</span></td>
</tr>
<tr>
<td style="background-color: #f9fcfe; border: 1px solid #ccc; font-weight: bold; padding: 7px;"><span style="font-size: x-small;">EAN</span></td>
<td style="border: 1px solid #ccc; padding: 7px;"><span style="font-size: x-small;">6970357850570</span></td>
</tr>
</tbody></table>
<br />
<div>
<br /></div>
<h3>
静止画・動画の撮影モードと編集効果について</h3>
撮影は本体からか、Wi-Fi又は有線で接続したスマホから操作を行える。<br />
<h4>
静止画</h4>
<div>
静止画の撮影モードとそれぞれの設定項目、及び本体・スマホから操作が可能かをまとめたのが以下の表となる。<br />
<table border="1" cellpadding="0" cellspacing="0" dir="ltr" style="border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;" xmlns="http://www.w3.org/1999/xhtml"><colgroup><col width="69"></col><col width="90"></col><col width="95"></col><col width="56"></col><col width="58"></col><col width="61"></col><col width="49"></col><col width="59"></col></colgroup><tbody>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"撮影モード"}" style="background-color: #d9d9d9; border-bottom-style: double; border-bottom-width: 3px; border-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">撮影モード</td><td data-sheets-value="{"1":2,"2":"設定項目"}" style="background-color: #d9d9d9; border-bottom: 3px double rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">設定項目</td><td colspan="4" data-sheets-value="{"1":2,"2":"設定範囲"}" rowspan="1" style="background-color: #d9d9d9; border-bottom: 3px double rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">設定範囲</td><td data-sheets-value="{"1":2,"2":"本体操作"}" style="background-color: #d9d9d9; border-bottom: 3px double rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">本体操作</td><td data-sheets-value="{"1":2,"2":"スマホ操作"}" style="background-color: #d9d9d9; border-bottom: 3px double rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">スマホ操作</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"標準\n撮影"}" rowspan="10" style="border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 210px;">
標準<br />
撮影</div>
</td><td data-sheets-value="{"1":2,"2":"セルフタイマー"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">セルフタイマー</td><td colspan="4" data-sheets-value="{"1":2,"2":"3,5,10,15[s]"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">3,5,10,15[s]</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"10種"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">10種</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"美顔エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">美顔エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"無し,1~4"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">無し,1~4</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ホワイトバランス"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">ホワイトバランス</td><td colspan="4" data-sheets-value="{"1":2,"2":"自動,白熱灯,Sunny,曇り,蛍光灯"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動,白熱灯,Sunny,曇り,蛍光灯</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"保存形式"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">保存形式</td><td colspan="4" data-sheets-value="{"1":2,"2":"JPEG,RAW"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">JPEG,RAW</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"優先モード"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;"><div style="max-height: 105px;">
優先モード</div>
</td><td style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;"></td><td data-sheets-value="{"1":2,"2":"露出"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">露出</td><td data-sheets-value="{"1":2,"2":"ISO"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">ISO</td><td data-sheets-value="{"1":2,"2":"SS[s]"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">SS[s]</td><td colspan="1" data-sheets-value="{"1":2,"2":"-"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 105px;">
-</div>
</td><td colspan="1" data-sheets-value="{"1":2,"2":"〇"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 105px;">
〇</div>
</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"自動"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ISO優先"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">ISO優先</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"100~3200"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">100~3200</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"シャッター優先"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">シャッター優先</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"1/8000~2"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">1/8000~2</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"手動"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">手動</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"100~3200"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">100~3200</td><td data-sheets-value="{"1":2,"2":"1/8000~55"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">1/8000~55</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"HDR\n撮影"}" rowspan="9" style="border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 189px;">
HDR<br />
撮影</div>
</td><td data-sheets-value="{"1":2,"2":"セルフタイマー"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">セルフタイマー</td><td colspan="4" data-sheets-value="{"1":2,"2":"3,5,10,15[s]"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">3,5,10,15[s]</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"10種"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">10種</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"美顔エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">美顔エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"無し,1~4"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">無し,1~4</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ホワイトバランス"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">ホワイトバランス</td><td colspan="4" data-sheets-value="{"1":2,"2":"自動,白熱灯,Sunny,曇り,蛍光灯"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動,白熱灯,Sunny,曇り,蛍光灯</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"HDR効果"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">HDR効果</td><td colspan="4" data-sheets-value="{"1":2,"2":"±0.3~4"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">±0.3~4</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"優先モード"}" rowspan="4" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;"><div style="max-height: 84px;">
優先モード</div>
</td><td style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;"></td><td data-sheets-value="{"1":2,"2":"露出"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">露出</td><td data-sheets-value="{"1":2,"2":"ISO"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">ISO</td><td data-sheets-value="{"1":2,"2":"SS[s]"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">SS[s]</td><td colspan="1" data-sheets-value="{"1":2,"2":"-"}" rowspan="4" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 84px;">
-</div>
</td><td colspan="1" data-sheets-value="{"1":2,"2":"〇"}" rowspan="4" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 84px;">
〇</div>
</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"自動"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ISO優先"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">ISO優先</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"100~3200"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">100~3200</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"シャッター優先"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">シャッター優先</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"1/8000~2"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">1/8000~2</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"インターバル\n撮影"}" rowspan="10" style="border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 210px;">
インターバル<br />
撮影</div>
</td><td data-sheets-value="{"1":2,"2":"インターバル"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">インターバル</td><td colspan="4" data-sheets-value="{"1":2,"2":"3,10,30,60,120[s]"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">3,10,30,60,120[s]</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"10種"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">10種</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"美顔エフェクト"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">美顔エフェクト</td><td colspan="4" data-sheets-value="{"1":2,"2":"無し,1~4"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">無し,1~4</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ホワイトバランス"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">ホワイトバランス</td><td colspan="4" data-sheets-value="{"1":2,"2":"自動,白熱灯,Sunny,曇り,蛍光灯"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動,白熱灯,Sunny,曇り,蛍光灯</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"保存形式"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">保存形式</td><td colspan="4" data-sheets-value="{"1":2,"2":"JPEG,RAW"}" rowspan="1" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">JPEG,RAW</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td><td data-sheets-value="{"1":2,"2":"〇"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">〇</td></tr>
<tr style="height: 21px;"><td colspan="1" data-sheets-value="{"1":2,"2":"優先モード"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;"><div style="max-height: 105px;">
優先モード</div>
</td><td style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;"></td><td data-sheets-value="{"1":2,"2":"露出"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">露出</td><td data-sheets-value="{"1":2,"2":"ISO"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">ISO</td><td data-sheets-value="{"1":2,"2":"SS[s]"}" style="background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">SS[s]</td><td colspan="1" data-sheets-value="{"1":2,"2":"-"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 105px;">
-</div>
</td><td colspan="1" data-sheets-value="{"1":2,"2":"〇"}" rowspan="5" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: middle;"><div style="max-height: 105px;">
〇</div>
</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"自動"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;">自動</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"ISO優先"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">ISO優先</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"100~3200"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">100~3200</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"シャッター優先"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">シャッター優先</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"-"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-</td><td data-sheets-value="{"1":2,"2":"1/8000~2"}" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: dotted; border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">1/8000~2</td></tr>
<tr style="height: 21px;"><td data-sheets-value="{"1":2,"2":"手動"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; vertical-align: middle;">手動</td><td data-sheets-value="{"1":2,"2":"-4.0~+4.0"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">-4.0~+4.0</td><td data-sheets-value="{"1":2,"2":"100~3200"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">100~3200</td><td data-sheets-value="{"1":2,"2":"1/8000~55"}" style="border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-size: 8pt; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;">1/8000~55</td></tr>
</tbody></table>
</div>
<br />
詳細は以下で解説
<br />
<div>
<br /></div>
<h4>
動画</h4>
<div>
<br /></div>
<div>
詳細は以下で解説</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-33085875837444220712018-02-26T01:19:00.000+09:002019-02-03T03:17:35.817+09:00DRMのかかったKindle本(.azw)をPDF化する方法(※DRM解除不可対応2018.12)<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-oaBM__1nt3M/XFTslsMwvAI/AAAAAAACToc/0UK-dV0FchkIhOchky_4G9Epz7NeJ1lKwCLcBGAs/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="157" data-original-width="321" height="156" src="https://1.bp.blogspot.com/-oaBM__1nt3M/XFTslsMwvAI/AAAAAAACToc/0UK-dV0FchkIhOchky_4G9Epz7NeJ1lKwCLcBGAs/s320/images.jpg" width="320" /></a></div>
<br />
最近ペーパーレスの生活を実践中。勉強用の参考書などもKindleで購入、または紙の本を購入して自炊してPDF化している。そして、iPadProとApplePencilを使って実際の本のごとく勉強に使用している。テキストを使って勉強する際、私はテキストに直接書き込み勉強する派である。しかし、Kindle本として購入した本については、テキスト部分にマーカーは引けるが自由に書き込んだり、横に計算式を追記したいりはできなく困っていた。<br />
<br />
そこで、Kindle本(.azw)をPDF化する方法を調べたのでまとめる。<br />
(ただし、DRMを解除するにあたり、個人での使用を目的とし、不特定多数に流布する等の悪用を目的とはしない)<br />
<br />
<span style="color: red; font-size: large;">※最新版Kindle for PCではDRM解除ができないため、下に対応策記載</span><br />
<br />
<span style="font-size: x-large;"><b>使用するツールと入手場所</b></span><br />
<span style="font-size: large;"><span style="background-color: white;"><b>①</b></span></span><span style="font-size: large;"><b>Kindle for PC</b></span><span style="font-size: large;">:PCでKindleを読むためのソフト(PCにazwファイルのKindle本をダウンロードするために使用する)</span><br />
ダウンロードは適当に検索サイトで「Kindle PC」と入力し、Amazonからダウンロードする。<br />
<br />
<span style="font-size: large;"><b>②Calibre</b>:PCでeBookを総合管理するフリー&オープンソースのユーティリティソフト(今回はazw→pdf変換に使用、素のままではDRM解除はできない)</span><br />
・<a href="https://calibre-ebook.com/" target="_blank">calibre - E-book management</a>:本家サイト(タブから「Download」を選択し、所望のOSのバージョンのものを選ぶ)<br />
・<a href="https://forest.watch.impress.co.jp/library/software/calibre/" target="_blank">窓の杜ライブラリ</a>:ソフトウェア紹介サイト<br />
<br />
<span style="font-size: large;"><b>③DeDRM</b>:Amazonで購入したazwファイルのDRMを解除するために必要なCalibreのプラグイン</span><br />
・<a href="https://github.com/apprenticeharper/DeDRM_tools/releases" target="_blank">GitHub</a>:ソフトウェア共有サイトGitHubのDeDRMのリリースノート(最新バージョンの「DeDRM_tools_x.x.x.zip」を選択)<br />
<br />
<br />
<br />
<span style="font-size: x-large;"><b>準備</b></span><br />
<b>①Amazonで購入した本のazwファイルを入手する</b><br />
Kindle for PCをダウンロード&インストールする。Kindle for PCで変換したい本をダウンロードすると(デフォルトで)自分のPCの「ドキュメント」>「My Kindle Content」にダウンロードした本のazwファイルが格納されている。<br />
<br />
<b>②Calibreをダウンロード&インストール</b><br />
Calibreを所定の手順でダウンロード&インストールする。<br />
<br />
<b>③DeDRMをダウンロード</b><br />
GitHubよりダウンロードした「DeDRM_tools_x.x.x.zip」を解凍する。解凍したファイルをフォルダごと所望の場所に保存する。<br />
<br />
<b>③CalibreのプラグインにDeDRMを追加する</b><br />
<br />
<div style="text-align: center;">
Calibreのツールバーの「設定」を選択</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-L6rFTwW_7DY/WpLc-wsBE0I/AAAAAAACIJo/fiZ-K2HFGZkQhyIQUNOWIgemvtuN89tFQCKgBGAs/s1600/IMG_0027.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1026" data-original-width="1600" height="205" src="https://3.bp.blogspot.com/-L6rFTwW_7DY/WpLc-wsBE0I/AAAAAAACIJo/fiZ-K2HFGZkQhyIQUNOWIgemvtuN89tFQCKgBGAs/s320/IMG_0027.PNG" width="320" /></a></div>
<br />
<br />
<div style="text-align: center;">
「プラグイン」を選択</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-4qLXSTVa0Q0/WpLdCSgXJwI/AAAAAAACIJs/dI4F-qEGZJ8rZDcQ6T__boW6cOMGAQt4wCKgBGAs/s1600/IMG_0028.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1289" data-original-width="1600" height="257" src="https://1.bp.blogspot.com/-4qLXSTVa0Q0/WpLdCSgXJwI/AAAAAAACIJs/dI4F-qEGZJ8rZDcQ6T__boW6cOMGAQt4wCKgBGAs/s320/IMG_0028.PNG" width="320" /></a></div>
<br />
<br />
<div style="text-align: center;">
「ファイルからプラグインを読み込む」を選択</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-GfezHtk5Sls/WpLdL3acIZI/AAAAAAACIJw/r8FQmuXiqLc87HBl1FpXqnPK0jSBXTr1ACKgBGAs/s1600/IMG_0026.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1293" data-original-width="1600" height="258" src="https://4.bp.blogspot.com/-GfezHtk5Sls/WpLdL3acIZI/AAAAAAACIJw/r8FQmuXiqLc87HBl1FpXqnPK0jSBXTr1ACKgBGAs/s320/IMG_0026.PNG" width="320" /></a></div>
<br />
先ほど解凍したDeDRMのフォルダで「DeDRM_tools_6.5.5」>「DeDRM_calibre_plugin」>「DeDRM_plugin.zip」を選択し「開く」<br />
<br />
<b>④Calibreを再起動</b><br />
<b><br /></b>
<b><br /></b>
<br />
<span style="font-size: x-large;"><b>変換</b></span><br />
<b>①CalibreのライブラリにKindle本(.azw)を追加</b><br />
ツールバーの「本を追加」か、Calibreのウィンドウに直接ドラッグ&ドロップ<br />
<br />
<b>②変換</b><br />
<div style="text-align: center;">
ツールバーの「変換」を選択し、所定のプロファイルに変換</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-pDXBmgfLUeg/WpLdR4A2IyI/AAAAAAACIJ0/A8q022HTV3csBJ52YGI36lNimHOl82PnwCKgBGAs/s1600/IMG_0029.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="985" data-original-width="1600" height="197" src="https://3.bp.blogspot.com/-pDXBmgfLUeg/WpLdR4A2IyI/AAAAAAACIJ0/A8q022HTV3csBJ52YGI36lNimHOl82PnwCKgBGAs/s320/IMG_0029.PNG" width="320" /></a></div>
<br />
<br />
<b>③完了</b><br />
変換が完了すると、(デフォルトで)自分のドキュメントフォルダの「Calibreライブラリ」>「作者名」のフォルダの中に変換したファイルがある。<br />
<br />
<br />
<br />
<span style="color: red;">注意</span><br />
<span style="color: red;"> DeDRMのプラグインを設定する前にCalibreのライブラリに追加した本は変換でDRM解除できないので、一旦Calibreのライブラリから削除し、再度ライブラリに登録する。</span><br />
<span style="color: red;"><br /></span>
<span style="color: red;">追記(2018.12)</span><br />
<span style="color: red;"> 最新版Kindle for PC(ver1.25)でダウンロードされたAZWファイルのDRMは仕様が変更されたせいか上記の方法ではDRMが解除されずPDF化できない。</span><span style="color: red;">そこで、旧バージョン(1.24より前)のKindle for PCでAZWファイルをダウンロードしなおす必要がある。</span><br />
<span style="color: red;"> Google等で「Kindle for PC 1.24」と検索し、旧バージョンを入手する。</span><br />
<span style="color: red;">(試しにここで入手できた→https://filehippo.com/jp/download_kindle_for_pc/history/)</span><br />
<span style="color: red;"> また、旧バージョンのKindle for PCをインストールできたら、Kindle for PCの設定で自動アップデートを停止することをお勧めします。</span><br />
<br />
以上で、DRMのかかったKindle本(.azw)をPDF化することができる。Anonymousnoreply@blogger.com32tag:blogger.com,1999:blog-2673546988639288444.post-39113134194929780882013-07-02T14:06:00.001+09:002018-02-26T01:32:26.986+09:00iTunesの音楽の管理方法 [グループを使ったジャンル分けについて]<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZEfOkLKcrLA/UdJmvWAs_pI/AAAAAAAAGJc/Fn8qq2eJRJQ/s1389/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+14.35.14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="http://1.bp.blogspot.com/-ZEfOkLKcrLA/UdJmvWAs_pI/AAAAAAAAGJc/Fn8qq2eJRJQ/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+14.35.14.png" width="640" /></a></div>
最近、2万曲近いiTunesの音楽を整理しようと思ったのだが、自分なりの管理のルールというのを作ったのでその方法を公開する<br />
<br />
管理する曲数が多くなると、アルバム単位やアーティスト単位で曲を聴いてるとどうしても偏りがでてしまい、せっかくある膨大な曲の大部分を聴かずに無駄にしてしまう。そこで、普通用いるのがレート(★)での管理である。これは前々から行なっており、全部では無いが2/3ぐらいの曲にはざっとレート付けがしてある。そしてレートをもとにスマートプレイリストを作って、好きな曲をシャッフルで聴くというのがこれまでの自分の聞き方であった。<br />
<br />
ただ、さらに曲数が増えてくるとシーンに合わせたジャンルの曲を聴きたいなっと思うものである。ジャンルを指定したお気に入りのスマートプレイリストを作成したい。<br />
<br />
そこで今回これまで乱雑に行なっていたジャンル分けをきちんと整理しようと思ったわけだが、如何せん<b>ジャンルが定まらない曲</b>が大多数となって困ってしまった。『PopかRockか?HioHopかRnBか?TechnoかElectronicか?』<br />
また、<b>細かいジャンルを多数作ると管理が大変</b>である。<br />
<br />
ネットで調べていると、この『音楽のジャンル分け』というのは<a href="http://blog.livedoor.jp/ongaku2ch/archives/26604563.html" target="_blank">皆苦労している</a>ようである。昨今の音楽事情を考えればジャンルの垣根を超えて作られる曲は珍しくもなく、そもそもジャンル分けという行為自体が人の主観であるため、<a href="http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1483943234" target="_blank">一つの曲に一意の決まったジャンルを当てはめるのが難しい</a>のは当然である。<br />
<br />
そこで、一つの曲に複数のジャンルを適用できたらいいなっと考えたのだが、iTunesにそのそのような機能は無いようである。かといってそのような機能のあるプレイヤーに乗り換える気も更々無い訳である。<br />
どうしたものかっと迷っていたら、メタタグの『グループ』を使う方法にたどり着いた。<br />
<br />
iPhoneが流行り、それにつられiTunesで自分の楽曲を管理する人が多くいるだろうが、その中でどれくらいの人がこの『グループ』というのを活用しているのだろうか?かく言う自分も、これまでこのグループに自分で情報を入力したことが無く、時々データベースから自動的に記入されたものをそのままにしていた。これを使えばジャンル分けのしがらみから多少なりとも開放されるので、同じように困っている人は是非活用してもらいたい。<br />
<br />
<span style="color: #0b5394;">*ちなみに自分は所謂”ジャンル厨”ではなく、自分の好きな時に好きな曲をスマートに(スマートプレイリストを使って)聴きたいから細かいジャンル管理を推奨します(なので主観が第一で、厳密なジャンル分けはあまり問題ではありません。また正直、音楽のジャンルに精通して悦にハマってる人もあまり<strike>好きではありません</strike></span><span style="color: #0b5394;">)</span><br />
<br />
ここからが本題<br />
<h3>
グループを使ったジャンル分けについて</h3>
<br />
<h4>
■曲のメタタグ『ジャンル』は大雑把に分類(大ジャンル)</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-YxA8q5laxxU/UdJSXHYHs8I/AAAAAAAAGH0/UOxzb9cDJYs/s1179/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.07.47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="193" src="http://3.bp.blogspot.com/-YxA8q5laxxU/UdJSXHYHs8I/AAAAAAAAGH0/UOxzb9cDJYs/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.07.47.png" width="400" /></a></div>
<br />
いわゆるメタタグの『ジャンル』では細かく分けるのでは無く、自分でこれくらいならはっきり分類・管理できるかな?程度に分けるのがポイント。<br />
ちなみに自分は以下の9つに分類した<br />
<br />
・Book & Spoken<br />
・Children / Anime / Soundtrack / EasyListening<br />
・Classic<br />
・Country / Folk / Traditional / EasyListening<br />
・Dance / House / Electronic / Trance<br />
・HipHop / RnB / Reggae / Latin / Urban<br />
・Jazz / HipHop / Soul / Funk / Blues / Underground<br />
・Pop / AllGenres<br />
・Rock / Punk / Alternative / Metal<br />
<br />
あくまでこれは聴くシーンごとに、それぞれのジャンルの曲を繋げた際、自分で違和感無いかなっと思うように分けただけなので、厳密な音楽の分類には則ってません。<br />
ようは大雑把に分けるのが大事です!<br />
<br />
<h4>
■メタタグ『グループ』で詳細なキーワードごとにタグ付け(小ジャンル)</h4>
さて上記の様に大雑把にジャンル分けを行い、細かいジャンルをキーワードとして『グループ』で分類、タグ付けしていきます。<br />
『グループ』の使い方はGoogleなどで、「iTunes グループ」などと検索してくれれば使い方の解説してくれるページがヒットするはずである。<br />
まあ、二番煎じだが自分も解説<br />
<br />
曲を選択し、右クリックで『<b>情報を見る</b>』(Windowsなら『プロパティ』)を選択<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-7VeAOU0Gyto/UdJS24dL4GI/AAAAAAAAGH8/2Eeq0HlZ5iI/s1016/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.10.44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="http://4.bp.blogspot.com/-7VeAOU0Gyto/UdJS24dL4GI/AAAAAAAAGH8/2Eeq0HlZ5iI/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.10.44.png" width="640" /></a></div>
<br />
『<b>情報</b>』タグの中頃にグループがある<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eXatfcA9Rgs/UdJTEfIV0cI/AAAAAAAAGIE/l6VMiq0jm1c/s583/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.11.34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="366" src="http://2.bp.blogspot.com/-eXatfcA9Rgs/UdJTEfIV0cI/AAAAAAAAGIE/l6VMiq0jm1c/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.11.34.png" width="400" /></a></div>
<br />
この『グループ』の欄には各人が好きなように記入することができる。<br />
ここに好きな形で小ジャンルや分類項目をキーワードとして記入していく。<br />
キーワードとして、<br />
<br />
<b>男性ボーカル→M</b><br />
<b>女性ボーカル→F</b><br />
<b>日本の曲→JP</b><br />
<b>ポップ→Pop</b><br />
<b>ロック→Rock</b><br />
<b>エモ→Emo</b><br />
<b>インディ→Indie</b><br />
<b>・・・</b><br />
<br />
など、各々の好きなキーワードを複数入力することができる。<br />
この際、注意することは<br />
<br />
<ul>
<li><span style="color: #990000;">綴りは前もってキチンと決めておき、大文字と小文字も区別する</span></li>
<li><span style="color: #990000;">複数のそれぞれのキーワードの前後を"/"で区切っておく(これにより『/Pop/と/Rock/』と『/PopRock/』などを区別できる。また別に"/"でなく"%"でも、"#"でも、キーワードとして使わず、</span><span style="color: #990000;">区切りとして見やすければ何でも良い)</span></li>
</ul>
<br />
上記を用いて、「日本の男性ボーカルのポップかロックの曲(ミスチルとか?)」なら<br />
<br />
<b>/M/JP/Pop/Rock/</b><br />
<b><br /></b>
っと記入すれば良い。<br />
<br />
この様にして、『グループ』に少ジャンルのキーワードを記入していけば、スマートプレイリストで<b><span style="color: #0b5394;">「『グループ』に『/Rock/』を含む」</span></b>AND<b><span style="color: #0b5394;">「『グループ』に『/JP/』を含む」</span></b>など大ジャンルを横断したプレイリストの作成が容易になる.。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-a_2N4HXbkEw/UdJVSzL417I/AAAAAAAAGIc/cVN01PgKojk/s739/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.21.05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="http://3.bp.blogspot.com/-a_2N4HXbkEw/UdJVSzL417I/AAAAAAAAGIc/cVN01PgKojk/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.21.05.png" width="640" /></a></div>
<br />
この結果、<b>一つの曲に複数のジャンルを関連付け</b>られ、後から<b>それぞれのジャンルの曲をスマートプレイリストを使って細かく選択</b>できる。例えば、最近のR&BはHipHopのRapなどとジャンルがかぶる事が多いが、そのような曲のグループを「/RnB/HipHop/Rap/」としていれば、「R&Bの中でも特にBlues調の曲」を聴きたい時、スマートプレイリストで<b><span style="color: #0b5394;">「『グループ』に『/RnB/』を含む」</span></b>AND<span style="color: #0b5394;"><b>「『グループ』に『/HipHop/』を含まない」</b></span>AND<span style="color: #0b5394;"><b>「『グループ』に『/Rap/』を含まない」</b></span>っと選択してやれば、R&Bの中でもHipHopを含む曲を除外できる。逆に普段は単に「RnBっぽい曲」を<b><span style="color: #0b5394;">「『グループ』に『/RnB/』を含む」</span></b>のプレイリストで選んで聴くこともできる。<br />
さらに、音楽のジャンルだけでなく、<br />
<br />
<b>運転中に聴きたい曲→Drive</b><br />
<b>日中聴きたい曲→Day</b><br />
<b>夜聴きたい曲→Night</b><br />
<b>寝る前聴きたい曲→Sleep</b><br />
<b>夏っぽい→Summer</b><br />
<b>冬っぽい→Winter</b><br />
<b>女の子といいムードの時→Love</b><br />
<b>BGMとして歌詞要らない→Inst</b><br />
<b>・・・</b><br />
<b><br /></b>
など、シーンごとの自由なキーワードを設定することも可能である。<br />
ちなみにキーワードは自分が分かりやすいモノにした方がよい。スペルミスや、そもそもどんなキーワードがあったか忘れるようなもでは元も子もない。曲に多くのキーワードを設定しても良いが、それを活用してプレイリストを作る時を第一に考える。<br />
<br />
ここまでがネットで良く見る(二番煎じ)グループの活用方法である。<br />
<br />
<h3>
ジャンル分け・管理のポイントと応用</h3>
<h4>
■編集完了キーワードを記入する</h4>
『グループ』キーワードが未編集の曲なのか、既に編集した曲なのかを後々区別しやすい様に、分類を決定した曲の最後に「<b>END</b>」っと記入する。「END」でなくても「終わり」とかなんでもいいのだが、とにかく<b>曲の分類キーワードとして絶対用いない文字列</b>で記入する。上記の例でいえば、<br />
<br />
<b>/M/JP/Pop/Rock<span style="color: #990000;">/END</span></b><br />
<br />
っとなる。<br />
これを追加することによりグループ編集作業をこなして行く時、スマートプレイリストで「<b>『グループ』に『END』を含まない</b>」とすることで、すぐに未編集の曲を見つけることができるようになる。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-SkDWwoszjnY/UdJU9fTpvrI/AAAAAAAAGIU/HTRwN1xo8Pg/s738/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.19.31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="211" src="http://4.bp.blogspot.com/-SkDWwoszjnY/UdJU9fTpvrI/AAAAAAAAGIU/HTRwN1xo8Pg/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.19.31.png" width="640" /></a></div>
上記の様なスマートプレイリストを作れば、『グループ』編集が終わっていない曲を簡単に見つけることができる。<br />
<br />
<h4>
■小ジャンル分類の判別にデータベースを活用する</h4>
次のポイントが小分類を決めたい時に、自分の考えだけでなく音楽のデータベースを用いるということである。ネットには様々な音楽のデータベースがあるが、そのデータを用いて小分類を記入することにより、正確に分類できるだけでなくいちいち自分で考え悩む手間が省ける。(また、自分の知らない新しいジャンルの発見につながる)<br />
以下いくつか自分の活用している音楽データベースを紹介する<br />
<br />
<ul>
<li><a href="http://www.lastfm.jp/home" target="_blank">Last.fm</a></li>
<li><a href="http://www.allmusic.com/" target="_blank">allmusic</a></li>
<li><a href="http://listen.jp/" target="_blank">listen.jp</a></li>
</ul>
<br />
など(他にもたくさんあるだろうが)<br />
特に自分は洋楽中心なので、Last.fmを良く用いている。Last.fmのいいところは『Last.fm Scrobbler』というソフトをインストールすると、自分の聞いている曲のデータを自動的にLast.fm Scrobblerのウィンドウに表示してくれるので、いちいちブラウザで検索をする手間を省けるのである。リスナーからの情報でジャンルなどを分類しているので、正確性はまちまちだがマイナーなアーティストの情報もあったり、質はいまいちだが量は多いと思う。(HipHopが「hip hop」、「Hip-Hop」、などと分かれていたりするので、そこは適宜自分のキーワードのルールに則って参照していくとよい)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-5noEIyB5mYs/UdJXzDwEFJI/AAAAAAAAGIs/8A-B9b-YGXI/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.31.23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="http://1.bp.blogspot.com/-5noEIyB5mYs/UdJXzDwEFJI/AAAAAAAAGIs/8A-B9b-YGXI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.31.23.png" width="320" /></a></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-c8CgOdUQCBc/UdJYV9A0wcI/AAAAAAAAGI0/YrZGIGnVnVc/s780/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.33.57.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="327" src="http://4.bp.blogspot.com/-c8CgOdUQCBc/UdJYV9A0wcI/AAAAAAAAGI0/YrZGIGnVnVc/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.33.57.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Last.fm</td></tr>
</tbody></table>
<br />
逆に正確にプロの情報から小ジャンルを定義したいのなら、allmusicがいいだろう。プロのライターの情報を元にジャンル分けが行われている。<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-_Ye9FNVJ-XM/UdJZQnqMZZI/AAAAAAAAGJE/RhS_xCTUiyk/s1067/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.37.56.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="293" src="http://1.bp.blogspot.com/-_Ye9FNVJ-XM/UdJZQnqMZZI/AAAAAAAAGJE/RhS_xCTUiyk/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.37.56.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">allmusic</td></tr>
</tbody></table>
<br />
ここは人それぞれやり方あるだろうから、自分なりの方法を見つけるのがベストである。<br />
<br />
ちなみに、この『グループ』による小ジャンル分けは同じメタデータの中の『コメント』でも同様にできる。<br />
しかし自分の使い方では、コメントは「CD作成済み」「変換済み」などのジャンルなどとは別の用途で一時的なコメントを記入したりしているので、今回のジャンル分けに用いたりすることはない。<br />
さらに自分の中でiTunesにおける『グループ』と『コメント』のメタデータ利用の大きな違いは、『グループ』ならiTunesのカラムブラウザに表示できる点だと思う。カラムブラウザを表示して、右クリックして表示項目を選択すことにより、『グループ』をカラムブラウザに表示することができる。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-LowHjhmY7W4/UdJZvaJciNI/AAAAAAAAGJM/t1mfIs0C1Hg/s1400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.39.43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-LowHjhmY7W4/UdJZvaJciNI/AAAAAAAAGJM/t1mfIs0C1Hg/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-07-02+13.39.43.png" width="640" /></a></div>
これの応用として、プレイリストでiTuensから削除したい曲を選択した場合に簡単に削除対象を選択できるようになる。iTunesでプレイリストから曲を選択しても「プレイリストから削除」はできるが「iTunesから削除」はできない。そこで、プレイリストで曲を選択して、グループにキーワード『削除』などと記入しておけば、ミージックのタブに移って、カラムブラウザのグループの項目から先ほど入力した『削除』を選択すれば、削除対象の曲の一覧を表示でき、簡単に削除することができる。<br />
<br />
最後に、そもそも『ジャンル』がタグ管理できればこのような煩わしさから開放されるわけであり、今後iTunesの『ジャンル』の使用方法が改良されることを切に願う。ってもなかなか難しいのかな…<br />
<br />
他にスマートな音楽の管理方法や、iTunesの活用方法を知っていたら是非教えて欲しいです!Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-41945072247440095312012-12-21T23:37:00.001+09:002018-02-26T01:35:27.735+09:00Viewのタッチを別のオブジェクトへ伝える - UITapGestureRecognizerViewのタッチイベントをトリガーにして、別のオブジェクトでアクションを発生させる方法の一つ。<br />
<br />
UITapGestureRecognizerクラスのインスタンスをViewに貼り付け、ターゲットアクションデザインパターンで実現させる。<br />
<br />
<br />
<div class="back">
<span class="title">MyViewController.h
</span>
<br />
<pre class="code">
#import <UIKit/UIKit.h>
#import "MyView.h"
@interface MyViewController : UIViewController
@property MyView* myView;
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyViewController.m
</span>
<br />
<pre class="code">
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
@synthesize myView;
- (void)viewDidLoad
{
[super viewDidLoad];
myView = [[MyView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];
myView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:myView];
UITapGestureRecognizer* tapGesturRecobnizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touched)];
[myView addGestureRecognizer:tapGesturRecobnizer];
}
- (void)touched
{
NSLog(@"----ログ2----");
}
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyView.h
</span>
<br />
<pre class="code">
#import <UIKit/UIKit.h>
@interface MyView : UIView
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyView.m
</span>
<br />
<pre class="code">
#import "MyView.h"
@implementation MyView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"----ログ1----");
}
@end
</pre>
</div>
<br />Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-62285463599314773202012-12-21T23:07:00.001+09:002018-02-26T01:35:27.775+09:00Viewのタッチを別のオブジェクトへ伝える - プロトコルViewのタッチイベントをトリガーにして、別のオブジェクトでアクションを発生させる方法の一つ。<br />
<br />
タッチを検出したいViewにプロトコルでアクションを起こしたいオブジェクトのメソッドを実装して実現させる。<br />
<br />
<br />
<br />
<div class="back">
<span class="title">MyViewController.h
</span>
<pre class="code">
#import <UIKit/UIKit.h>
#import "MyView.h"
@interface MyViewController : UIViewController
@property MyView* myView;
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyViewController.m
</span>
<pre class="code">
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
@synthesize myView;
- (void)viewDidLoad
{
[super viewDidLoad];
myView = [[MyView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];
myView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:myView];
myView.target = self;
}
- (void)touched
{
NSLog(@"----ログ2----");
}
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyView.h
</span>
<pre class="code">
#import <UIKit/UIKit.h>
@protocol TouchEvent <NSObject>
- (void)touched;
@end
@interface MyView : UIView
@property id<TouchEvent> target;
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyView.m
</span>
<pre class="code">
@implementation MyView
@synthesize target;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"----ログ1----");
[target touched];
}
@end
</pre>
</div>
<br/>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-10278297320094744392012-12-21T22:48:00.000+09:002018-02-26T01:35:27.614+09:00Viewのタッチを別のオブジェクトへ伝える - -performSelector:withObject:Viewのタッチイベントをトリガーにして、別のオブジェクトでアクションを発生させる方法の一つ。<br />
<br />
NSObjectで定義される-performSelector:withObjectメッソドを利用する。<br />
タッチイベントを検出したいViewのid型インスタンス変数targetにアクションを起こしたいオブジェクトを格納し、ViewのSEL型インスタンス変数actionにオブジェクトのメソッドを格納する。<br />
<br />
<br />
<div class="back">
<span class="title">MyViewController.h
</span>
<pre class="code">
#import <UIKit/UIKit.h>
#import "MyView.h"
@interface MyViewController : UIViewController
@property MyView* myView;
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyViewController.m
</span>
<pre class="code">
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
@synthesize myView;
- (void)viewDidLoad
{
[super viewDidLoad];
myView = [[MyView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];
myView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:myView];
myView.target = self;
myView.action = @selector(touched);
}
- (void)touched
{
NSLog(@"----ログ2----");
}
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyView.h
</span>
<pre class="code">
#import <UIKit/UIKit.h>
@interface MyView : UIView
@property id target;
@property SEL action;
@end
</pre>
</div>
<br/>
<div class="back">
<span class="title">MyView.m
</span>
<pre class="code">
#import "MyView.h"
@implementation MyView
@synthesize target, action;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"----ログ1----");
[target performSelector:action];
}
@end
</pre>
</div>
<br/>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-12108391790932869752012-12-14T07:27:00.002+09:002018-02-26T01:30:43.399+09:00Objective-C デリゲートに関して最初、デリゲート(Delegate)とはObjective-Cまたは、iOS SDKの何か特別な機能のことだと思っていた。どうやらそう言うことでは無いらしく、単にプロトコルという機能を使ったオブジェクト間のやり取りの事を言うらしい。委任とか難しい言葉を使われると分からなくなる。<br />
以下初心者の自分なりに噛み砕いてまとめてみた。<br />
<h3>
デリゲートとは</h3>
あるオブジェクトAとオブジェクトBがある。<br />
Aで起こったアクションに対し、Bで何かイベントを起こしたいとする。しかし、BはAでアクションが起こった事が分からない。そこでBにAでアクションが起こった事を知らせる方法を実装する。その結果、Aのアクションをトリガーにして、Bでイベントを起こせる様にする。このことをデリゲートと言うらしい。<br />
<h3>
デリゲートを使うには</h3>
デリゲートを行う為にObjective-Cにあるプロトコルという機能を用いて、オブジェクトBにオブジェクトAのアクションに対するデリゲートメソッドを実装していく。<br />
<br />
プロトコルとは簡単に言えば自分のクラスに無いメソッドを新たに実装するための方法の一つである。<br />
デリゲートメソッドはAが起こすアクションに応じて呼び出されるメソッドで、プロトコルを用いてBに実装する。このデリゲートメソッド内にBで起こしたいイベントを記述する。<br />
<br />
これにより、『Aのアクション→デリゲートメソッド→Bのイベント』が実現する。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/drawings/pub?id=1ZF6uI6FY0ee9LzaBVQX3sJvbNNCVkOTVhYW8f5Q8Bi8&w=960&h=720" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://docs.google.com/drawings/pub?id=1ZF6uI6FY0ee9LzaBVQX3sJvbNNCVkOTVhYW8f5Q8Bi8&w=960&h=720" width="640" /></a></div>
<br />
<br />
<h3>
簡単な例</h3>
<div>
テキストフィールドに文字が入力され、リターンキーが押されると、ラベルにテキストフィールドで入力された文字が表示されるプログラムを考える。上記のモデルと照らし合わせると、オブジェクトAがテキストフィールドで、そのトリガーとなるアクションがリターンキーを押すことになる。そしてオブジェクトBにあたるラベルにイベントとして文字が表示される。</div>
<div>
<br /></div>
<div>
<ol>
<li>MyTextFieldクラスの<b>textField_A</b>とMyLabelクラスの<b>label_B</b>を生成し、画面に表示されるようにする。</li>
<li><b>MyAppDelegate.m</b>の <span style="color: red;">textField_A</span><span class="s1" style="color: red;">.</span><span class="s2" style="color: red;">delegate</span><span class="s1" style="color: red;"> = </span><span style="color: red;">label_B</span><span class="s1"><span style="color: red;">;</span> で、textField_Aのデリゲート先にlabel_Bを指定する。</span></li>
<li><span class="s1">MyLabelクラスのヘッダーファイル<b>MyLabel.h</b>で、<br /><b><span class="s1">@interface</span><span class="s2"> MyLabel : </span>UILabel<span class="s2"> <</span>UITextFieldDelegate</b><span class="s2"><b>></b> と記述し、</span>プロトコルとして </span><span style="color: red;"><span class="s1"><</span>UITextFieldDelegate</span><span class="s1"><span style="color: red;">> </span>を宣言する。</span>UITextFieldDelegateにはUITextField用の色々なアクションに対応するデリゲートメソッドがそれぞれ用意されており、MyLabelクラスのプロトコルとして宣言することにより、MyLabelクラスでUITextFieldDelegateメソッドを実装できるよようになる。</li>
<li>MyLabelクラスの実装ファイル<b>MyLabel.m</b>でUITextFieldDelegateに用意されたデリゲートメソッドの内、リターンキーが押された時に呼ばれるメッソド <span style="color: red;">-</span> <span style="color: red;">(<span class="s1">BOOL</span>)textFieldShouldReturn:(<span class="s2">UITextField</span> *)textField </span>にリターンキーが押された時のlabel_Bのイベントを記述する。このメソッドの引数<b>(<span class="s2">UITextField</span> *)textField</b>が呼び出し元のtextField_Aになっている。</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/drawings/pub?id=1xQbXDwcuXOGHeYLbcwNvC5HcSIfZwOmlfwX6E8sHcQg&w=776&h=374" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://docs.google.com/drawings/pub?id=1xQbXDwcuXOGHeYLbcwNvC5HcSIfZwOmlfwX6E8sHcQg&w=776&h=374" width="640" /></a></div>
<br />
以下ソースコード</div>
<div>
*Xcode4.5.2を使用</div>
<div>
*ARCを使用</div>
<div>
*EmptyApplicationから、IBを使用せずに作成</div>
<div>
<br /></div>
<div class="back">
<span class="title">MyAppDelegate.h
</span>
<br />
<pre class="code">#import <UIKit/UIKit.h>
#import "MyLabel.h"
#import "MyTextField.h"
@interface MyAppDelegate : UIResponder <UIApplicationDelegate,UITextFieldDelegate>
@property MyTextField* textField_A;
@property MyLabel* label_B;
@property (strong, nonatomic) UIWindow *window;
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyAppDelegate.m
</span>
<br />
<pre class="code">#import "MyAppDelegate.h"
@implementation MyAppDelegate
@synthesize textField_A, label_B;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//textField_Aとlabel_Bを生成
textField_A = [[MyTextField alloc] initWithFrame:CGRectMake(20, 130, 200, 50)];
label_B = [[MyLabel alloc] initWithFrame:CGRectMake(20, 50, 200, 50)];
//textField_Aとlabel_Bをウィンドウに表示
[self.window addSubview:textField_A];
[self.window addSubview:label_B];
//textField_Aのdeligateプロパティをlabel_Bに → textField_Aのデリゲート相手をlabel_Bにする
textField_A.delegate = label_B;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyTextField.h
</span>
<br />
<pre class="code">#import <UIKit/UIKit.h>
@interface MyTextField : UITextField
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyTextField.m
</span>
<br />
<pre class="code">#import "MyTextField.h"
@implementation MyTextField
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.borderStyle = UITextBorderStyleRoundedRect;
}
return self;
}
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyLabel.h
</span>
<br />
<pre class="code">#import <UIKit/UIKit.h>
//MyLabelクラスにUITextFieldDelegateプロトコルを読み込む
@interface MyLabel : UILabel <UITextFieldDelegate>
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyLabel.m
</span>
<br />
<pre class="code">#import "MyLabel.h"
@implementation MyLabel
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
//UITextFieledDelegateのメッソドの一つ、テキストフィールドのリターンが押された時に呼ばれる
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//ラベルに表示されるテキストをテキストフィールドのテキストにする
self.text = textField.text;
return YES;
}
@end
</pre>
</div>
<br />Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-2673546988639288444.post-29564404234370575212012-12-13T23:00:00.000+09:002018-02-26T01:35:27.696+09:00UIViewController内のUIButtonのaddTarget:action:forControlEventについてUIViewControllerクラスのviewControllerにUIButtonクラスのbuttonを作成し、ボタンをタッチした時にイベントを実行するようにする。<br />
ボタンタッチの検出と、タッチに対するアクションを指定するには、addTarget:action:forControlEventメソッドを用いる。<br />
この時、MyAppDelegateのメッソド内で作成したUIViewControllerのオブジェクトではaddTarget:action:forControlEventメソッドを実行するとエラーとなる。しかし、MyAppDelegateのインスタンス変数としてUIViewControllerのオブジェクトを作成することでaddTarget:action:forControlEventメソッドを実行できる。<br />
<br />
<br />
<div class="back">
<span class="title">MyAppDelegate.h
</span>
<br />
<pre class="code">#import <UIKit/UIKit.h>
@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
{
UIViewController* viewController;
}
@property (strong, nonatomic) UIWindow *window;
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyAppDelegate.m
</span>
<br />
<pre class="code">#import "MyAppDelegate.h"
#import "MyViewController.h"
@implementation MyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
viewController = [[MyViewController alloc] init];
viewController.view.backgroundColor = [UIColor yellowColor];
[self.window addSubview:viewController.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
</pre>
</div>
<br />
<div class="back">
<span class="title">MyViewController.h
</span>
<br />
<pre class="code">#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController
- (void)buttonDidPush;
@end
</pre>
</div>
<br />
<div class="back">
<span class="title">MyViewController.m
</span>
<br />
<pre class="code">#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 200, 100)];
label.backgroundColor = [UIColor greenColor];
label.text = @"らべるてきすと";
[self.view addSubview:label];
UITextView* textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 130, 200, 100)];
textView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:textView];
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(230, 20, 80, 50);
[button setTitle:@"ボタン" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonDidPush) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)buttonDidPush
{
NSLog(@"----ログ1----");
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
</pre>
</div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-20028343563078198852012-12-13T03:00:00.000+09:002018-02-26T01:35:27.655+09:00UIKitクラス階層(UIKit class hierarchy)<h3>
UIKitクラス階層</h3>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-hShvqAu5ZBY/UMjFZ-XozlI/AAAAAAAADVg/syhASujrmRc/s1600/uikit_classes.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="" border="0" src="http://4.bp.blogspot.com/-hShvqAu5ZBY/UMjFZ-XozlI/AAAAAAAADVg/syhASujrmRc/s1600/uikit_classes.jpg" title="UIKit class hierarchy" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">UIKit class hierarchy</td></tr>
</tbody></table>
<div>
<br /></div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-86987544215931184562012-12-08T11:31:00.000+09:002018-02-26T01:30:44.229+09:00タブバーとナビゲーションバーによる画面遷移の違い<img src="https://docs.google.com/drawings/pub?id=1Vz0enj8w9VEelJHZH37sZBPXpkfOFph6RbgJ_TtXmqw&w=960&h=720">
<img src="https://docs.google.com/drawings/pub?id=1-tRmTavzaVHcWaczXLV2_W1-ofatAyb8F2Yj6qvIVQE&w=960&h=720">Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-39966634801271344842012-12-06T15:55:00.000+09:002018-02-26T01:30:43.675+09:00画面上の別のViewをスライドさせる
<br />
<ul>
<li>ViewにUITapGestureRecognizerを登録</li>
<li>UITapGestureRecognizerのviewプロパティに登録したViewが保管されている</li>
<li>UITapGestureRecognizerによりタップを検出</li>
<li>ターゲットアクションに指定したメソッドを実行(Viewをスライドさせる)</li>
</ul>
<pre class="brush:objc">
#import "StudyAppDelegate.h"
@implementation StudyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//myViewの作成
UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(self.window.bounds.size.width - 44, 50, 300, 300)];
myView.backgroundColor = [UIColor blueColor];
[self.window addSubview:myView];
// ジェスチャーを見張る。ターゲットアクションを指定して初期化。
UITapGestureRecognizer* myTapGestureRecognizer
= [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(myMethod:)];
// タップを見張りたいUIViewに追加する。
[myView addGestureRecognizer:myTapGestureRecognizer];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
// タップされた時の処理。
-(void)myMethod:(UITapGestureRecognizer*)tapGestureRecognizer
{
UIView* tappedView = tapGestureRecognizer.view;
CGRect frame = tappedView.frame;
frame.origin.x = 10;
tappedView.frame = frame;
}
</pre>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-26502029807797201632012-12-04T18:08:00.004+09:002012-12-04T18:08:43.943+09:00投稿タイトル標準<br />
JUGEM(ジュゲム)は無料ブログ(BLOG)作成サービス。 ... CSSの記述方法は幾つかありますが、今回はクラス(class)を紹介したいと思います(他の記述方法は今後の講座にて紹介していきます)。classと ... クラス名は半角英数であればどのような名前を付けても構いませんが、あとで編集がしやすいように分かりやすい名前を付けておくと良いでしょう。 ... HTMLを一切変更しなくてもスタイルシートがHTMLのどの部分を継承しているのかさえ分かればスタイルシートの編集のみで見た目を大きく変えることが可能です。<div>
<br /></div>
<div>
<a href="http://men3pon.blogspot.jp/search/label/Blog" target="_blank">りんく</a></div>
<div>
<a href="http://men3pon.blogspot.jp/search/label/Blog" target="_blank">http://men3pon.blogspot.jp/search/label/Blog</a><br /><h4>
準見出し</h4>
JUGEM(ジュゲム)は無料ブログ(BLOG)作成サービス。 ... CSSの記述方法は幾つかありますが、今回はクラス(class)を紹介したいと思います(他の記述方法は今後の講座にて紹介していきます)。classと ... クラス名は半角英数であればどのような名前を付けても構いませんが、あとで編集がしやすいように分かりやすい名前を付けておくと良いでしょう。 ... HTMLを一切変更しなくてもスタイルシートがHTMLのどの部分を継承しているのかさえ分かればスタイルシートの編集のみで見た目を大きく変えることが可能です。<br />
<h3>
小見出し</h3>
JUGEM(ジュゲム)は無料ブログ(BLOG)作成サービス。 ... CSSの記述方法は幾つかありますが、今回はクラス(class)を紹介したいと思います(他の記述方法は今後の講座にて紹介していきます)。classと ... クラス名は半角英数であればどのような名前を付けても構いませんが、あとで編集がしやすいように分かりやすい名前を付けておくと良いでしょう。 ... HTMLを一切変更しなくてもスタイルシートがHTMLのどの部分を継承しているのかさえ分かればスタイルシートの編集のみで見た目を大きく変えることが可能です。<br />
<h2>
見出し</h2>
JUGEM(ジュゲム)は無料ブログ(BLOG)作成サービス。 ... CSSの記述方法は幾つかありますが、今回はクラス(class)を紹介したいと思います(他の記述方法は今後の講座にて紹介していきます)。classと ... クラス名は半角英数であればどのような名前を付けても構いませんが、あとで編集がしやすいように分かりやすい名前を付けておくと良いでしょう。 ... HTMLを一切変更しなくてもスタイルシートがHTMLのどの部分を継承しているのかさえ分かればスタイルシートの編集のみで見た目を大きく変えることが可能で<br />
<br />
<ol>
<li>あいうえお</li>
<li>かきくけこ</li>
<li>さしすせそ</li>
</ol>
<ul>
<li>あいうえお</li>
<li>かきくけこ</li>
<li>さしすせそ</li>
</ul>
</div>
Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-2673546988639288444.post-16300707627638689932012-12-04T17:14:00.000+09:002018-02-26T01:30:43.439+09:00タッチされた位置の確認View内のタッチされた位置に丸を表示する。<br />
<br />
<pre class="brush:objc" title="studyAppDelegate.h">
#import <UIKit/UIKit.h>
@interface StudyAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
</pre>
<pre class="brush:objc" title="studyAppDelegate.m">
#import "StudyAppDelegate.h"
#import "MyView.h"
@implementation StudyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//MyViewクラスのviewを表示させる
MyView* view = [[MyView alloc] initWithFrame:CGRectMake(10, 10, 300, 300)];
view.backgroundColor = [UIColor yellowColor];
[self.window addSubview:view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application{}
- (void)applicationDidEnterBackground:(UIApplication *)application{}
- (void)applicationWillEnterForeground:(UIApplication *)application{}
- (void)applicationDidBecomeActive:(UIApplication *)application{}
- (void)applicationWillTerminate:(UIApplication *)application{}
@end
</pre>
<pre class="brush:objc" title="MyView.h">
#import <UIKit/UIKit.h>
@interface MyView : UIView
{
CGPoint location;
}
@end
</pre>
<pre class="brush:objc" title="MyView.m">
#import "MyView.h"
@implementation MyView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
//矩形描画メソッド
- (void)drawRect:(CGRect)rect
{
// 描画先情報を得る。
CGContextRef context = UIGraphicsGetCurrentContext();
// 位置と大きさをしていして、丸を描画する
CGContextFillEllipseInRect(context, CGRectMake(location.x, location.y, 50, 50));
}
//タッチが開始された時に実行されるメソッド
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//touchesの情報をtouchpointに格納
UITouch* touchpoint = [touches anyObject];
// touchpointのいち情報を取り出し、locationに格納
location = [touchpoint locationInView:self];
// 描画の必要がある事を自身に通知する。
[self setNeedsDisplay];
}
@end
</pre>
<br />
<ul>
<li>どの位置をタッチしたなどの情報は、-touchesBegan:withEvent:メソッドの引数、touchesに格納されている。</li>
<li>NSSetクラスのtouchesには複数のUITouchクラスのインスタンスが格納されている。</li>
<li>マルチタッチなどの設定を行わない場合、touchesに-anyObjectを送ることでUITouchを取り出せる。</li>
<li>-locationInViewメソッドで、指定したViewのローカル座標に対応した位置座標をCGPoint構造体で抜き出す。</li>
</ul>
<br />
<br />Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-89153122574045497042012-12-01T01:15:00.002+09:002018-02-26T01:30:44.268+09:00CALayer<br />
<h4>
Description</h4>
The CALayer class is the model class for layer-tree objects. It encapsulates the position, size, and transform of a layer, which defines its coordinate system. It also encapsulates the duration and pacing of a layer and its animations by adopting the CAMediaTiming protocol, which defines a layer’s time space.<br />
<br />
CALayerクラスはレイヤー・ツリーオブジェクトの雛形クラスである。レイヤーの位置、大きさ、変形をカプセル化し、座標系を定義する。また、CAMediaTimingプロトコルを用いることによって、レイヤーやそのアニメーションの継続時間や感覚もカプセル化し、レイヤーの時間系を定義する。<br />
<br />
(CALayerはUIView同様入れ子配置も可能で、画面に画像を表示する機能をだけを使いたい場合、UIViewよりCALayerを直接使った方が軽快で細かな処理ができる。)<br />
<h4>
Availability<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
iOS (2.0 and later)<br />
<h4>
Declared<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
CALayer.h<br />
<h4>
Reference<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
CALayer Class Reference<br />
<h4>
Guides<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
Core Animation Cookbook, Core Animation Programming Guide<br />
<h4>
Samples<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
AVSimpleEditoriOS, AccelerometerGraph, CoreTextPageViewer, SquareCam, oalTouch<br />
<br />
<pre class="brush:objc">
#import "StudyAppDelegate.h"
/*CALayerを使うときには、「Linked Frameworks and Libraries」でQuartzCore.frameworksを追加し、
QuartzCore/QuartzCore.hをimportしなければならない*/
#import <QuartzCore/QuartzCore.h>
@implementation StudyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 300)];
view.backgroundColor = [UIColor blackColor];
[self.window addSubview:view];
//CALayerのコンストラクタ
CALayer* layer1 = [CALayer layer];
CALayer* layer2 = [CALayer layer];
//CALayerの矩形サイズと位置の指定
layer1.frame = CGRectMake(20, 20, 30, 30);
layer2.frame = CGRectMake(30, 70, 30, 30);
//CALayerの背景色指定
layer1.backgroundColor = [UIColor yellowColor].CGColor;
layer2.backgroundColor = [UIColor greenColor].CGColor;
//CALayerの透明度の指定
layer1.opacity = 0.5;
//CALayerの枠線の指定
layer2.borderColor = [UIColor redColor].CGColor;
layer2.borderWidth = 5;
//CALayerの表示→UIViewオブジェクトが作成された時に自動的に付随するCALayerへ入れ子にする
[view.layer addSublayer:layer1];
[view.layer addSublayer:layer2];
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application{}
- (void)applicationDidEnterBackground:(UIApplication *)application{}
- (void)applicationWillEnterForeground:(UIApplication *)application{}
- (void)applicationDidBecomeActive:(UIApplication *)application{}
- (void)applicationWillTerminate:(UIApplication *)application{}
@end
</pre>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-61034915064359134792012-11-30T20:49:00.000+09:002018-02-26T01:30:43.951+09:00継承とクラス<h4>
継承</h4>
別のクラスの定義の一部を拡張、あるいは変更して新しいクラスを定義すること。<br />
サブクラス内のメソッドでは、自身のインスタンス変数の他、スーパークラスのインスタンス変数にもアクセスできる。<br />
<h4>
スーパークラス</h4>
新しく作るクラスから見て、継承の元となるクラス。<br />
<h4>
サブクラス</h4>
継承元のクラスから見て、新しく作るクラス。<br />
スーパークラス、サブクラスは相対的なものである。<br />
<h4>
ルートクラス</h4>
継承を繰り返し、新たなクラスを作ると階層構造になる。これをクラス階層という。クラス階層において、スーパークラスを持たない大元のクラスのことをルートクラスと言う。Cocoa環境ではNSObjectがルートクラスとなり、ルートクラスを継承しなければオブジェクトとして振る舞うことができない。自分で新しくクラスを作る際には、既存のサブクラスをかNSObjectをスーパークラスにしなければならない。<br />
<h4>
オーバーライド</h4>
<br />
スーパークラスのメソッドを同名の新しい定義で置き換えること。同名のメソッドがオーバーライドされている場合、自分にもっとも近い祖先のクラスのメソッドが実行される。<br />
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-17279316277958534172012-11-21T14:59:00.002+09:002018-02-26T01:30:43.478+09:00UIViewクラスのViewを生成する<h4>
任意の大きさと、位置のUIViewクラスのViewを生成する方法</h4>
<ul>
<li>viewはディスプレイ上で矩形の領域で表されるので、その大きさはCGRect構造体でわたす</li>
<li>CGRect構造体でviewを表すとき、位置は左上を原点とした2次元座標で表され、CGRectMakeで位置と大きさを指定する</li>
<li>UIViewがディスプレイ上に表示されるには、表示されているUIViewのいずれかの入れ子になる必要がある</li>
<li>UIViewクラスで、superviewプロパティがnil→入れ子の親が存在しないのは、UIViewのサブクラスのUIWindowのオブジェクトのみ</li>
</ul>
<pre class="brush:objc">@interface StudyAppDelegate : UIResponder <uiapplicationdelegate>
@property (strong, nonatomic) UIWindow *window;
@end
@implementation StudyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//windowを生成する
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//myViewの背景色を指定
self.window.backgroundColor = [UIColor whiteColor];
//windowをキーウィンドウとしてディスプレイに表示
[self.window makeKeyAndVisible];
//UIViewクラスのmyViewを生成
UIView* myView = [[UIView alloc] init];
//myViewの位置と大きさの指定
myView.frame = CGRectMake(10, 10, 100, 200);
//myViewの背景色を指定
myView.backgroundColor = [UIColor blueColor];
//myViewの位置を変更する
myView.frame = CGRectOffset(myView.frame, 50, 100);
//myViewをwindowの入れ子にして表示
[self.window addSubview:myView];
return YES;
}
@end
</uiapplicationdelegate></pre>
Anonymoushttp://www.blogger.com/profile/05534455044217377631noreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-3387307146776860912012-11-21T11:18:00.005+09:002018-02-26T01:32:52.363+09:00UIViewControllerによる2画面遷移<h3>
UIViewController</h3>
<h4>
Description</h4>
The UIViewController class provides the fundamental view-management model for all iOS apps. You rarely instantiate UIViewController objects directly. Instead, you instantiate subclasses of the UIViewController class based on the specific task each subclass performs. A view controller manages a set of views that make up a portion of your app’s user interface. As part of the controller layer of your app, a view controller coordinates its efforts with model objects and other controller objects—including other view controllers—so your app presents a single coherent user interface.<br />
<br />
UIViewControllerクラスは全てのiOSアプリの基礎的なview-managementモデルを提供する。UIViewControllerオブジェクトのインスタンスを直接生成することは少ない。代わりに、それぞれの役割を持つUIViewControllerクラスのサブクラスからインスタンスを生成する。viewコントローラーは、アプリのユーザーインターフェースの一部を担うviewの集まりを管理する。アプリのコントローラーレイヤーの一部として、viewコントローラーは、モデルオブジェクトや他のコントローラーのオブジェクト(他のviewコントローラーのオブジェクトも含む)との調整を行う。そのため、アプリは一貫したユザーインターフェースを持つことができる。<br />
<h4>
Availability<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
iOS (2.0 and later)<br />
<h4>
Declared<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
UIViewController.h<br />
<h4>
Reference<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
UIViewController Class Reference<br />
<h4>
Guides<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
View Controller Catalog for iOS, View Controller Programming Guide for iOS<br />
<h4>
Samples<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
AdvancedURLConnections, NavBar, Tabster, UICatalog, iAdSuite<br />
<h3>
UIViewControllerの役割</h3>
<div>
画面の構成要素をひとまとめにして切り替えることが可能</div>
<h3>
簡単な2画面遷移の例</h3>
<div>
<ul>
<li>UIViewControllerクラスのViewを2つ用意し、AppDelegate.mであらかじめ2つとも追加しておく</li>
<li>[self.window bringSubviewToFront:viewController1.view]で最初にviewController1を全面に表示</li>
<li>UIViewControllerクラスのViewはviewプロパティで参照できる</li>
<li>ボタンをタッチした時に呼ばれる[self.view.window sendSubviewToBack:self.view]で自身のViewを背面に隠すことで、もう一つのViewを画面に表示</li>
</ul>
</div>
<br />
<pre class="brush:objc" title="StudyAppDelegate.h">
#import <UIKit/UIKit.h>
@interface StudyAppDelegate : UIResponder <UIApplicationDelegate>
{
//UIViewControllerクラスのViewを用意
UIViewController* viewController1;
UIViewController* viewController2;
}
@property (strong, nonatomic) UIWindow *window;
@end
</pre>
<pre class="brush:objc" title="StudyAppDelegate.m">
#import "StudyAppDelegate.h"
#import "ViewController1.h"
#import "ViewController2.h"
@implementation StudyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
viewController1 = [[ViewController1 alloc] init];
viewController2 = [[ViewController2 alloc] init];
[self.window addSubview:viewController1.view];
[self.window addSubview:viewController2.view];
//最初にviewController1を前面に表示
[self.window bringSubviewToFront:viewController1.view];
[self.window makeKeyAndVisible];
return YES;
}
</pre>
<pre class="brush:objc" title="ViewController1.h">
#import <UIKit/UIKit.h>
@interface ViewController1 : UIViewController
@end
</pre>
<pre class="brush:objc" title="ViewController1.m">
#import "ViewController1.h"
@interface ViewController1 ()
@end
@implementation ViewController1
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//ラベルの作成
UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds];
label.text = @"Hello, World";
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor whiteColor];
label.textColor = [UIColor blackColor];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:label];
//ボタンの作成
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"画面遷移1" forState:UIControlStateNormal];
[button sizeToFit];
CGPoint newPoint = self.view.center;
newPoint.y += 50;
button.center = newPoint;
button.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[button addTarget:self action:@selector(buttonDidPush) forControlEvents:UIControlEventTouchUpInside]; //ボタンのターゲットアクション
[self.view addSubview:button];
}
//ボタンをタッチしたときのアクション
- (void)buttonDidPush
{
[self.view.window sendSubviewToBack:self.view]; //自身のViewを背面に移動
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
</pre>
<pre class="brush:objc" title="ViewController2.h">
#import <UIKit/UIKit.h>
@interface ViewController2 : UIViewController
@end
</pre>
<pre class="brush:objc" title="ViewController2.m">
#import "ViewController2.h"
@interface ViewController2 ()
@end
@implementation ViewController2
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds];
label.text = @"こんばんわ、世界";
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor blackColor];
label.textColor = [UIColor whiteColor];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:label];
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"画面遷移2" forState:UIControlStateNormal];
[button sizeToFit];
CGPoint newPoint = self.view.center;
newPoint.y += 50;
button.center = newPoint;
button.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[button addTarget:self action:@selector(buttonDidPush) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)buttonDidPush
{
[self.view.window sendSubviewToBack:self.view];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
</pre>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-36201316689988409692012-11-21T10:50:00.002+09:002018-02-26T01:30:43.635+09:00Cocoa:アプリケーションの起動について<h4>
UIApplivationクラスのメソッド
</h4>
<ul>
<li><span style="color: #990000;">application:willFinishLaunchingWithOptions</span></li>
アプリケーション起動後、最初に実行する 処理を記述します。
<br />
<li><span style="color: #990000;">application:didFinishLaunchingWithOptions</span></li>
アプリケーションが画面を表示する直前に 実行する、最後の初期化処理を記述します。
<br />
<li>applicationDidBecomeActive</li>
フォアグラウンド状態に切り替わろうとしている旨をアプリ ケーションに通知します。ここには切り替わる直前の準備処理を記述します。
<br />
<li>applicationWillResignActive</li>
フォアグラウンド状態から抜けようとしている際に呼び出さ れます。アプリケーションを一時停止状態にするための処理を記述します。
<br />
<li>applicationDidEnterBackground</li>
バックグラウンド状態で動作しており、いつでも一時停止 状態になりうることを表します。
<br />
<li>applicationWillEnterForeground</li>
バックグラウンド状態から抜けつつあるけれども、まだ アクティブにはなっていないことを表します。
<br />
<li>applicationWillTerminate</li>
アプリケーションがもうすぐ停止することを表します。一時停 止状態であれば、このメソッドは呼び出されません。
<br />
</ul>
<br />
<br />
<img src="https://docs.google.com/drawings/pub?id=1U4mPrtW_CdcI855fAhH26cqBD7OYDUKAH4CRf2Zt2EU&w=559&h=671" /><br />
<br />
<br />
<h4>
Empty Applicationテンプレートでブロジェクトを作成した時</h4>
<br />
<ol>
<li>アプリを起動すると、まず<span style="color: #990000;">main.m</span>の<span style="color: #990000;">main()関数</span>が呼び出される</li>
<li><span style="color: #990000;">main関数</span>で返される、<span style="color: #990000;">UIApplicationMain()関数</span>で<span style="color: #990000;">AppDelegateクラス</span>が呼び出される</li>
<pre class="brush:objc">int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
</pre>
<li>初期化処理を経て、<span style="color: #990000;">AppDelegateクラス</span>の<span style="color: #990000;">application:didFinishLaunchingWithOptionsメソッド</span>が実行される</li>
<li><span class="s1">最終的に画面には</span><span style="color: #990000;">application:didFinishLaunchingWithOptionsメソッド</span>で初期化されたwindowが表示される</li>
<pre class="brush:objc">@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//windowを生成する
self.window = [[InteractiveWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
//windowを表示するメソッド
[self.window makeKeyAndVisible];
return YES;
}
@end
</pre>
</ol>
<br />Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-2673546988639288444.post-20634845691035984142012-11-20T19:24:00.002+09:002018-02-26T01:32:52.324+09:00CGRect<h4>
Declaration</h4>
struct CGRect {<br />CGPoint origin;<br />CGSize size;<br />};<br />typedef struct CGRect CGRect;<br /><h4>
Description </h4>
A structure that contains the location and dimensions of a rectangle.
<br />
<br />
矩形の位置と大きさの情報を含む構造体。
<div>
<h4>
Availability </h4>
iOS (2.0 and later)<br /><h4>
Declared </h4>
CGGeometry.h<br /><h4>
Reference </h4>
CGGeometry Reference<br /><h4>
Guides </h4>
Quartz 2D Programming Guide <br /><h4>
Samples </h4>
CoreTextPageViewer, Recipes and Printing, ScrollViewSuite, SimpleStocks, UICatalog </div>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-69085511501962430562012-11-20T18:16:00.000+09:002018-02-26T01:32:52.520+09:00makeKeyAndVisible<br />
<h4>
Declaration</h4>
- (void)makeKeyAndVisible<br />
Description<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
Makes the receiver the key window and makes that window visible.<br />
This is a convenience method to make the receiver the main window and displays it in front of other windows. You can also hide and reveal a window using the inherited hidden property of UIView.<br />
<br />
レシーバーをキーwindowに指定し、見えるようにする。<br />
これはレシーバーをメインwindowにし、他のwindowよりも手前に表示させるのに便利なメソッドである。当然、UIViewクラスから継承したhiddenプロパティを用いることによって隠したり、表示させたりすることも可能である。<br />
<h4>
Availability</h4>
iOS (2.0 and later)<br />
<h4>
Declared<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
UIWindow.h<br />
<h4>
Reference<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
UIWindow Class Reference<br />
<h4>
Related<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
becomeKeyWindow, keyWindow, makeKeyWindow, resignKeyWindow<br />
<h4>
Guides<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
Multiple Display Programming Guide for iOS<br />
<h4>
Samples<span class="Apple-tab-span" style="white-space: pre;"> </span></h4>
ExternalDisplay<br />
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-55588766715354085742012-11-20T15:08:00.000+09:002018-02-26T01:30:43.832+09:00Foundationフレームワークのデータクラス
<iframe align='center' width='855' height='500' frameborder='0' src='https://docs.google.com/spreadsheet/pub?key=0Avgl19fr96sBdFdfWW5iSnR4a2JyaFhzOW9IaFR1dmc&single=true&gid=0&output=html' scrolling="no"></iframe>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-54682884671698795272012-11-20T12:19:00.000+09:002018-02-26T01:32:52.481+09:00UIApplicationDelegate<h4>
Description</h4>
The UIApplicationDelegate protocol declares methods that are implemented by the delegate of the singleton UIApplication object. These methods provide you with information about key events in an application’s execution such as when it finished launching, when it is about to be terminated, when memory is low, and when important changes occur. Implementing these methods gives you a chance to respond to these system events and respond appropriately. <div>
<br /></div>
<div>
UIApplicationDelegateプロトコルは、独立したUIApplicationオブジェクトのデリゲートにより実行されるメソッドを宣言する。これらのメソッドはアプリケーションが実行したキーイベントについての情報を通知する。例えば、いつ起動が完了したか、いつ終了されるか、いつメモリーが低下したか、いつ重要な変更が起きたかなど。それらのメソッドが実行されることによって、それらのシステムイベントに対して応答したり、的確に応答する機会を得ることができる。<br /><h4>
Availability </h4>
iOS (2.0 and later)<br /><h4>
Declared </h4>
UIApplication.h<br /><h4>
Reference </h4>
UIApplicationDelegate Protocol Reference<br /><h4>
Guides </h4>
Local and Push Notification Programming Guide, iOS App Programming Guide <br /><h4>
Samples </h4>
ScrollViewSuite, SquareCam, TableViewSuite, Touches, iAdSuite </div>
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-2673546988639288444.post-39447630164814941092012-11-20T11:45:00.000+09:002018-02-26T01:32:52.442+09:00NSObject<h4>
Description</h4>
NSObject is the root class of most Objective-C class hierarchies. Through NSObject, objects inherit a basic interface to the runtime system and the ability to behave as Objective-C objects. <div>
<br /></div>
<div>
NSObjectはほとんどのObjective-Cクラスの階層のルートクラスである。NSObjectを経ることで、オブジェクトはruntime systemとObjective-Cのオブジェクトとして振る舞うための基本的なインターフェースを継承する。<br /><h4>
Availability </h4>
iOS (2.0 and later)<br /><h4>
Declared </h4>
NSObject.h<br /><h4>
Reference </h4>
NSObject Class Reference<br /><h4>
Samples </h4>
AdvancedURLConnections, CryptoExercise, PhotosByLocation, ScrollViewSuite, TableViewSuite</div>
Anonymousnoreply@blogger.com0