"第一通信用機器及び第二通信用機器が接続される通信装置であって、第一通信用機器を制御する第一制御部と、第二通信用機器を制御する第二制御部と、データの送信先が前記第一通信用機器であるか前記第二通信用機器であるかに応じて、前記第一制御部と前記第二制御部とのいずれにデータを転送するか判断し、判断した先に前記データを転送する選択部と、を備え、前記第一制御部は、ネイティブコードで実装されており、前記第二制御部は、前記ネイティブコードに依存しないコードで実装されている通信装置。前記第一制御部は、前記選択部から前記データの転送を受けると、前記第一通信用機器を制御し前記データを通信路へ送信し、前記第二制御部は、前記選択部から前記データの転送を受けると、前記第二通信用機器を制御し前記データを通信路へ送信する、請求項1に記載の通信装置。前記選択部は、前記第一通信用機器が通信する相手である第一対向端末のアドレスと前記第一制御部の識別情報とを対応付けて記憶し、前記選択部はさらに、前記第二通信用機器が通信する相手である第二対向端末のアドレスと前記第二制御部の識別情報とを対応付けて記憶し、前記データの送信先のアドレスに対応する識別情報が示す制御部を前記データの転送先と判断する請求項1又は2に記載の通信装置。ネイティブコードで実装されたコンピュータプログラムであって、第一通信用機器及び第二通信用機器が接続される通信装置に対し、第一通信用機器を制御する第一制御ステップと、データの送信先が前記第一通信用機器であるか前記第二通信用機器であるかに応じて、前記第一制御ステップと、前記ネイティブコードに依存しないコードで実装され前記第二通信用機器を制御する第二制御ステップとのいずれにデータの処理を実行させるか判断し、判断した先に前記データの処理を実行させる選択ステップと、を実行させるためのコンピュータプログラムである。複数のOSやディストリビューション毎にデバイスドライバを用意するためには、デバイスドライバの開発や配布など、事業者にとって大きな負担になってしまうという問題があった。上記事情に鑑み、本発明は、通信用機器を制御して対向装置と通信するためのプログラムの開発や配布に要する労力を低減できる技術を提供することを目的としている。本発明の一態様は、第一通信用機器及び第二通信用機器が接続される通信装置であって、第一通信用機器を制御する第一制御部と、第二通信用機器を制御する第二制御部と、データの送信先が前記第一通信用機器であるか前記第二通信用機器であるかに応じて、前記第一制御部と前記第二制御部とのいずれにデータを転送するか判断し、判断した先に前記データを転送する選択部と、を備え、前記第一制御部は、ネイティブコードで実装されており、前記第二制御部は、前記ネイティブコードに依存しないコードで実装されている。本発明の一態様は、上記の通信装置であって、前記第一制御部は、前記選択部から前記データの転送を受けると、前記第一通信用機器を制御し前記データを通信路へ送信し、前記第二制御部は、前記選択部から前記データの転送を受けると、前記第二通信用機器を制御し前記データを通信路へ送信する。本発明の一態様は、前記選択部は、前記第一通信用機器が通信する相手である第一対向端末のアドレスと前記第一制御部の識別情報とを対応付けて記憶し、前記選択部はさらに、前記第二通信用機器が通信する相手である第二対向端末のアドレスと前記第二制御部の識別情報とを対応付けて記憶し、前記データの送信先のアドレスに対応する識別情報が示す制御部を前記データの転送先と判断する。本発明の一態様は、ネイティブコードで実装されたコンピュータプログラムであって、第一通信用機器及び第二通信用機器が接続される通信装置に対し、第一通信用機器を制御する第一制御ステップと、データの送信先が前記第一通信用機器であるか前記第二通信用機器であるかに応じて、前記第一制御ステップと、前記ネイティブコードに依存しないコードで実装され前記第二通信用機器を制御する第二制御ステップとのいずれにデータの処理を実行させるか判断し、判断した先に前記データの処理を実行させる選択ステップと、を実行させるためのコンピュータプログラムである。本発明により、通信用機器を制御して対向装置と通信するためのプログラムの開発や配布に要する労力を低減することが可能となる。図1は、通信システム1のシステム構成を表すシステム構成図である。通信システム1は、通信装置10、第一対向端末40、第二対向端末50を備える。通信装置10と第一対向端末40とは、有線通信又は無線通信により双方向通信を行う。通信装置10と第二対向端末50とは、有線通信又は無線通信により双方向通信を行う。第一対向端末40及び第二対向端末50は、いずれも情報処理装置であり、例えばパーソナルコンピュータ、サーバ、スマートフォン、携帯電話機などである。第一対向端末40及び第二対向端末50は、情報処理装置を内部に備えた家電機器や周辺機器であっても良く、例えばプリンタ、ファイルサーバ、テレビ受像機、電話機、ゲーム機器などであっても良い。通信装置10は、第一対向端末40及び第二対向端末50と通信可能な装置であり、例えばルーター等の中継装置であっても良いし、パーソナルコンピュータやスマートフォン等の情報処理装置であっても良い。より具体的には、通信装置10は、ホームゲートウェイ等のように事業者通信網と宅内通信装置との間でデータの中継を行う装置であっても良い。以下、通信装置10がデータの中継を行う装置として構成されている場合について説明する。この場合、第一対向端末40及び第二対向端末50は、いずれも宅内通信装置である。第一対向端末40及び第二対向端末50は、通信装置10によって割り当てられたIPアドレスを用いて事業者通信網に接続する。ただし、上述のように、このような構成は通信システム1の構成の一例に過ぎず、他のように構成されても良い。通信装置10は、バスで接続されたCPUCentralProcessingUnitやメモリや補助記憶装置や第一HWHardWare101及び第二HW102などを備える。第一HW101及び第二HW102はいずれも通信用機器である。通信装置10は、CPUによって制御プログラムを実行することによってNative20及びJVMJava登録商標VirtualMachine30を備える装置として機能する。なお、通信装置10のNative20上で動作する各機能L3通信制御部201、選択部202、第一L2通信制御部203、第一HW制御部204は、ASICApplicationSpecificIntegratedCircuitやPLDProgrammableLogicDeviceやFPGAFieldProgrammableGateArray等のハードウェアを用いて実現されても良い。制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。通信装置10の機能のうち、第二L2通信制御部302及び第二HW制御部303を実現するためのコンピュータプログラムは、他の機能を実現するためのコンピュータプログラムと別のプログラムとして構築されても良い。同様に、アプリケーション実行部301を実現するためのコンピュータプログラムも、他の機能を実現するためのコンピュータプログラムと別のプログラムとして構築されても良い。第一HW101は、通信インタフェースとして通信装置10に接続されている装置であり、第一対向端末40と通信する。第一HW101は、例えばUSBUniversalSerialBus等どのような形態で通信装置10に接続されても良い。第一HW101を制御する第一HW制御部204は、Native20上で動作する。第一HW101は、例えば有線LANLocalAreaNetworkや無線LAN等の通信インタフェースである。第二HW102は、通信インタフェースとして通信装置10に接続されている装置であり、第二対向端末50と通信する。第二HW102は、例えばUSB等どのような形態で通信装置10に接続されても良い。第二HW102を制御する第二HW制御部303は、JVM30上で動作する。第二HW102は、例えばZigBee登録商標やWiGigWirelessGigabit等の通信インタフェースである。Native20は、通信装置10のOSOperatingSystemに依存した言語ネイティブコード:NativeCodeで開発された機能を動作させる環境である。Native20上では、L3通信制御部201、選択部202、第一L2通信制御部203、第一HW制御部204が動作する。Native20上で動作する各機能は、例えばCやC等の言語で記述されてコンパイルされたネイティブコードがCPUによって直接実行されることによって実現される機能である。そのため、これらの機能は、JVM30上で動作する各機能よりも高速に動作することが可能である。一方、これらの機能はOSやディストリビューション毎に開発する必要があるため、開発にコストや期間を要する。L3通信制御部201は、OSI参照モデルOSIReferenceModelの第三層のデータに基づいてデータの行き先を判断し、判断した行き先にデータを転送する。OSI参照モデル第三層のデータとは、例えばIPアドレスである。また、転送されるデータとは、例えばパケットである。選択部202は、OSI参照モデルの第三層のデータと第二層のデータとL2通信制御部識別情報とを関連づけたアドレステーブルを記憶している。選択部202は、アドレステーブルの内容に基づいてデータの行き先を判断し、判断した行き先にデータを転送する。言い換えれば、選択部202は、データに対して実行される次の処理を判断し、判断した先にデータの処理を実行させる機能である。OSI参照モデル第二層のデータとは、例えばMACアドレスMediaAccessControladdressである。L2通信制御部識別情報とは、L2通信制御部を識別するための情報であり、第一L2通信制御部203と第二L2通信制御部302に対して重複しないように割り当てられた情報である。第一L2通信制御部203は、OSI参照モデルの第二層に関する制御を行う。第一HW制御部204は、第一HW101を制御する。具体的には、第一HW制御部204は、第一HW101によって第一対向端末40から受信されたデータを、第一L2通信制御部203へ転送する。また、第一HW制御部204は、第一L2通信制御部203から転送されてきたデータを、第一HW101を制御することによって第一対向端末40へ送信する。Native20には、事業者通信網と通信をするための機能も設けられても良い。これらの機能は既知の構成であるため、図示及び説明を省略する。JVM30は、通信装置10のOSに依存しない言語であるJAVA登録商標で開発された機能を動作させる環境である。JVM30上では、アプリケーション実行部301、第二L2通信制御部302、第二HW制御部303が動作する。JVM30上で動作する各機能は、JAVA登録商標で記述されてコンパイルされたコードが、JAVA登録商標仮想マシン上で実行されることによって実現される機能である。そのため、これらの機能は、Native20上で動作する各機能よりも動作速度が遅くなる場合がある。一方、これらの機能は、複数のOSやディストリビューションに対して共通に開発することが可能であるため、開発に要するコストや期間を抑えることができる。アプリケーション実行部301は、第一対向端末40や第二対向端末50との間で通信の発生を伴う処理を行うアプリケーションである。第二L2通信制御部302は、OSI参照モデルの第二層に関する制御を行う。第二HW制御部303は、第二HW102を制御する。具体的には、第二HW制御部303は、第二HW102によって第二対向端末50から受信されたデータを、第二L2通信制御部302へ転送する。また、第二HW制御部303は、第二L2通信制御部302から転送されてきたデータを、第二HW102を制御することによって第二対向端末50へ送信する。図2は、通信装置10における前処理の流れを表すフローチャートである。まず、第二L2通信制御部302が、第二HW102と第二対向端末50との間で通信路を接続するステップS101。この接続処理において、第二L2通信制御部302は、第二対向端末50のMACアドレスを第二対向端末50から受信する。次に、第二L2通信制御部302が、第二対向端末50のMACアドレスを選択部202へ転送するステップS102。選択部202は、第二対向端末50のMACアドレスを、MACアドレスの通知元である第二L2通信制御部302のL2通信制御部識別情報と対応付けてアドレステーブルに登録するステップS103。選択部202は、MACアドレス及びL2通信制御部識別情報の登録を完了すると、L3通信制御部201へ登録完了を通知する。L3通信制御部201は、MACアドレスがアドレステーブルに登録された第二対向端末50に対し、IPアドレスを割り当てるステップS104。L3通信制御部201は、第二対向端末50に対して割り当てたIPアドレスを、選択部202に通知する。選択部202は、第二対向端末50に割り当てられたIPアドレスを、MACアドレス及びL2通信制御部識別情報に対応付けてアドレステーブルに登録するステップS105。選択部202は、第二対向端末50に割り当てられたIPアドレスを、第二L2通信制御部302、第二HW制御部303、第二HW102を介して、第二対向端末50に対し通知する。図2のフローチャートには第二HW102、第二HW制御部303、第二L2通信制御部302による処理が示されているが、第一HW101、第一HW制御部204、第一L2通信制御部203も同様の処理を行う。この処理によって、第一対向端末40に対してIPアドレスが割り当てられるとともに、選択部202のアドレステーブルに第一対向端末40のMACアドレス及びIPアドレスと、第一L2通信制御部203のL2通信制御部識別情報とが登録される。このように、L3通信制御部201によってIPアドレスが割り当てられ、アドレステーブルにMACアドレスとIPアドレスとL2通信制御部識別情報とが対応付けて登録されることによって、第一対向端末40及び第二対向端末50は通信装置10と通信することが可能となる。図3は、第一対向端末40又は第二対向端末50から通信装置10へ向けた通信以下、上り通信という。の処理の流れを表すフローチャートである。以下の説明では、第一対向端末40及び第二対向端末装置50の区別が必要無い場合には、単に対向端末と記載する。同様に、第一HW101及び第二HW102、第一HW制御部204及び第二HW制御部303、第一L2通信制御部203及び第二L2通信制御部302のそれぞれについて区別が必要無い場合には、単にHW、HW制御部、L2通信制御部と記載する。まず、対向端末が通信装置10のIPアドレス宛にデータの送信を開始するステップS201。次に、データを送信した対向端末に対応するHWがデータを受信するステップS202。すなわち、データを送信したのが第一対向端末40であれば、第一HW101がデータを受信する。データを送信したのが第二対向端末50であれば、第二HW102がデータを受信する。次に、HWが、自身に対応するHW制御部にデータを転送するステップS203。すなわち、データを受信したのが第一HW101であれば、第一HW101は第一HW制御部204へデータを転送する。また、データを受信したのが第二HW102であれば、第二HW102は第二HW制御部303へデータを転送する。次に、HW制御部が、自身に対応するL2通信制御部にデータを転送するステップS204。すなわち、データを受けたのが第一HW制御部204であれば、第一HW制御部204は第一L2通信制御部203へデータを転送する。また、データを受けたのが第二HW制御部303であれば、第二HW制御部303は第二L2通信制御部302へデータを転送する。L2通信制御部は、受信したデータを選択部202へ転送するステップS205。次に、選択部202がデータをL3通信制御部201へ転送するステップS206。次に、L3通信制御部201が、データをアプリケーション実行部301に転送するステップS207。そして、アプリケーション実行部301が、受信したデータを処理するステップS208。以上の処理によって、対向端末から通信装置10へ向けたデータ送信処理が完了する。なお、図3に示された処理は、対向端末が通信装置10を介して事業者通信網へデータを送信する場合にも実行される。図4は、通信装置10から対向端末へ向けた通信以下、下り通信という。の処理の流れを表すフローチャートである。まず、アプリケーション実行部301が、データの送信先となる対向端末のIPアドレスに基づいて送信処理を開始するステップS301。この処理において、アプリケーション実行部301は、データをL3通信制御部201に転送する。次に、L3通信制御部201が、選択部202にデータを転送するステップS302。次に、選択部202がデータの送信先のIPアドレスをヘッダから取得する。選択部202は、取得したIPアドレスに対応するMACアドレス及びL2通信制御部識別情報を、アドレステーブルから取得する。選択部202は、取得したL2通信制御部識別情報に対応するL2通信制御部を、データの転送先と判断するステップS303。そして、選択部202は、転送先と判断したL2通信制御部に対しデータを転送するステップS304。次に、L2通信制御部が、自身に対応するHW制御部にデータを転送するステップS305。すなわち、データを受けたのが第一L2通信制御部203であれば、第一L2通信制御部203は第一HW制御部204へデータを転送する。また、データを受けたのが第二L2通信制御部302であれば、第二L2通信制御部302は第二HW制御部303へデータを転送する。次に、HW制御部が、自身に対応するHWにデータを転送するステップS306。すなわち、データを受けたのが第一HW制御部204であれば、第一HW制御部204は第一HW101へデータを転送する。また、データを受けたのが第二HW制御部303であれば、第二HW制御部303は第二HW102へデータを転送する。次に、HWが通信路を介してデータを送信するステップS307。そして、データを送信したHWに対応する対向端末が、通信装置10からデータを受信するステップS308。すなわち、データを送信したのが第一HW101であれば、第一対向端末40がデータを受信する。データを送信したのが第二HW102であれば、第二対向端末50がデータを受信する。以上の処理によって、通信装置10から対向端末へ向けたデータ送信処理が完了する。なお、図4に示された処理は、事業者通信網から対向端末宛のデータを通信装置10が受信した場合にも実行される。この処理の実行により、事業者通信網からのデータが、その宛先である対向端末によって受信される。図5は、通信装置10を介して対向端末同士が通信する際の処理の流れを表すフローチャートである。図5は、特に第二対向端末50から第一対向端末40へデータが送信される際の処理の流れを表す。第一対向端末40から第二対向端末50へのデータ送信時の処理も、同様の処理が行われる。まず、第二対向端末50が、送信先となる第一対向端末40のIPアドレスを送信先に設定したデータを送信するステップS401。第二対向端末50から送信されたデータは、選択部202まで転送されるステップS402。具体的には以下のとおりである。まず、第二対向端末50に対応する第二HW102がデータを受信する。次に、第二HW102が、自身に対応する第二HW制御部303へデータを転送する。次に、第二HW制御部303が、自身に対応する第二L2通信制御部302へデータを転送する。そして、第二L2通信制御部302が、選択部202へデータを転送する。次に、選択部202がデータの送信先のIPアドレスをヘッダから取得する。この場合、送信先のIPアドレスは、第一対向端末40のIPアドレスである。選択部202は、取得したIPアドレスに対応するMACアドレス及びL2通信制御部識別情報を、アドレステーブルから取得する。この場合、取得されるMACアドレスは第一対向端末40のMACアドレスであり、取得されるL2通信制御部識別情報は第一L2通信制御部203の識別情報である。選択部202は、取得したL2通信制御部識別情報に対応する第一L2通信制御部203を、データの転送先と判断するステップS403。そして、選択部202は、転送先と判断した第一L2通信制御部203に対しデータを転送するステップS404。次に、第一L2通信制御部203が、自身に対応する第一HW制御部204にデータを転送するステップS405。次に、第一HW制御部204が、自身に対応する第一HW101にデータを転送するステップS406。次に、第一HW101が通信路を介してデータを送信するステップS407。そして、データを送信した第一HW101に対応する第一対向端末40が、通信装置10からデータを受信するステップS408。図6は、通信装置10のアプリケーション実行部301がブロードキャスト送信を行う場合の処理の流れを表すフローチャートである。まず、アプリケーション実行部301が、ブロードキャストアドレス宛にデータの送信を開始するステップS501。この処理において、アプリケーション実行部301は、データをL3通信制御部201に転送する。次に、L3通信制御部201が、データの送信先であるIPアドレスがブロードキャストアドレスであること及びアプリケーション実行部301からデータを受信したことに応じて、データを選択部202及びアプリケーション実行部301に転送するステップS502。アプリケーション実行部301は、受信したデータを処理するステップS503。一方、選択部202は、データの送信先のIPアドレスをヘッダから取得する。この場合、送信先のIPアドレスはブロードキャストアドレスである。取得したIPアドレスがブロードキャストアドレスであり且つL3通信制御部201からデータを受信した場合、選択部202は全てのL2通信制御部をデータの転送先として判定するステップS504。本実施形態では、L2通信制御部が二つ第一L2通信制御部203及び第二L2通信制御部302あるため、選択部202はデータの転送先をこの二つのL2通信制御部であると判定する。そして、選択部202は、転送先と判断した第一L2通信制御部203及び第二L2通信制御部302に対しデータを転送するステップS505。次に、第一L2通信制御部203が、自身に対応する第一HW制御部204にデータを転送するステップS506。次に、第一HW制御部204が、自身に対応する第一HW101にデータを転送するステップS507。次に、第一HW101が通信路を介してデータを送信するステップS508。そして、データを送信した第一HW101に対応する第一対向端末40が、通信装置10からデータを受信するステップS509。第二L2通信制御部302、第二HW制御部303、第二HW102及び第二対向端末50についても同様である。すなわち、第二対向端末50は、第二L2通信制御部302、第二HW制御部303及び第二HW102を経由したデータを受信する。なお、図6に示された処理は、通信装置10が事業者通信網からブロードキャストアドレス宛のデータを受信した場合にも実行される。図7は、第二対向端末50がブロードキャストを行う場合の処理の流れを表すフローチャートである。まず、第二対向端末50が、ブロードキャストアドレス宛にデータの送信を開始するステップS601。第二対向端末50から送信されたデータは、選択部202まで転送されるステップS602。具体的には以下のとおりである。まず、第二対向端末50に対応する第二HW102がデータを受信する。次に、第二HW102が、自身に対応する第二HW制御部303へデータを転送する。次に、第二HW制御部303が、自身に対応する第二L2通信制御部302へデータを転送する。そして、第二L2通信制御部302が、選択部202へデータを転送する。選択部202は、データの送信先のIPアドレスをヘッダから取得する。この場合、送信先のIPアドレスはブロードキャストアドレスである。取得したIPアドレスがブロードキャストアドレスであり且つL2通信制御部からデータを受信した場合、選択部202は全てのL2通信制御部及びL3通信制御部201をデータの転送先として判定するステップS603。本実施形態では、L2通信制御部が二つ第一L2通信制御部203及び第二L2通信制御部302あるため、選択部202はデータの転送先をこの二つのL2通信制御部及びL3通信制御部201であると判定する。そして、選択部202は、転送先と判断した第一L2通信制御部203、第二L2通信制御部302及びL3通信制御部201に対しデータを転送するステップS604。次に、L3通信制御部201が、データのブロードキャストアドレスであること及び選択部202からデータを受信したことに応じて、データをアプリケーション実行部301に転送するステップS605。アプリケーション実行部301は、受信したデータを処理するステップS606。次に、第一L2通信制御部203が、自身に対応する第一HW制御部204にデータを転送するステップS607。次に、第一HW制御部204が、自身に対応する第一HW101にデータを転送するステップS608。次に、第一HW101が通信路を介してデータを送信するステップS609。そして、データを送信した第一HW101に対応する第一対向端末40が、通信装置10からデータを受信するステップS610。第二L2通信制御部302,第二HW制御部303、第二HW102及び第二対向端末50についても同様である。すなわち、第二対向端末50は、第二L2通信制御部302、第二HW制御部303及び第二HW102を経由したデータを受信する。なお、L3通信制御部201は、このデータをさらに事業者通信網側へブロードキャストアドレス宛のデータとして送信しても良い。このように構成された通信システム1では、通信用機器を制御して対向装置と通信するためのプログラムの開発や配布に要する労力を低減することが可能となる。この効果についての詳細は以下のとおりである。Native20で動作するHW制御部及びL2通信制御部を開発するためには、Native20のOSに依存した言語で開発する必要がある。一方、JVM30で動作するHW制御部及びL2通信制御部を開発するためには、OSに依存した言語を用いる必要は無く、JVM30上で動作するものを開発すればよい。そのため、複数のOSやディストリビューションに対して共通にHW制御部及びL2通信制御部を開発することが可能であるため、開発に要するコストや期間を抑えることができる。また、例えば一般的に普及している通信インタフェース例えば有線LANや無線LANに対応したHW制御部及びL2通信制御部はNative20上で動作する第一HW制御部204及び第一L2通信制御部203として構成し、あまり一般的に普及していない通信インタフェース例えばZigbeeやWiGigに対応したHW制御部及びL2通信制御部はJVM30上で動作する第二HW制御部303及び第二L2通信制御部302として構成しても良い。このように構成することで、あまり一般的に普及していない通信インタフェースについて、OS毎に開発する必要が無くなり、開発に要するコストや期間を抑えることが可能となる。また、Native20の機能が組み込みシステムによって実現されている場合、そもそもNative20への機能の追加が非常に困難である。このような場合であっても、通信装置10ではHW制御部及びL2通信制御部の機能を通信装置10に新たに盛り込むことが可能であり、新たなHWを追加することが可能となる。<変形例>JVM30を実現するJAVA登録商標は、OSに依存せずにHW制御部及びL2通信制御部を開発可能な環境の一例にすぎず、開発環境はJAVA登録商標に限定されないし、Native20以外でHW制御部及びL2通信制御部を動作させる環境はJVM30に限定されない。JVM30には、一組のL2通信制御部及びHW制御部が備えられているが、複数組のL2通信制御部及びHW制御部が備えられても良い。アプリケーション実行部301は、JVM30上で動作するように構成されるのではなく、Native20上で動作するように構成されても良い。以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。"