ClamAV 0.96のビルドが失敗

ClamAVのエンジン古いっすよ警告が出るようになったので0.96にするべくportupgradeしたところ、失敗。エラーは次の通り。

PythonのtracebackとGNU makeのメッセージが混ざって見づらいですが、LLVMのユニットテスト用のファイルを作成開始し、import threadの行にて、ImportError: No module named threadエラー発生、ということでどうやらビルド後に行われるテストのPythonでthreadモジュールが必須になったようです。

にて(XXはインストールされていて使われたPythonに合わせて修正)、THREADS の項目を選択してPythonを再インストール。その後ClamAVのアップグレードも無事完了。

その「名前」、あなたのものですか?(その2)

この記事は「その『名前』、あなたのものですか?(その1)」の続きです。

あるお客様が、会社のウェブサイトの引越しをしたい、とおっしゃいました。 この場合、一番基本的な進め方としては、サイトのコンテンツを構成するファイル達を別のサーバに移動して、URLが新しいサーバを示すように変更する、と いうものです。しかしこのお客様の場合はそれが(すぐには)できませんでした。前回の記事は「ドメイン名」について解説しました。

前回のポイント

  • ドメイン名 ≒ 唯一無二の苗字
    • 唯一無二だから好き勝手につけられない。→レジストラから入手するもの。
  • IPアドレス ≒ 住所
  • ネームサーバ ≒ 住所録
    • ドメイン名に対するIPアドレスを知っているネームサーバをレジストリに登録する。
    • 苗字を変えずに住所だけ引っ越すことができる。

今回は実際の引越しについて解説します。

人が引越しをする理由は様々です。間取りが狭くなった、新しい設備が欲しい、建物が無くなる、などなど。ウェブサイトのサーバを引越しする理由も大して変わりありません。そして、人が引越しをするときは、トラックで中身を移動して市役所に転出・転入届を提出しますが、ウェブサイトのサーバの引越しも基本的には中身を移動して住所変更をするだけです。

では、弊社サイトである「www.abacustech.co.jp」を引っ越すと仮定した例で考えてみましょう。前回の記事の例では、このサイトのコンテンツ(文章や画像などのページの内容)は198.51.100.88というIPアドレス(住所)のサーバに置いてありました。今回は、これらのコンテンツを203.0.113.7という「住所」にあるサーバに移動したとしましょう。

図1 サーバの引越し
図1 サーバの引越し

ドメイン名「abacustech.co.jp」は レジストラから株式会社Abacus Technologiesの名義で入手し(図1の(1))、Abacus Technologiesが操作できるネームサーバを登録しています(図1の(2))。そこでAbacus Technologiesはネームサーバに新しいIPアドレス(203.0.113.7)を登録します(図1の(3))。これは皆さんが引っ越した際に転居届を出すのと似ています。

この処理が終わると、ネームサーバは「www.abacustech.co.jp」について聞かれたら、新IPアドレス(203.0.113.7)を教えるので、ユーザのコンピュータからは正しく、引越し先である203.0.113.7のサーバへ要求がたどり着くのです(図1の(4))。

この処理が正しくできたのは、直接的には、レジストリに登録されているネームサーバをAbacus Technologiesが操作できたからなのですが、そもそも操作できるネームサーバが登録できたのは、以下の条件が揃っていたからです。

  1. abacustech.co.jpがAbacus Technologiesの名義である(管理のためのメールが届く)
  2. レジストラに登録されているドメイン名の登録内容の変更権限(*1)をAbacus Technologiesが持っているので、Abacus Technologiesが操作可能なネームサーバを指定できる

通常、変更権限を持つ人はそのドメイン名の名義人、もしくはその名義人から委託された人になります。この2つの根本的な条件が揃えば、ドメイン名の登録IPアドレスはいつでもどこにでも変更できます。

そこで質問です。皆さんがウェブサイトを公開しているそのドメイン名、名義人とドメイン名の登録内容の変更権限を持つ人は誰ですか?

ウェブサイトを制作する際に、その作業を業者に委託すると、ドメイン名の取得も代行してくれる業者が多いです。もしドメイン名の取得も委託する場合は、ドメイン名の名義人と、登録内容の変更権限を持つ人が誰かを確認しましょう。そして、もし将来的にサーバの引越しの自由度を視野に入れるのであれば、できる限りドメイン名の名義と登録内容の変更権限を持つ人が自分になること、もしくはその名義や変更権限が移管できることと、その移管プロセスが明確であることを確認しましょう。

ドメイン名が自分のものであれば、もちろんサーバに縛られることなく自由に処理できます。もしドメイン名の名義人でなかったり変更権限がなければ、仮にサーバを引越ししたくなっても、ドメイン名の名義人や変更権限を持つ人が許可しないと引っ越せません。もし許可が無くても引っ越したければ、別のドメイン名を取得することになり、それは苗字が変わるのに似たインパクトがありますが、このインパクトについてはまた別の機会に解説します。

ドメイン名の名義人になると、その管理にはドメイン名によって年間で数百円から数万円の管理費がかかります。ドメイン名は、不要になれば放棄できます(ただし一度放棄したら、後日同じドメイン名を再度取得したくなっても、それができる確証はありません)。また公共性の高いサイトや大人気のサイトの場合は悪い人が取得してmalwareの配布に利用される恐れもあります。

ドメイン名は唯一無二の苗字と同等で、時間が経って周知されればされるほど組織や会社の呼称の一つとして大事なものになります。ウェブサイトを制作する際や、会社のドメイン名を取得する際には、ドメイン名の名義人と管理について以上の要素を包括的に検討されることをお奨めします。

ここがポイント

  • ドメイン名の名義人であり変更権限があれば好きに操作できる
  • IPアドレスはいつでもどこにでも変更できる
    • →苗字を変えずに住所だけ好きに引越し可能!(*2)

(*1) 少し専門的な言葉を使うと、ドメイン名の登録内容とは「whois」の内容のことです。ドメイン名の内容の変更権限を持つ、ということは「whoisの内容の変更権限を持つ」ということで、レジストラによってその権限の付与の仕方が異なります。例えばMelbourne ITというレジストラだと、変更権限を持つユーザはユーザIDとパスワードを使ってシステムにログインして管理します。

(*2) ただしそのサーバが利用できる立場でないといけません。引越し先の物件を賃貸契約していないと引っ越せないと同じです。

注意: この記事内のIPアドレスは全て説明用のダミーのIPアドレスです。このようなIPアドレスについては「文書に記述するときに使って良い説明用のドメイン名、IPアドレス」を参照してください。

その「名前」、あなたのものですか?(その1) – ドメイン名とは何ですか?

仕事用のウェブサイトをドメインも含めて誰かにお任せで作られる方へ: ドメインを含むURLなどを長く使い続けたい場合は、なんだかよくわからなくてもぜひドメインの「登録者(Registrant)」(属性JPの場合は[登録担当者]、汎用JPの場合は[公開連絡窓口])および「管理者(Admin)」のメールアドレスは、完全にコントロールできる権限が自分だけにあり、かつ@以降にそのドメインを含まないメールアドレスを指定してもらってください。御自身で利用しているプロバイダがメーリングリストを提供している場合もあるので、そういったサービスを利用して自分とお任せする方へ自動的に転送されるようなメーリングリストのアドレスを作成すると便利かもしれません。ドメイン登録者のメールアドレスの確認はwhoisというものでできます。廃業される方も多いので何年か後に泣かないで済むかもしれません。


あるお客様が、会社のウェブサイトの引越しをしたい、とおっしゃいました。この場合一番基本的な進め方としては、サイトのコンテンツを構成するファイル達を別のサーバに移動して、URLが新しいサーバを示すように変更する、というものです。しかしこのお客様の場合はそれが(すぐには)できませんでした。そこで2回に分けてウェブサイトの引越しについて解説します。今回は「ドメイン」について解説します。

例えば弊社のサイトを見るためには、ブックマークに登録していただいたリストの中から「株式会社Abacus Technologies」をクリックしたり、http://www.abacustech.co.jp/とURLを直接入力したり、検索結果から弊社のサイトのページを選んでいただいていると思います。いずれの場合も、皆さんのコンピュータは「www.abacustech.co.jp」にアクセスしようとします。

ドメイン名の使われ方
図1 ドメイン名の使われ方

図1の(1)でユーザーが見たいウェブページを指定するために使っているwww.abacustech.co.jpのabacustech.co.jpの部分が「ドメイン名」と呼ばれるもので、「ドメイン名」は「苗字」の役割を果たします。つまり「abacustech.co.jpさん」と呼んでいると思ってください。ただしこの「苗字」は唯一無二という特性があり、他に同じ苗字を持つ人はいません。そして、みんなが好き勝手に名前を付けていたら唯一無二にはならないので、ドメイン名は「レジストラ」から入手することになっています。なお、説明書などで例示するときに使えるドメインは「文書に記述するときに使って良い説明用のドメイン名、IPアドレス」をご参照ください。

さて、苗字を知っていても住所を知らないので、ユーザーはそのページが実際にどこにあるのかは知りません。そこで登場するのが「ネームサーバ」です。「苗字」の役割を果たすドメイン名に対して、ネームサーバは「住所録」の役割を果たします。つまりネームサーバが「www.abacustech.co.jpさん」がどこに住んでいるのか、その「住所」を見つけてくれるのです。その「住所」の役割を果たすのが「IPアドレス」と呼ばれるものです。IPアドレスは物理的に存在する機械に対して割り振られています。したがって、住所録であるネームサーバに聞けば「www.abacustech.co.jpさん」の住所が「198.51.100.88」(*1)であることが分かるので(図1の(2))、コンピュータはそのIPアドレスを指定してウェブサイトのページを要求することができるのです(図1の(3))。

でも、そもそも「www.abacustech.co.jpさん」の住所が記載されている住所録はどこにあるのでしょうか。その情報を管理しているのが「レジストリ」です。レジストラからドメイン名を入手すると、管理情報の一つとして、レジストリにそのドメインの情報を管理するネームサーバをレジストラ経由で登録できます。ネームサーバはレンタルサーバの業者が提供するもの、レジストラが提供するもの、他にも相当気合があれば自分でサーバを運用する、などがあります。

ところで、このトピックのそもそもの目的は「ウェブサイトの引越し」でした。皆さんが引っ越した場合には、市役所で転出・転入届けを出して、新しい住所を届け出ますね?市役所が駅から遠い所にあるとちょっと面倒ですが、これをしないと住民票が移動しません。さて、そう考えると、ドメイン名に関しても、「苗字」(ドメイン名)があって「住所」(IPアドレス)と「住所録」(ネームサーバ)があるということは、「要するに住所録を書き換えれば良いのか?」と想像できるのではないかと思います。それで正解です。つまり苗字を変えずに住所だけ変えることができるのです。

では次回はその引越しについてご説明しましょう。

ここがポイント

  • ドメイン名 ≒ 唯一無二の苗字
    • 唯一無二だから好き勝手につけられない。→レジストラから入手するもの。
  • IPアドレス ≒ 住所
  • ネームサーバ ≒ 住所録
    • ドメイン名に対するIPアドレスを知っているネームサーバをレジストリに登録する。
    • 苗字を変えずに住所だけ引っ越すことができる。

(*1) IPアドレスは一つのドメイン名に対して複数登録できます。また一つの機械(ネットワークインターフェース)に対して複数のIPアドレスを割り振ることができます。さらには複数の機械に一つのIPアドレスを割り振る(エニーキャスト)こともできますが、一般人がインターネット上でエニーキャストを運用することはありません。

注意:

PivotXでファイルのアップロードをする時は

PivotXのCommunityでもファイルのアップロードについて度々話題になっているようです。アップロードの設定は場合によっては若干複雑になります。 そうこうしているうちに自分もその仲間入りをしてしまいました。 php.iniの次の行がOnになっていること。

file_uploads = On

php.iniの次の行が指定しているディレクトリが存在していること。

upload_tmp_dir = “/phptmpdir”

upload_tmp_dirが指しているディレクトリ(上記の例だと/phptmpdir)はhttpdのプロセスオーナーが読み書きできるようにアクセス権が設定されていること。 この設定ができていないと、新しいエントリーを作成中にイメージをアップロードする操作をしたときに、Complete(完了)というメッセージが出るものの、イメージディレクトリには何もできません。

FAX受信 -> PDF -> e-mailでペーパレス 爆速インストールHylaFAX

あるお客様が一日中ひっきりなしにFAXを受け、トナーを買いに行く手間も値段もバカにならないし紙も大量に消費して地球に優しくないとのこと。常時可動のサーバも無いので、そりゃHylaFAXの出番でっせ、と社に戻って記憶をたどってワークショップをあさると、ありました外付けモデムME5614D2 for まいと~く、そして非力ながらもまだまだ使えるWindows 2000 Professionalときらきら光るシールの張ってあるPC。これでナンバーディスプレイ対応FAX e-mail変換機が簡単にできるじゃありませんか。送信時は媒体が定まっていないので今までどおりFAXに挿すままでよさそう。受信だけが問題である、というわけでさらに簡単(後日 PDF -> e-mail添付 -> FAX送信でペーパレス もやりました)。他にも「HylaFAXでの送受信速度」も参考になるかもしれません。あとインターネットからサーバへのアクセスはフィルタするなり対処が必要です。IPv6でlistenしているからいいやとほっておくと、当たり前にIPv6になった日に大騒ぎになるかもしれません。

まずはFreeBSD RELEASEを最小インストール、そしてpowerd, ntp, ipfw, メール, syslog転送など必要な設定(ざくっと省略)。

デフォルト以外を選択したのは

  • [nn] Default page size: A4

だけ。 /dev/cuau0 (cf. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/serialcomms.html)がモデムがつながっているやつであることをさくっと確認。ATI4とかATI3とか。そしてアプリケーションでの設定。USBモデムならば/dev/cuaU0とか。

デフォルト以外を選択したのは

  • Country Code: 81
  • Area Code: 3 (東京03から国内開放番号の0を除いた3)
  • Long distance dialing prefix: 0  (国内開放番号)
  • International dialing prefix: 010 (国際開放番号 cf. マイライン)

自動的にfaxaddmodemが起動され、そこでデフォルト以外を指定したのは

  • Serial port that modem is connected to: cuau0
  • Phone number of fax modem: +81.3.0000.0000 (FAXの番号)
  • Local identification string: HOGEHOGE (任意のFAXID。相手側のFAXに通知される。)
  • Long distance dialing prefix: 0  (国内開放番号)
  • International dialing prefix: 010 (国際開放番号 cf. マイライン)
  • Tracing during normal server operaton: 0x1a73f
  • Default tracing during send and receive sessions: 0x1a73f
  • Rings to wait before answering: 3  (早すぎると相手番号を取得し損ねる)

Windows用のinfファイルを見ながら適当にモデムに向かって電話をかけつつ、Caller IDを取得する方法(ここではAT+VCID=1)を見つけて /var/spool/hylafax/etc/config.cuau0 とか.cuaU0 などに追加。

CallIDPatternの後者は自機の番号。AT+GCI=00はAmazonなどで売っているConexant CX93001搭載の技適マークなんか付いてないど安いClass 1.0, Class 2 USB FAXモデムを構内回線につないでFAX受信時にATAでオフフックにならないような場合に付けてあげるともしかしたらつながるようになるかもしれません。Amazonの商品コメントでもFAXの送信ができても受信が安定してないとかできないと書いてありますが、料金からしてだめもとでいろいろ試して楽しめちゃう人向け商品ですね。IN/OUTがあるとかいう深い謎を持った商品もありましたがLINE/PHONEの間違いでしょうきっと。AT+GCI=で設定してATI5で返ってくる00の部分は、日本製でもITU-T.35のAnnex Aに基づいているものもあれば某携帯キャリアのように81とか電話の国番号だったり、某モデムでは64とかなんでかわからない値だったりするので、チップセットメーカによって違う場合があります。話を戻してその他のATI4とかはログで眺めてふーんとうなずくためのものです。ついでに下のこのME5614D2 for まいと~く用に書いた追加設定でMR560E5 for まいと~くも動作することも確認。

e-mail送り先などを指定するために /var/spool/hylafax/etc/FaxDispatch を作成。http://www.hylafax.org/content/Handbook:Server_Operation:Receiving_Faxesにも詳しく書いてありますが、/var/spool/hylafax/bin/faxrcvd を見ながら作成すると必要なものが一目瞭然。

他にも${CALLID1}が自社の番号の時には自社の名前を表示するようにしたりして遊んでみました。/var/spool/hylafax/etc/templates/ro(ちょっとしたボケ)/faxrcvd-succces.txtを自分の気に入った順番や必要な情報だけに整理(ftp://など必要ない)して、

/etc/ttysでは、TAで送信者の電話番号による振り分けを行って2つのfaxgettyで捌くように設定します。

を追加。

して、syslogでエラーが無いことを確認。FAXを送って動作していることを確認して、再起動。再起動後もFAXを送ってちゃんと動作していることを確認。ハードディスクの空きは十分すぎるほどあるのと、良く伺うお客様なので、キューはひたすら溜めて問題時対応用に。いずれフラッシュするようにしましょう。

さらに万が一のPCハングや保守時にも受信できないといけないので、ワークショップからCFカードにFAXを受信できるVE-GP62をひっぱりだしてきましたが、さすがに大量のファックスをいちいち確認するのは大変かもしれないので、冗長用には今のFAXの使い方の紙に印刷のまま使ってもらうのが良いでしょうか。そもそも送信用のFAXは今までのを使うのだから後者ですね。実際に運用して確認してもらいましょう。

ありがとう HylaFAX と portsシステム。あなた方のおかげで楽して世の中がまたまた少しエコになりました。多分。

PivotXで最新の記事のリストを表示したい

PivotX を使い始めて数ヶ月が経ち、記事も順調に増えてきました。そして、記事が増えることで新たに発見した使い方や、追加で欲しい機能が出てきて、日々楽しく試行錯誤をしています。

その一つが「最近の記事」のリストです。

一般的なブログには画面上のどこかに「最近の記事」セクションがあるものが多いですね。 PivotX では「最近のコメント」をリスト表示するタグはあるものの、記事に関してはありません。でも、 PivotX で避けては通れないタグのひとつ、 subweblog を使ってブログ内の記事リストの表示フォーマットを好みの形に指定できます。そして、複数の subweblog タグを使えば、メインの部分のリストにはタイトルと日付とイントロダクションを表示して、サイドバーには同じ記事のタイトルのリストだけを表示する、ということができ、「最近の記事」セクションを作ることができます。このやり方に関しては PivotX Support Forum でも取り上げられています(参照: “List of latest posts“)。

ただ、一つ注意しなくてはいけないのが、同じページの subweblog タグは、同じページングの影響を受ける、という点です。つまり上記の参照にあるような指定の仕方だと、トップページから「次のページへ」ボタンを押すと、もちろんメインの部分には次のx個の記事のリストが表示されますが、サイドバーのリストも次のx個の記事について表示されます。つまり「最近の記事」のつもりで作ったリストが全然最近ではなくなってしまうのです。

そこで上記の参照の例に追加して、最近のリストを表示するための subweblog タグに

ignorepaging="1"

というオプションを指定します。このオプションを指定することで、その subweblog タグの中身はページングの影響を受けず、常にリストの頭から表示されます。

2010年2月23日の時点で、PivotX のオンラインドキュメントでは ignoreoffset というオプションが掲載されていますが、このオプションは動作しません。PivotX Support Forum で確認したところ、どうやらこの記述は間違いのようですので、ignorepaging を使いましょう (参照: “How do you use the ignoreoffset option in subweblog?“)。

_sub_sidebar.htmlのお好みの場所に以下のコードを入れると、サイドバーに最近の記事のタイトルをリスト表示することができます。(*1)

注釈:

  1. recent という subweblog はデフォルトのテンプレートで指定されている standard とは別に定義しました。

文書に記述する際の説明用/例示用のドメイン名、IPアドレス、MACアドレス RFC6890,RFC5737,RFC3849,RFC2606,RFC6761,RFC7042 IANAなどなど

説明書などでドメイン名を例示するときに、 hoge とか foo とか bar とか chome などにを適当なTLDをつなげたり、最近ではTLDとして使ってしまうと自分のドメインでない場合や、自分のドメインでも更新しなかった場合などに問題になる可能性があります。IPアドレスもしかりです。そのままコピペされたり検索エンジンにインデックスされて他人に迷惑をかけないためにも、文書に記述するときに使ってよいドメイン名、IPアドレス、MACアドレス(EUI-48)が決まっています。

RFC6890によって RFC5735 はobsoleteにされました。(RFC5735によって RFC3330 はobsoleteにされました。参考: IPv4枯渇)

  • 2025-03-03 RFC9637追記
  • 2016-06-28 MACアドレス関連追記
  • 2013-10-11 RFC6890関連追記(Documentation用IPアドレスの変更はありません)
  • 2011-02-10 .lg.jp関連追記
  • 2011-01-26 .テスト などTLD関連追記
  • 2010-03-17 .jp関連追記
192.0.2.0/24192.0.2.0 – 192.0.2.255TEST-NET-1 (TEST-NET)RFC5737 RFC6890(RFC5735 RFC3330)
198.51.100.0/24198.51.100.0 – 198.51.100.255TEST-NET-2RFC5737
RFC6890(RFC5735 RFC3330)
203.0.113.0/24203.0.113.0 – 203.0.113.255TEST-NET-3RFC5737
RFC6890(RFC5735)
2001:db8::/322001:db8:: –
2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
Documentation PrefixRFC3849
RFC6890(RFC5156)
3fff::/203fff:: – 3fff:0fff:ffff:ffff:ffff:ffff:ffff:ffffDocumentation PrefixRFC9637 RFC3849
00-00-5E-00-53-00-00-5E-00-53-00 –
00-00-5E-00-53-FF
EUI-48 (MAC addresses) Documentation ValuesRFC7042 2.1.2 (2.1.1)
00-00-5E-EF-10-00-00- 他00-00-5E-EF-10-00-00-00 –
00-00-5E-EF-10-00-00-FF
EUI-64 (unmodified 64-bit MAC addresses) Documentation ValuesRFC7042 2.2.3
.testrecommended for use in testingTLDs for Testing, & Documentation ExamplesRFC2606 RFC6761
.测试(.XN–0ZWM56D)
.परीक्षा(.XN–11B5BS3A9AJ6G)
.испытание(.XN–80AKHBYKNJ4F)
.테스트(.XN–9T4B11YI5A)
.測試(.XN–G6W251D)
.பரிட்சை(.XN–HLCJ6AYA9ESC7A)
.δοκιμή(.XN–JXALPDLP)
.テスト(.XN–ZCKZAH)
.טעסט
(.XN–DEBA0AD)
.آزمایشی
(.XN–HGBK6AJ7F53BBA)
.إختبار
(.XN–KGBECHTV)
e.g.
ほげ.テスト
(xn--18j4d.xn--zckzah)
Reserved for testing internationalised domain namesRoot Zone Database
.examplerecommended for use in documentation or as examples
e.g. hoge.example
TLDs for Testing, & Documentation ExamplesRFC2606 RFC6761
.invalidintended for use in online construction of domain names that are sure to be invalidTLDs for Testing, & Documentation ExamplesRFC2606 RFC6761
.localhosthaving an A record(DNS) pointing to the loop back IP address and is reserved for such useTLDs for Testing, & Documentation ExamplesRFC2606 RFC6761
example.come.g.
hoge.example.com, example.com
Reserved Example Second Level Domain NamesRFC2606 RFC6761
example.nete.g.
hoge.example.net, example.net
Reserved Example Second Level Domain NamesRFC2606 RFC6761
example.orge.g.
hoge.example.org, example.org
Reserved Example Second Level Domain NamesRFC2606 RFC6761
example.jp
example0.jp
example1.jp

example9.jp
ドメイン名例.jp
(xn--eckwd4c7cu47r2wf.jp)
e.g.
hoge.example.jp, example7.jp,
ほげ.ドメイン名例.jp
(xn--18j4d.xn--eckwd4c7cu47r2wf.jp)
 汎用 JP ドメイン名における予約ドメイン名の3 JPRS FAQ
example.<属性ラベル>.jp
example0.<属性ラベル>.jp

example9.<属性ラベル>.jp
example.<市区町村ラベル>.<都道府県ラベル>.jp

example.<都道府県属性ラベル>.<都道府県ラベル>.jp

example.<市区町村属性ラベル>.<市区町村ラベル>.<都道府県ラベル>.jp

など詳細は右記技術細則にて
e.g.
hoge.example3.ed.jp,
example7.city.shibuya.tokyo.jp
 属性型(組織種別型)・地域型JPドメイン名登録等に関する技術細則の4.4 JPRS FAQ
example.lg.jp
example0.lg.jp

example9.lg.jp
e.g.
city.example8.lg.jp
 LG ドメイン名登録等に関する技術細則の3.4 JPRS FAQ

日経など:中国製「雷ガード」、発煙・発火12件 輸入元、無償交換へ

リコール情報を見てからぼちぼち探していましたが、昔気休め用に使ったのがいくつか有りました。もう使っていないので、新しいのをもらうよりも捨てる方がまだ地球に優しいでしょうか。

しかしPDFでお知らせするところが多いです。そんなアプリがあるんだとか、今そのバージョン使ってちゃだめじゃん、とかプロパティが面白いっちゃ面白いんですが。

本当は怖いtar

などと刺激的なタイトルをつけてしまいましたが、「ディレクトリトラバーサル」とか「GNU tarのsuper userでの展開時のumask」とかを思い起こす方が多いと思います。主に展開時に大きな問題になるそれらも重要なことなのはもちろんですが、基本も忘れずにしていないと作成時でも泣きをみるかもしれません。設定ファイルのバックアップを取ろうとしたとします。

深く考えずにやってしまいそうですが… umaskの確認をお忘れなく。/somewhere/が論理的に他人に読めず物理的にも安全な場所であれば完璧です。単純にsudoを設定すれば防げるという話でもなく、.profileや.cshrcでumaskを厳しく設定していても、普段自分だけがユーザの機械での作業をメインにされている方は他人の機械で作業しているときは忘れてしまうかもしれません。

のようにする癖が付いていれば、せっかく読めなくなっているファイル(例:/etc/master.passwdやら/etc/shadowやら)を他のユーザが読めてしまう危険が激減します。既存のファイルに追記する場合はモードの確認も必要です。

cpio, dd, zip, 普通にcp などなどなど、そしてWindowsも含めて暗号化ファイルシステム上のファイルをzipしたりコピーするときなどなどなど、コピー元が安全にしてあってもコピー先で読めてしまってはいけません。プログラミングでは一時ファイルを作成する際とかも関連事項です。当たり前すぎ?こりゃまた失礼いたしました。

迫るサポート期限

セキュリティ更新が原則ストップする予定日(予測日)

Windows 10 2004 2021-12-14 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 10 20H2 2022-05-10 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 10 21H1 2022-12-13 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 8.1 2023-01-10 マイクロソフト サポート ライフサイクル
ご存じですか? OS にはサポート期限があります!
Windows Server 2012/2012 R2 2023-10-10 など マイクロソフト サポート ライフサイクル
FreeBSD 12.x-RELEASE security branch 2024-06-30 http://security.freebsd.org/#sup
FreeBSD 13.x-RELEASE security branch 2026-01-31 http://security.freebsd.org/#sup
Ubuntu 20.04 LTS
Focal Fossa
2030-04 List of Releases
Ubuntu kernel release cycle
FreeBSD security branch http://security.freebsd.org/#sup
Internet Explorer Internet Explorer 11 desktop app retirement FAQ
Adobe製品 Supported Product Versions

終了したもの

Ubuntu 16.04 LTS
Xenial Xerus
16.04.5(16.04.1,16.04.0)
2021/4 List of Releases
16.04.x Ubuntu Kernel Support
Debian GNU/Linux
8 Jessie
LTS 2020/6/30
(2018/6/17)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianJessie
Windows Server 2008/2008 R2 2020/1/14 など マイクロソフト サポート ライフサイクル
Windows 7 最終SP 2020/1/14 など マイクロソフト サポート ライフサイクル
ご存じですか? OS にはサポート期限があります!
Ubuntu 14.04 LTS
Trusty Tahr
14.04.5(14.04.1,14.04.0)
2019/4 List of Releases
14.04.x Ubuntu Kernel Support
FreeBSD 10.4-RELEASE security branch 2018/10/31 http://security.freebsd.org/#sup
Firefox NPAPI plug-in support (ESR 52) ESR 2018/8(2018/5) NPAPI plug-in support…
FreeBSD 10.3-RELEASE security branch
(extended)
2018/4/30 https://www.freebsd.org/security/unsupported.html
Debian GNU/Linux
7 Wheezy
LTS 2018/5/31
(2016/4/26)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianWheezy
FreeBSD 11.0-RELEASE security branch 2017/11/30 https://www.freebsd.org/security/unsupported.html
Ubuntu 12.04 LTS
Precise Pangolin
12.04.5(12.04.1,12.04.0)
2017/4/28 List of Releases
12.04.x Ubuntu Kernel Support
Windows Vista 最終SP 2017/4/11 など サポートの終了とは
マイクロソフト サポート ライフサイクル
Firefox NPAPI plug-in support (51) 2017/3/7 Firefox 52… NPAPI plug-in support… NPAPI プラグイン のサポートは終了しました
FreeBSD 10.2-RELEASE security branch 2016/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 10.1-RELEASE security branch
(extended)
2016/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.3-RELEASE security branch
(extended)
2016/12/31 http://security.freebsd.org/#sup
Debian GNU/Linux
6 Squeeze
LTS 2016/2/29
(2014/5/31)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianSqueeze
Windows 8 2016/1/12 など マイクロソフト サポート ライフサイクル
FreeBSD 8.4-RELEASE security branch
(extended)
2015/8/1
2015/6/30
https://www.freebsd.org/security/unsupported.html
Windows Server 2003/2003 R2 最終SP 2015/7/14 サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 10.0-RELEASE security branch
(extended)
2015/2/28 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.2-RELEASE security branch
(extended)
2014/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.1-RELEASE security branch
(extended)
2014/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 8.3-RELEASE security branch (extended) 2014/4/30 https://www.freebsd.org/security/unsupported.html
Windows XP 最終SP 2014/4/8など サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 9.0-RELEASE security branch 2013/3/31
2013/1/31
https://www.freebsd.org/security/unsupported.html
FreeBSD 7.4-RELEASE security branch
(extended)
2013/2/28 https://www.freebsd.org/security/unsupported.html
FreeBSD 8.2-RELEASE security branch 2012/7/31
2012/2/29
https://www.freebsd.org/security/unsupported.html
FreeBSD 8.1-RELEASE security branch (extended) 2012/7/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 7.3-RELEASE security branch (extended) 2012/3/31 https://www.freebsd.org/security/unsupported.html
Debian GNU/Linux Lenny 2012/2/6 http://www.debian.org/News/2012/20120209
Windows Vista SP1 2011/7/12 サポートの終了とは
マイクロソフト サポート ライフサイクル
Windows Server 2008/2008 R2 SPなし 2011/7/12 マイクロソフト サポート ライフサイクル
FreeBSD 7.1-RELEASE security branch 2011/2/28
2011/1/31
https://www.freebsd.org/security/unsupported.html
Adobe Flash Player 9 2011/2/8 http://kb2.adobe.com/cps/406/kb406791.html
FreeBSD 8.0-RELEASE security branch 2010/11/30 https://www.freebsd.org/security/unsupported.html
FreeBSD 6.4-RELEASE security branch, 6-STABLE 2010/11/30 https://www.freebsd.org/security/unsupported.html
Windows XP SP2 2010/7/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
Windows 2000 2010/7/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 7.2-RELEASE security branch 2010/6/30
2010/5/31
https://www.freebsd.org/security/unsupported.html
Windows Vista SPなし 2010/4/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
Debian GNU/Linux Etch 2010/2/15 http://www.debian.org/News/2010/20100121
FreeBSD 6.3-RELEASE security branch 2010/1/31 http://security.freebsd.org/#sup

忍び寄るIPv4アドレス枯渇

またbogonが減ったそうです。The Team Cymru Bogon List IANA IPv4 Address Space Registry

逆に追加された 198.51.100.0/24 and 203.0.113.0/24 はIANAの出典をみると RFC5737 のことで、特別なアドレス領域をまとめていた RFC3330RFC5735 にobsoleteにされた(差分は最後の方のAppendix A)とのこと。パケットフィルタでbogonを自動更新で無く運用(=RESERVEDだけをフィルタ)されている方は変更すると幸せになれるかもしれません。自動更新でなく未割り当て領域をフィルタすると悲しいことになるのでだめですよー。

とはいえまだまだIPv4の空きはあるっちゃあるわけですが。(その後中央在庫無くなってます)

ご参考:文書に記述するときに使って良い説明用のドメイン名、IPアドレス

CodeZine:「動けばいいってもんじゃない」 脆弱性を作り込まないコーディング

良いタイトルですね。CodeZineの記事です:『脆弱性体質の改善』。『バッファーオーバーフロー等の脆弱性をうっかり作り込んでしまったがために、数千万円ものコストをかけて、ユーザに告知し、製品を回収して、工場でファームウェアをアップデートする事態に陥ったり、あるいは脆弱性を放置してユーザを危険にさらし、それが明るみに出て「世間を騒がす」ことになったりしなくても済むように』を読んでぐっと来ました。不景気だからと「とにかく安い」や「オフショアにやらせとけ」で痛い目に遭ってる人がいるんですよー、と。もっとも安くないところに頼んでも、スタートインから何週間も動かなかったり、ウィルス撒いたりしてしまうところもあるようなので、こういう啓蒙活動は良いことです。もちろん単なる脅しではなく、かつ内容が正確である必要があります。

ポインタの加減算での誤り、本当に言語仕様ならではの誤りです。エンベッドの世界、高速に動作させなければいけないプログラムを作るとき、いろいろなOSで動作させなければいけないプログラムを使うときなどなど、高級言語として比較的機械語寄りのことができる思想のCはバリバリの現役で進化を続けています。記事はまだ2回目、続きも期待して待ってます。

ばっちり書けてますかhref= 特に&(&amp;)などを含む場合 属性値としてのCDATA

<a href=”xxx”>や、<param name=”FlashVars” value=”xxx”>のxxxに&(ampersand アンパサンド)が含まれる場合、正しい書き方ができていますでしょうか?


追記(2016/8/31)

最近ではAccelerated Mobile Pages(AMP)を有効にするパラメータとして本当にampが使われてamp=1とかを利用するプラグインなどが出てきました。今時ではXHTMLも使わないでしょうし&amp + ;以外の記号 でもエラー部分を消さずに &amp;amp + ;以外の記号 相当とみなしてパースが進行するようになっているので気にする必要もないかもしれません。

  • <link rel=”amphtml” href=”/hoge?amp=1″ /> OK
  • <link rel=”amphtml” href=”/hoge?param1=1&amp;amp=1″ /> OK
  • <link rel=”amphtml” href=”/hoge?param1=1&amp=1″ /> NG

とはいえ、amphtml以外のpathが/ampで終わらないようにできるのであれば、 /amp を query string の amp=1 に、例えばmod_rewriteならば

のようにwebサーバ側でrewiteする方が気にすることも減って無難かもしれません。

追記終了


複数の変数/パラメータを渡したい場合、その変数/パラメータの名前がampだったり、値に&が含まれている場合を考えていきます。

書くまでも無い当たり前なネタなのかもしれませんが、AdobeサイトのFlashVars解説にも誤記が あったり、「表示」⇒「ページのソース」だけで学んでいる人は気づかなかったりするかもしれないので、関連仕様書を一まとめにしておく意味でも書いておき ます。大きな問題であるわけでもなく気にしなければしないですませられますが、実体参照と同じ名前の変数を使いたい場合のように機能的に困る場合があります。


クイズです。次のHTMLをノートパッドなどのテキストエディタで作成してhoge.html等適当な名前で保存します。

次にこのファイルをお好きなwebブラウザでこのHTMLファイルを開き、アンカーのリンク先を右クリック等ででクリップボードにコピーし、テキストエディタにペーストします。どうなるか予想できましたでしょうか。

Windowsの実験機で試した結果は以下の通りです。

FF3⇒notepad file:///?hoge=123&=567
Safari4⇒notepad file:///?hoge=123&=567
Opera10⇒notepad file://localhost/?hoge=123&=567
IE8⇒notepad file:///D:/?hoge=123&=567
IE7⇒notepad file:///D:/?hoge=123&=567
IE6⇒notepad file:///D:/?hoge=123&=567
IE5.5⇒notepad file:///D:/?hoge=123&=567

hostのあるものやpathにドライブのあるものなどいろいろ面白いですが、今回の本題は123の右です。どこにもampがありません。これは「不幸に も多くのHTMLユーザエージェントは変な実体参照でも適当に問題をシカトして先に進んでしまう。(下記参照)」からです。&amp=の部分を& amp;quot=や&copy=などに変えたり、先頭に

を付けたりして(ローカルのファイルでもXML宣言を見てこれをエラーにするブラウザは有りましたか?)いろいろ試してみてください。quotやcopy等では&すら出てこなくなるので間違いにすぐに気づくかもしれません。今まで気づいていなかった方にはとても違和感があるかもしれませんが、パラメータampに値567を渡したい場合の正解は

になります。Flash PlayerにFlashVarsを<object>の中の<param>で渡したい場合はどうでしょうか。HTMLやXHTMLの世界での話なので、変数p1,p2,ampにそれぞれ値を渡したい場合は

といったものが正しい書き方になります。あとは=前後の%エンコード(Percent-Encoding)(FlashVarsの説明ではURL encodingと書かれていますが、各種のURLencode()のような関数やapplication/x-www-form-urlencodedで使われるエンコードではあの記号はそのまま、この記号は%エンコードという奇々怪々な仕組みも含まれる場合があるので素直に%エンコードと呼び、かつFlashVarsの値はECMAScriptのencodeURIComponent()相当の符号化、つまりUTF-8以外の場合はUTF-8に変換をしてから英数以外は積極的に%エンコードする、というのがさまざまな場合で無難だと思います)もお忘れなく。具体的にはもしFlashVarsで変数p1,p2,ampに&が含まれている値を渡したい場合は次のようになります。(%26はUS- ASCIIのスーパーセットの文字セット-文字符号化では&になります。)

変数側に記号を入れてみたりするのも面白いかもしれません(例外的にNULは文字列終端扱いである模様で、例えば

ではswfのhogeにheroが渡されました。実装された詳細仕様は不明です)。href=での%エンコードの話は、サーバ側、アプリケーション側がどうなっているかに依存する、つまりwebサーバやアプリケーションサーバ、CGIもからんできて、単純にこうだとは書くことができません。

では

のように、HTMLとしては期待されていない処理を誘発し、XHTMLとしてはエラーになる属性値(value=の部分)の場合、swfに何が渡ってくるでしょうか(IEはobject要素がparam以外の要素を持てないのでコメント要素は取り除きます)。Flash Player 10.0.42.34との組み合わせで以下の通りです。もっとも、HTMLを解釈してFlash Playerに渡すまでの作業はwebブラウザ(HTMLユーザエージェント、HTMLパーサ)の仕事であり、もしFlash Playerのバージョンで変わるとすればそれはFlashVars自体の仕様の変化となります。また、XHTMLとしてちゃんとエラー扱いになった場合はそもそもFlash Playerが起動しません。

FF3 swfのampの内容は空
Safari4 swfのampの内容は空
Opera10 swfのampの内容は空
IE8 swfのampの内容は空

同時に&amp;amp=bazで正しくswfのampにbazが渡ってくること、そして残念ながら世の中に氾濫している&xxx=bazでも、エラー扱いではなくかつxxxが文字実体参照や数値文字参照にぶつかっていないものはbazが渡ってくることも確認しました。上の href=と同じ状況で予想通りです。

ところでこれはHTMLやXHTMLの世界での話なので、HTML内での記述ではなくて別の外部ファイル(.js等)に分けて、

などで提供される分にはまったく当てはまりません。パラメータhoge,p1,p2,ampにそれぞれ値を渡したい場合はそのまま

というような文字リテラルでOKです。

HTML内でのonclick=などの属性値ではContent-Script-Typeがapplication/javascript(text/javascript)の場合

のようになります。<script>で記述する場合は内容モデルがHTMLではCDATA, XHTMLでは#PCDATA(下記参照)という別な話が登場して終わらなくなってしまいますので機会があれば別途。とにかく外部ファイルにしてしまうと 決めていれば稀な場合でも大きな問題にならないはずです。

優れたバリデータは文法エラーは当然のこと、誤った処理をさせる部分を検出して警告してくれるので活用されると良いかもしれません。

なお、弊社遊び場の中のFlashアプリの ページでは、ActiveX用とNetscape式plugin用さらにはSWFObject用に同じパラメータを何度も書かなければいけないという問題 とSWFObjectだけではJavaScript依存にしてしまうという問題を解決し、かつActiveXでなくても古いFlash Playerが入っていればExpress Installationが起動するというちょっと素敵なやり方をしています。機会があればご紹介します。

長くなりましたが、以下に根拠となる仕様書(一部ですが)のリンクと、簡単な説明をまとめてみました。ぜひご自身でも読み解いて、上に書かれていることが本当か確認してください。間違いがあったらぜひコメントをお願いします。

<param>要素のvaue=属性の値に関する仕様書の一部の超訳

<a>要素,<link>要素のhref=属性の値に関する仕様書の一部の超訳

属性値の場合のCDATAに関連する仕様書の一部の超訳

  • HTML 4.01:CDATAは文書文字集合のシーケンスで、文字実体を含むことができる。ユーザエージェントは属性値を次のように解釈するべきである。文字実体を文字で置きかえる。LFを無視する。CRやTABは各々SPに置き換える。: http://www.w3.org/TR/1999/REC-html401-19991224/types.html#h-6.2
  • HTML 4.01(SGML tutorial):属性値はダブルクォートかシングルクォートで括る。決められた文字だけの場合は括らなくてもいいけど。数値文字参照を利用し て"でダブルクォート、'でシングルクォートを値に含められるし、ダブルクォートで括られている場合は文字実体参照を利 用して&quot;でシングルクォートを値に含められる。: http://www.w3.org/TR/1999/REC-html401-19991224/intro/sgmltut.html#h-3.2.2
  • XML 1.0: ダブルクォートかシングルクォートで括る。<と&と括り始めのクォート以外の文字、あるいは「参照」で構成される。: http://www.w3.org/TR/2008/REC-xml-20081126/#NT-AttValue
  • XML 1.0: 参照は、実体参照(例:&quot;)か、文字参照(例:",")である。: http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Reference
  • XHTML 1.0: SGMLでもXMLでも&(ampersand character)は実体参照の開始宣言であるが、不幸にも多くのHTMLユーザエージェントは変な実体参照でも問題をシカトして先に進んでしまう。 XMLユーザエージェントはこの不正な使用を認められない: http://www.w3.org/TR/2002/REC-xhtml1-20020801/#C_12
  • HTML 5 (右は訳ではなくて注釈):今までのHTMLではそのものすばりと書かれていなかったようだけど、ついにどうやって間違った文法(前出のHTMLの場合で は&amp=を&ampy=にしたり、&copy=を&copydayo=にするといった悲しくも不正な回避方法が使わ れてしまった場合)をパースし続けるかが定義(恐るべし膨大なレガシー資産パワー!)される模様。: (このリンク先はレンダリングするのに結構リソース消費します。クリックするときは注意してください)http://dev.w3.org/html5/spec/Overview.html#tokenizing-character-references

<script>要素に関する仕様書の一部の超訳(参考)

要素内容の場合のCDATAに関連する仕様書の一部の超訳(参考)

Adobe.comでの説明(頻繁にURLが変わりpermalinkも無いのでたまに修正していますがリンク切れの場合がしょちゅうあります)(参考) (サンプルは適切でないです。修正されることはなさそうです。)

  • TechNote (Knowledge Base): <PARAM NAME=FlashVars VALUE=”foo=Hello%20Worldgraph=first+line%0Dsecond+line”> の部分はおそらく VALUE="foo=Hello%20World&amp;paragraph=first+line%0Dsecond+line" の意図で書かれたものと思われますが、graphの前に&すらなくなってしまっているのでサンプルの意味がとてもあいまいになってしまっています(2010/1/14時点)。Macromediaからのお引っ越しの際にでも発生したエラーでしょうか: Using FlashVars to pass variables to a SWF
  • Flex 4: この説明文の<param>等のHTMLでFlashVarsを使用しているもののうち、&lastname=の部分(2010/1 /14時点)は、勝手にlastnameが文字実態参照に使われないことを暗黙のうちにリザーブしています。lastname部分をampやquotやcopyやnbspやltやgtや…にした場合は動作しないことを記載するか、あるいは普通にXHTMLでもHTMLでもampやquotやcopyという変数を渡したいときでも百万が一にも文字実体参照に&lastname;が追加された場合も使えるサンプルにするためにも、&amp;lastname=を使用するのが妥当と考えられます: Passing request data with flashVars properties – Communicating with the wrapper
  • Developer Connection: ユーザの入力を動的にFlashVarsに渡すような場合、%エンコードすることの重要性やURLのような場合はスキーマやホストの確認なども重要であることが書かれています。一読をお勧めします。: Creating more secure SWF web applocations

2010/4/13 文章校正(項目の順序入れ替え)

検体送付先/誤検知連絡先メモ

おそらくまとめていらっしゃる方はたくさんいらっしゃると思いますが、DIY精神でメモメモ。

ドイツ語やらロシア語やら交じりのメイルが返ってきて、ファンタジーな感じです。

unbel32とKaspersky

2010/01/10日曜日のKasperskyさんの完全スキャンが実験機のC:\WINDOWS\System32\unbel32.dll(sha1:53ab09116a18b8387cf8574739ae8cf93fdd1d5a, md5:32ed3e6eb5df06067596c80a3f316eed, size:52224)をTrojan.Win32.Agent.dffbと判定したので、false alarmでしょうが念のためquarantineしておきました。Belonを扱うことがないので放置で良いといえば良いのですが…2日たっても隔離から復元できずにtrojan扱いなので、さすがに既に報告してくれた人もいらっしゃるでしょうが他人任せではいかんよと思い直してKaspersky Labに報告。夜に返事が来ていて確かに誤検出で次のアップデートで直るとのこと。遅くとも2010/1/13 8:36(+0900 JST)のリリースまででの修正を確認。すばやい対応ですね。以降最新のKasperskyの定義データベースでも検出された場合は本当にtrojanかもしれませんよ。これとは関係ないですがKasperskyさんのvulnerability検出はとても便利で役に立ってます。いやまじで。

注意: unbel32.dllの安全性を保証するものでは有りません。またファイル名だけで誤検知を判断するのはとても危険なので(当たり前ですが)ハッシュとサイズの両方での確認が必須です。

2010/1/13 17:48追記 念のためKasperskyさん以外にも一応連絡。Comodoさんは「false alarmでは『ない』」とのこと。

2010/1/14 9:31追記 Comodoさん、結局検知しなくなりましたね…ヒューリスティクスとしては検出して正解だ、という意味に受け取るべきなのかもしれませんが、うーむ。製品ユーザではないからでしょうか、返事の返事はいただけませんでした。

Kasperskyさんのお返事はこんな感じ。

2010/1/15 7:00追記 2010/1/15 6:51(+0900 JST)現在、VirusTotalで検出されなくなりました。VBA32は遅くとも3.12.12.1/20100114までに対応してくれたようです。使っていないので詳細は知りませんが、3.12.12.1は定義ではなくてエンジンのバージョンでしょうか。

2010/1/14 9:31追記 VirusTotalさんに伺った2010/1/14 7:05(+0900 JST)現在での検出状況。ほぼ消えました。VirusBlockAdaさんからも調べてから近いうちにアップデートするね、とお返事来てるので3.12.12.1でなくなったら消えるでしょうか。

というわけでVirusTotalさんに伺った2010/1/13 10:55(+0900 JST)現在の検出状況。過去の誤検出を悪用してその名前をmalwareに使うような悪い人もいるでしょうから、ファイル名だけで誤検出を確認するのはとても危険です。あたりまえながら。ハッシュをサイズとともに有効活用してください。