Terra-International, Inc. Terra-International, Inc.
 
  Font size:      
 

Terra-International, Inc. Documentation

PDF
PDF

メイン

Terra-International, Inc. - テラ・インターナショナル

目次 -- メイン

事業内容

代表者挨拶

脳力開発(脳優勢度調査) - ハーマンモデル

Terra-International Wiki

BBS

Jakarta.JP(日本語翻訳)

BASP21 Pro (English)

所有ドメイン名

Give Us Your Feedback! (感想をどうぞ)

目次 -- Misc

*PATCHY* Blog

Apache News Blog

Planet Survey

Planet Orkut Japan

WindowsでUNIX環境を! -- Cygwin on Windows

PHPサンプルプログラム

違憲立法審査権のオープン化

PDF徹底活用法

自宅からのWEBサイト公開

Windows最適環境構築!

選択納税制度について

金融知的所有権についての文書
(ビジネスモデル特許) (1996/06)

連結会計制度に関するメモ (1997/06)

日本株.com

日本の大学

世界の国々

Terra-International, Inc. 事業ドメイン

事業ドメイン

沿革につきましては、こちら(代表者挨拶)をご覧ください。

  • ITビジネスコンサルティング、技術コンサルティング
  • ハーマン脳優位性モデル(HBDI)ファシリテート、人材コンサルティング
  • SEO コンサルティング
  • BASP21Pro販売代理およびBASP21Proを利用したソリューションの提供
  • BFup Pro ActiveX control 販売代理及びソリューションの提供
  • リリース配信サービス提供(プレスリリース、ニュースリリース)
  • コンテンツプロデュース(総合プロデュース)
  • 企業ホームページ、プログラム作成
  • データベースデザイン・開発・運用
  • ホスティングサービス(レンタルサーバー代理店)
  • ドメイン取得代理
  • シスオペ業務代行
  • 技術系翻訳及び執筆

OS: Linux (Unix), Windows 2000, Windows 9x, Me, MS-DOS
DBMS: MS SQL-Server (7.0, 2000), postgreSQL, Oracle 8, Oracle 8i, Oracle 9i, MS-ACCESS2000, FileMaker Pro
Language: Perl, VBScript, VBA, Java , JavaScript, PHP (with Zend Encoder Unlimited), C, C++, XML, DHTML, HTML, Visual Basic, Visual C++
Httpd: IIS, Apache, Oracle WebApplication Server
その他: ASP, Java Servlet , JSP (Tomcat), ADO, JDBC

中小企業・大企業部署内等のイントラネット、業務支援ツールの設計・作成、インターネットソリューションの提供、e-Commerceなど、幅広く行っております。お見積もり依頼、お問い合わせはこちらまでお願いいたします。

尚、現在は、Oracle9iやSQL-Serverを利用したXML検索・PDF等の全文検索システムも手がけております。

 

 
BASP21Pro

業界標準の汎用コンポーネント(DLL)。VB、VC++、VBA (MS-Office)、ASP (Active Server Pages)などから、FTP、SMTP、HTTP、HTTPSなどのプロトコルを自由に操ることが可能。社内イントラネットソリューション及び、Windows上のWWWサーバーソリューションに驚異的な威力を発揮する。
開発例は、アンケートシステム(MS-ACCESS等による自動集計)、自動ローマ字変換、MS-ACCESSによる大量メール配信、受信メールのデータベース化、FTPダウンロードアップロードの自動化、ショッピングサイト、ファイル管理、ERP・SCMなど。

B21Soft, Inc.

 

BFup Pro ActiveX control

業界標準の汎用コンポーネントBasp21Pro(上記)を提供するB21Soft, Inc. 新製品。ブラウザ(Internet Explorer)におけるファイルのアップロード及びダウンロード機能を容易に実装するツール。
HTTP、FTPアップロードダウンロードのみならず、SSLなどにも対応。2002年4月14日販売開始!!

B21Soft, Inc.

 

PHP+ZEND

PHP3およびPHP4を使用したスクリプト開発
「Zend Engine」,「Zend Cache」,「Zend Encoder」,「Zend IDE」などを使用したシステム設計、Webサイト構築 、スクリプト開発
ZEND Encoder Unlimitedを利用することにより、スクリプトをバイナリ化し、知的所有権を保護する事が可能。現在のPHPバージョンは4.3.2。

・ゼンド・オープンソースシステムズ株式会社は、Zend社の総販売代理店です。
・イスラエル国Zend Technologies社は、Zend製品の開発元です。

 

レンタルサーバー

PHP4、ASP、ASP.NET、osCommerce、Basp21(最新版)、アクセスログ統計ソフトなどが利用可能。Unix/Linux/Windowsメニューを用意。

 

Apache Jakarta Project

オープンソースの代表格の一つとも言える、Javaに特化したApache Software Foundation内のプロジェクト。翻訳はこちら

 

ハーマン脳優位性モデル(HBDI)

Terra-International, Inc.は、Herrmann International Asia に於ける「脳優位性モデル(HBDI)」の公認ファシリテータです。ハーマンモデルは、ノーベル賞受賞学者の大脳生理学理論を起源とする「脳」の研究をベースにした科学的ツールで「脳優勢度調査」とも呼ばれています。この調査結果から、「自己認識」「相互認識」および「創造的チーム開発」が、更にマーケティングレベルでは顧客パターンの把握と訴求方法の確立、新製品開発システム構築等が可能になります。

社内人材開発、並びに皆様の個人能力開発、またコミュニケーション能力開発にご活用いただくことが可能です。

そもそもは大脳生理学に基づく「個人」の脳に対する技術ですが、個々人の多様性を把握し経営面における人材育成・人材活用をより推進する為のツールとしての活用が期待でき、また、「左脳」「右脳」モデルよりもより次元の高度な「脳優位性モデル」をご活用いただくことで、ナレッジマネジメントの実践も可能となります。

 

 

参加団体

テラ・インターナショナル -- 挨拶・沿革 --

History of Terra-International, Inc.

History of Terra-International, Inc.

1997/06/01

屋号エイティック(代表:北畠徹也)創業

2000/01/01

屋号テラ・インターナショナルに変更

2001/12/18

米国ハワイ法人 Terra-International, Inc. 設立

2002/01/23

株式会社テラ・インターナショナル登記

2003/10/18

事務所を北海道に移転

Address

Address

米国本社:

1232 Waimanu Street, Suite A-2, Honolulu, Hawaii 96814, USA

ハワイ州ホノルル市ワイマヌストリート1232スイートA-2

日本に於ける主たる事務所:

Naming of Terra-International, Inc.

Naming of Terra-International, Inc.

「テラ」=「Terra」 & 「テラ」=「Tera」。 「Terra」は、ラテン語で、「大地」「地球」を意味します。例えば、月に人が住めるようにすることを、「テラ・フォーミング」(地球化)といいます。また、「Tera」は、10の12乗です(ちなみに、10の三乗=「キロ」、10の6乗=「メガ」、10の9乗=「ギガ」です)。5年後は、情報化社会が今以上に本格的に発展していることでしょう。その頃になると、地球上のどこにいても、テラ・ビット単位の情報が常に飛び交うようになっているでしょう。そのような、5年後10年後のグローバル社会、情報化社会を見据えて、「Terra-International, Inc. (テラ・インターナショナル)」という社名をつけました。

History of Terra-International, Inc. President

History of Terra-International, Inc. President

 昭和49年11月、ごく平凡な家庭に生まれました。小さな頃から、知的好奇心が旺盛で、将来総理大臣になりたいと本気で思っていました。小学のときに、ソロバンを学んだ経験(骨折と肺炎で一級まではいきませんでしたが、一年間で二級までとりました。算盤二段と暗算五段を持っています。)から、算数や数学、所謂理系的なことに興味を持ちはじめ、高校の時には、大学の本を担任だった物理学の先生に借りたり書店で購入したりして、遊びのつもりで読んでいました。その後、東京大学教養学部理科二類に入学。暫くは、理系のサークルや、独学、等で、物理学や数学・化学などの知識を蓄えていきました。大学二年になって、今までと全く違うことをしてみたくなり、たまたま法学部に進学するだけの成績があったことを幸いに、2年の後半から法学部私法コースに進学。突然の方向転換だったため、周りには友人もおらず、また、一年半のBEHINDがあったのでLECという法律の専門学校に通ったりして、なんとか授業にくらいついていこうとしましたが、大人数の授業に嫌気が差し、また、丁度コンピューターを買って、パソコン通信にはまってしまったので、3年次から学校には全然行かなくなりました。あれやこれやと4年次になり、就職活動をして、一応、野村證券の理系採用という枠に内定が決まっていましたが、たまたま友人に「インターネット」のことを聞いて(97年)、それに没頭しはじめ、インターネットの可能性を確かめるため、ガーラキャンパスネット(日本で始めての「インターカレッジ」大学生ネットワーク)を立ち上げました。結局、内定は辞退し、学生を暫く続けながら、個人事業の道を選ぶことになりました。


 その後、ベネッセコーポレーションのゼミレポネット(大学生ネット:会員数1〜2万人)立ち上げの際のコンサルタントなどを通じ、教育関係の付き合いが多かったこともあり、(株)アットマークラーニングに就職(1999/04 - 1999/08)。
 個人事業に戻り、2001/12 に、Terra-International, Inc. (USAハワイ州) を設立。2002/01 日本法人テラ・インターナショナル登記。

 途中、20代サミット実行委員や、数理の翼夏季セミナースタッフ、EC研究会総合プロデューサーなどを経験。

学士会会員、経済倶楽部会員(東洋経済新報社)、NPO法人数理の翼賛同会員、ハーマン脳優位性モデル(HBDI)ファシリテータ など

参加団体

参加団体

LOGO Design

LOGO Design

 

 Terra-International, Inc. のロゴデザインは、「地球」と「月」、そして、中にある6つの星は「12」の2分の1、をイメージしています。「地球」がTerraを意味し、6の2倍の12はTeraを意味します。また、六という数字は「安定」の意味もあります。尚、真中のダイアモンド(ひし形)は、土星の輪がデザインされています。水星、金星、地球、火星、木星、土星と続きますので、土星は、太陽系第「6」惑星である、という意味もあります。(あと、これは個人的な話ですが、私の生まれ年が八白土星で生まれ月が二黒土星であるため、「土星の輪」と「大地(=Terra)」をイメージしてます。また、私は北海道生まれですが、ロゴを横にすると雪だるまに見えます....)

In the future

In the future

 

 Terra-International, Inc. の今後の方向性としては、以下のようなことを考えています。

・経営/人事/システム/会計/法務の全てを含めたコンサルティング

中小企業の、社内情報、会社規模、サービス規模、従業員のレベル、人件費(教育費含む)、TCO全て考慮した最適解の提案を目指す。

・総合的ITビジネスソリューションの提供

「サイト開発・運用」「データベース構築」「広報活動」「課金・決済」「社内情報管理」といった、ITビジネスにおいて重要となる総合的なサービスの提供。クライアントにとっての<ワンストップサービス>を目指す。

・経営コンサルティングサービスの提供

米国CPA資格取得、英文会計・連結会計制度の習得などを目指す。更に、SAP R/3、Oracle EBSなどのERP,SCMパッケージを利用したソリューション提供を目指す。

・知的所有権の流通、海外特許輸入、ライセンスビジネス

 

Contact US

Contact US

 

E-Mail

tetsuya@apache.org

 

脳力開発 - ハーマンモデル (Herrmann Brain Dominance Instrument Model)

ハーマンモデル - ハーマン脳優位性モデル

当社代表取締役・北畠徹也は、HERRMANN INTERNATIONAL NETWORK認定のファシリテーター資格を保有しております。

ハーマンモデル - ハーマン脳優位性モデルとは?

ハーマンモデルとは、ノーベル賞受賞学者の大脳生理学理論を起源とする「脳」の研究をベースにした科学的ツールで「脳優勢度調査」とも呼ばれています。この調査結果から、「自己認識」、「相互認識」および「創造的チーム開発」が、更にマーケティングレベルでは顧客パターンの把握と訴求方法の確立、新製品開発システム構築等が可能になります。この方法は米国GEの能力開発部門の責任者ネッド・ハーマンが1977年に基本モデルを開発し、10年ほどかけて改善したツールであり、IBM、インテル、P&G、コカコーラ、キャノン、資生堂など、米国、ヨーロッパ、アジアで既に100万人以上に採用され、効果が実証されています。

ハーマンモデル - ハーマン脳優位性モデルの詳細

ハーマンモデルは、社内人材開発、並びに皆様の個人能力開発、またコミュニケーション能力開発にご活用いただくことが可能です。

そもそもは大脳生理学に基づく「個人」の脳に対する技術ですが、個々人の多様性を把握し経営面における人材育成・人材活用をより推進する為のツールとしての活用が期待できます。

  • 「なぜ、ビジネスが伸び悩んでいるのか」
  • 「なぜ、従業員の生産性が低いのか」
  • 「なぜ、組織は創造的でないのか」
  • 「新しい顧客を獲得できるのに、既存得意先を維持できない理由は?」
  • 「スタッフはなぜ、お互いに仲が悪いのか」
  • 「組織の創造的改革を阻んでいるものは何か」
  • 「従業員が仕事に夢中になれないのはなぜか」
  • 「自分は何故仕事に夢中になれないのか」

....このような疑問をお持ちになった事はあるでしょうか。

本「ハーマンモデル」は、このような疑問をお持ちになり、ビジネスプロセスエンジニアリングをより深く考えてらっしゃる方にオススメできます。

いまや、ビジネスプロセス及びナレッジマネジメントは日本企業の経営戦略上においても重要なキーワードとなってきました。「ハーマンモデル」を活用し、どうぞ「組織の知識」「知恵」そして「個人の知恵」を存分に発揮できる環境を作り出していって下さい。

全脳ハーマンモデル・コンセプトの用途

個人の成長

  • 教育・トレーニングの方向付け
  • キャリアプランニング
  • 仕事の選択
  • 個人の創造性開発
  • 仕事での満足/業績向上
  • グループプロフィール
  • 創造的問題解決
  • チームビルディング

自己理解

  • 他人との関係
  • 思考スタイル
  • ラーニングスタイル

カウンセリング

  • 教育
  • キャリア
  • 仕事
  • 結婚/家庭
  • 関係の明確化

選択

  • 仕事
  • タスクフォース編成
  • プロジェクトチーム編成
  • ラーニンググループ編成
  • 創造的チーム編成
  • 引継計画

設計

  • 教育コース
  • ミーティング
  • プレゼンテーション
  • 学習教材
  • 出版
  • 広告宣伝
  • 仕事の設計及び系統化

診断

  • 職種適合性
  • 思考スタイル
  • ラーニングスタイル
  • 組織構造
  • 組織文化
  • マネジメント/リーダーシップスタイル
  • リーダーシップの基本問題

モデル

  • 創造性
  • 教育/ラーニング
  • コミュニケーション
  • 組織開発

マネジメント

  • マネジメントの理解
  • 役割/スタイル
  • スタッフ開発
  • コミュニケーション
  • 計画
  • 戦略/業無計画
  • 差異のマネジメント
  • 多様性への対応
  • 変化への対応
  • 企業の重要問題の整合性
  • 創造的風土の醸成
  • 生産性の向上

セールス

  • 顧客ニーズの評価
  • 戦略開発
  • コミュニケーション
  • セールストレーニング
  • チーム編成

教育及びラーニング

  • 設計及び実施
  • 評価
  • プレゼンテーション資料
  • トレーナーの訓練
  • 参加者選択/グルーピング

コミュニケーション

  • 文書作成
  • レイアウト設定
  • デザイン
  • 促進
  • トレーニング
  • 明確化
  • 資料の提示

創造性

  • 創造的プロセスの理解
  • 全脳による創造的アプローチ
  • 創造的スペース演習
  • 創造的風土の確立
  • 潜在的創造性の開放

HERRMANN BRAIN DOMINANCE INSTRUMENT ACCREDITATION

-----------------------------------------------------------

           This is to certify that

              Mr Tetsuya Kitahata
              TERRA-INTERNATIONAL

               has completed the

HERRMANN BRAIN DOMINANCE INSTRUMENT ACCREDITATION

                    and is an

      Accredited HBDI In-House Facilitator

               and a member of the

           HERRMANN INTERNATIONAL NETWORK


                                   Dated 26th August 2003

                                             Michael Morgan

-----------------------------------------------------------

BASP21 Pro

BASP21 Pro is general component for internet application in Windows based Operating System. BASP21 Pro is commercial  edition of BASP21 that is free and famous for its' easy usability.

Basp21 Pro is a Super Component! You can use BASP21 Pro as Server-side Component for group ware you can also use it as Client-side component.

BASP21 Pro have significant features shown below.

  * can be run from All kind of Application.
    - you can use from ASP, VB/VBA/VC++
    - work as ActiveX Control in IE 3.02,4.0 5.0,5,5
  * Support SMTP (Send Mail Transfer Protocol) / POP3 (PostOffice Protocol)
    - Package mail transmission
    - Re-Sending Feature
    - Plug type mail transmission
  * File Upload (HTTP/FTP)
    - server-side
    - client-side, separating sending feature.
    - support SSL encrypted connection for Upload/Download.
  * File Download (HTTP/FTP)
    - client-side, with resume feature.
  * Environment Configuration Feature
   - you can configure server name, directory name ..etc using BASP21P.ini
  * Adding New Feature
    - Support File modification check ('SecureFile' Method)
    - Support Monitoring for BASP21 Pro Object Operation in different thread ('Monitor' Method)
    - Support Method canceling ('Cancel' Method)
    - Support Text file diff  ('Diff'  Method)
    - Support File Sort ('SortFile' Method)
  * Log Feature
    - Support collecting data for debugging and performance data
  * Adding Client-side Feature
    - Progress Condition Dialogue, User Interface with event support.
    - Auto Install by CAB file.
    - Auto Downloading by  BASP21P.INI
  * Adding Batch processing feature (BHELPER.EXE)
    - Run Method from command line.
    - Run Method from text file.


BASP21 Pro Component Requirements

BASP21 Pro Component Requirements is as follows.

ItemsDescription
Hardware RequirementsI386 Architecture .DOS/V PC, PC98-NX series, PC-9821series
OSWindows NT 4.0, Windows 2000 Server/Advanced Server
Windows NT Workstation 4.0, Windows 2000 Professional
Windows 95/98/Me
IISIIS3/IIS4/IIS5/PWS
host requirementASP, IE 3.02 or above, WSH,VBA,Visual Basic 5.0/6.0
Visual C++ 5.0/6.0


Price

1 Site License: 1,000US$
Site License permits an organization to share BASP21 Pro among one or more PCs (regardless of Server or client) at a single facility. The term [Site] does not have any Relation to [Domain]. Even in case you use multi-domains as ISP, It is permitted to use BASP21 pro on PCs at a single facility.
Distribution to another facility is prohibited.
Currently We only provide site license.

How to purchase

To try to use the BASP21 Pro Trial Version, please e-mail to us (info@terra-intl.com) with the contents below. We will send you the estimate and Trial Version with the e-mail after that.

Subject: Estimate Request for BASP21 Pro
Site Name: your company's site name (URL or site address)
Address:
name:
e-mail address:

31th,May,2003

To order BASP21Pro, move

here and order the basp21pro.

We send you a license key of BASP21Pro and Delivery Notification when we accept the deposits. We only offer the manuals of BASP21Pro only on the web and documents included in this product.

Support

1 Year Free e-Mail Support is available. Support includes followings

inquirity on the usage of  product.
Inquirity for defective operation.
Download service for Minor Version-Up Edition.


Manual Availability

Manuals are only available online. Check for latest manuals frequently if you are referring printed or offline manual.
BASP21 Pro Manual Lists is as follows.

Manual NameDescription
BASP21 Pro User's GuideHow to use in different environments (e.g. ASP/IE)
BASP21 Pro Application GuideHow to develop Applications (e.g. mail send / file upload)
BASP21 Pro referenceExplication on Methods and properties
BASP21 Pro Release NoteRelease Note and Explication on how to Install, Uninstall and version up. included in installed files
BASP21 Pro FAQFrequently Asked Questions.



[Products]  [BASP21 Pro] [FAQ] [Application Guide] [Users Guide] [Reference] [SocketObjects]

Terra-International, Inc. - ご意見、ご感想、お問い合わせ

ご意見、ご感想、お問い合わせ

フォーラム並びにBBSもご利用ください)

お名前
電子メール
あて先
サイトのご感想 非常に有益である 有益である 良い 普通 改善の余地がある
メッセージ

Terra-International, Inc. -- 所有ドメイン名

Terra-International, Inc. -- 所有ドメイン名

terra-intl.com Terra-International このページがあるドメインです。
terra-inter.com 同上
nihonkabu.com 日本株・どっとこむ 金融機関等に、このサブドメインを使っていただきたいです・・・(daiwa.nihonkabu.comなどなど)
nihonkabu.tv 日本株テレビ(?) 同上(CS放送会社でつかうところがあれば・・・)
netrenai.com ネット恋愛 ネット恋愛は、いいものです(?)
riskmanage.net リスクマネージメント 金融機関用です。21世紀は、リスク管理の時代です。
homete.net 褒めてね!っと 最近、人のことをけなして商売になったりテレビに出たりと世の中がすさんできているので、少しでも人を褒める、褒められることでなごんでもらえればと・・
sumitai.net すみたいね?っと 不動産会社用です
ganto.com 岩見沢東高等学校 代表の母校です
link-quick.com
lovegetyou.com ラブげっちゅー さるげっちゅーみたいです・・・
netkinyu.com ネット金融 これも、金融機関用です
mailtomyself.com 自分にメール! 未来の自分が過去の自分に出会うために・・・・
robanomimi.com 王様の耳は、ロバの耳? うわさネットになればと・・・
einsteinroman.com アインシュタインロマン 自分の過去に出会うために・・
tokuho.tv 特報テレビ
whattimeisitnow.com 今何時? そのまんまです
netnity.com ネットコミュニティの略
perfec.tv ぱーふぇく・・・ サブドメインにskyをつければ、sky.perfec.tvになります(笑)
msp-jp.net MSP(Management Service Provider) Japan ASPとともに、MSPも今後伸びていきます。
日本株.com  
whatdayisittoday.com 今日は? この英語がわからなければ・・・・(笑)
東大.net  
会社情報.com  
会社情報.net  
名簿.net  

ドメイン名の売買という形ではなく、パートナーシップを組める企業を募集しております。

※印がついているドメイン名以外は、コンテンツを現在入れておりません。

History of Changes

RSS

Version 1.0 (2003)

  • add Forrestサイトへの移行 (TK)

Misc

WindowsでUNIX環境を!! -- Cygwin on Windows, etc.

1. はじめに

 今まで、筆者は、Windows環境でUNIXライクなコマンドを使いたい、UNIX形式でのみコンパイルされたソフト(例えば、PostgreSQL)を使いたい、といった事を考えていて、どうすればそれが可能なのか、を色々と探してきました。特に、PostgreSQLは、ローカルの環境で動かしたい、という強い要求がありました。
 数年前(といっても、もう8年近く前になります)は、BSD on Windows (BOW) というソフトも使いましたが、どうも使い勝手がよいようには思えず、また、メモリを多量に使うため、BOWを立ち上げるだけでWindows(当時は95)がフリーズする現象が起き、実際にはあまり使えませんでした。

 このドキュメントでは、Cygwinの導入の方法と、入れる際の注意点、PostgreSQLのCygwin版の導入方法などを綴っていきます。

 ただ、最近は、VMwareを利用したOSのエミュレーションの方が、パフォーマンスにおいても良いし制約も無くてよいかな、と思っています。WindowsOS上でLinuxやFreeBSDなどがエミュレートできます。想定できるソリューションも多数あります。また、Java派の方は、「Jakartaの杜」を参照するのも良いでしょう。ほぼ、Windows上で、UNIXと同じ事がJavaで出来るかと思いますので。

Windows2000、Windows98での確認をしております。尚、Win98では、postgreSQLは動きません。(安定してません)

2. Cygwinとは?

 Cygwin ツール群は、広く普及している GNU の開発ツールを、Windows NT(2000)、 95、98 用に移植したものです。これらのプログラムは、それらが必要としている UNIX システムコールや環境を提供する Cygwin ライブラリによって動作します。標準では、bashシェルで動かします。Cygnusというところが開発していたのですが、REDHAT社に買収されました。Apache Jakarta Project の方々は、何故か、「Windows環境でCVSを使うにはCigwinを。。。」と言っているようです。(勿論、WIndows環境の場合、CVSにはWInCVSを使っても良いです)

3. Cygwinが提供するもの

フルリリースには以下のパッケージが含まれます。

・開発ツール: binutils, bison, byacc, dejagnu, diff, expect, flex, gas, gcc, gdb, itcl, ld, libstdc++, make, patch, tcl, tix, tk

ユーザツール: ash, bash, bzip2, diff, fileutils, findutils, gawk, grep, gzip,  m4, sed, shellutils, tar, textutils, time

ユーザツールリリースはユーザツールしか含んでいません。

これらのツールの全てのソースコードが利用可能です。

4. ダウンロード方法

以下のいずれかのサイト(FTP)に行き、その中の「setup.exe」をダウンロードしてください。現在は、バージョン1.3.10のはず・・・

ftp.u-aizu.ac.jp
ring.aist.go.jp
ring.crl.go.jp
ring.etl.go.jp

 上でダウンロードしたsetup.exeを起動します。起動すると、

・DownLoad from Internet
・Install from Internet
・Install from Local Directory

の三種類が選べますが、最初は、「DownLoad from Internet」を選択しましょう。(Install from Internetでも良いのですが、ダウンロード途中で接続が切れた場合などのことを考えて・・・)

 次に、Local Package Directoryを聞いてきますので、Cygwinファイル群(バイナリ・ソース)をダウンロードする場所を入力します。例えば、「C:\Temp\cygwin」などといった感じです。

 接続形式は、「Use IE Settings」「Direct Connection」のどちらかで良いでしょう。Proxyサーバーを使う方は、「Use HTTP/FTP Proxy」を選択してください。Nextボタンを押すと、ダウンロード出来るFTPサイトの一覧が表示されます。例えば、ftp://ftp.etl.go.jp/のように、日本のサイトを選択すると良いでしょう。setup.iniがダウンロードされます。

 インストールするパッケージの一覧が出てきます。そのまま「->Next」を押しても良いでしょう(注:Skipと表示されているところで、マウスの左クリックをすると、最新バージョンを得ることができます。)。ダウンロードが開始されます。尚、ソースもダウンロードすると、かなりの時間がかかります。

 ダウンロードが終了すれば、「Download Complete」と出ます。

5. インストール方法

 先ほどの「setup.exe」をもう一度起動します。

・DownLoad from Internet
・Install from Internet
・Install from Local Directory

の三種類が選べますが、今度は、「Install from Local Directory」を選択しましょう。

 次に、Local Package Directoryを聞いてきますので、Cygwinファイル群(バイナリ・ソース)をダウンロードした場所を入力します。例えば、「C:\Temp\cygwin」などといった感じです。

 更に、「Select Install Directory」と出てきます。ここで、実際にインストールを行うディレクトリを指定します。例えば、「C:\Cygwin」といった具合です。Default Text File TypeはUNIX、Install forはALLをチェックし、次にすすみます。インストールするパッケージは、そのままにしてよいでしょう。「->Next」を押します。

 多少時間がかかりますが、インストールが終了すると、「Create Desktop Icon」「Add to start menu」と出てきます。両方ともチェックを入れて「->Next」を押せば、デスクトップにアイコンが作成され、スタートメニュにCygwinが登録されます。これでインストールは終了です。

6. 設定方法

Cygwin ユーザーズガイドの日本語訳がこちらにあります。

 特に、ディレクトリ構造の部分はしっかりとご覧ください。

 ここも役立ちます。(Apache設定するひともしないひとも)

 あ・・・ここもだ・・。

 私はダウンロード先を「C:\Cygwin\」にしましたが、お好きなディレクトリにしてかまいません。以後、%CYGDIR%と表記します。

 NT系の場合、コントロールパネルの「環境変数」のPATHに、以下を追加します。

 %CYGDIR%bin

 コマンドプロンプトから、「bash」と打ってもよいですし、デスクトップにできた(であろう)アイコンをクリックしても良いです。これで、基本的な設定は完了です。

7. PostgreSQLのCygwinへの導入

 <必要ファイル>

 Cygwin用の最新版のPostgreSQL (7.3.1)です。cygwin1.3.10以降用

 尚、上記の「Cygwin導入」で、Postgresを入れた人は、<必要コマンド>以降から読んでください。

 ダウンロードするディレクトリは、%CYGDIR%tmpがよいかと思います・・。

 ダウンロード後、ダウンロードしたディレクトリに行き、

 bash-2.03%  bzcat postgresql7.3.1-cygwin-mb.tar.bz2 | tar xvf - -C /usr/local

として、解凍します。(postgresql7.3.1-cygwin-mb.tar.bz2 の部分には、ダウンロードしたファイル名を入れます。適当に書き換えてください。)

 /usr/local/pgsql/以下に、PostgreSQLがインストールされました。

 次に、http://www.nonsensecorner.com/pgsql/
にあるcygipc-1.13-2.tar.bz2などをダウンロードします。

でてきた「exe」ファイルを、%CYGDIR%binなどの、パスの通った場所に入れます。

<必要コマンド>

 bash-2.03% mkpasswd -l > /etc/passwd
 bash-2.03% mkgroup -l > /etc/groups

 <profileファイルの更新>

 /etc/profileに、以下を追加します。

PGHOST=127.0.0.1
PATH=$PATH:/usr/local/pgsql/bin:/usr/local/bin:/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql
PGLIB=/usr/local/pgsql/lib
LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib
POSTGRES_LIB=/usr/local/pgsql/lib
export LD_LIBRARY_PATH PGDATA PGLIB POSTGRES_LIB

if [ -f /usr/local/pgsql/postmaster.pid ]; then
 postid=`ps ax| grep postmaster |grep -v grep|awk '{print $1;}'`
 if [ X${postid} != "X" ] ; then
  kill -TERM ${postid} 
 fi
fi

ipcid=`ps ax| grep ipc-daemon |grep -v grep|awk '{print $1;}'`
if [ X${ipcid} != "X" ] ; then
 kill -TERM ${ipcid} 
fi

ipc-daemon -q &
nohup postmaster -i -p 5432 >logfile 2>&1 &

必要とあらば

PGCLIENTENCODING=SJIS
export PGCLIENTENCODING

の2行を入れます。

 下線が引いてある個所は、ipc-daemonのプロセスを確認し、あればKILLすることと、Postmasterのプロセスを確認し、あればKILLすること、そして、その両方をたちあげること、をやっています。Cygwin立ち上げ時に自動的にipc-daemonとpostmasterをたちあげたい場合はいれるべきですが、自動化したくなければいれなくてもよいです。

 <DB作成>

 まず、initdbします。そのまえに、

 bash-2.03% ipc-daemon -q &

 しておきましょう。

 bash-2.03% initdb -E EUC_JP

 とします。(これでエラーが出る場合、データベース作成ディレクトリが指定されていないことが考えられます。その場合は、initdb -E EUC_JP -D/usr/local/pgsql などとしてみてください。) ポイントは、文字コードをEUC_JPにしていること。これがないと、Windows環境ですから、文字化けしてしまいます・・。

#あと、Postgresの7.1.3のCygwinものから、(多分)デフォルトのコードがUNICODEになっているかと思われます。psql -lなどで確認ください。

 initdbに成功すれば、指定されたディレクトリ以下に、データベースの雛型等ができます。例えば、/usr/local/pgsql以下にbaseというディレクトリができていますね?

 POSTMASTERを起動します。

 bash-2.03% postmaster -i &

 上で、ipc-daemonを立ち上げていないと、shmget()エラーが出ることがあります。

 さて、いよいよ、データベースの作成です。

 bash-2.03% createdb -h 127.0.0.1 test

 はい、これで、testというデータベースの出来上がりです。

 あとは、

 bash-2.03% psql -h 127.0.0.1 -n test

 とすれば、テストデータベースに入ることができます。(なぜか、-h 127.0.0.1 が必ず必要なのです・・・。Windows版のcreatedbやpsqlの仕様らしい・・)

 基本的に、postmasterが起動していればpsqlできますが、出来ない場合は、「postmasterをkillする」「ipc-daemonをkillする」「両方を立ち上げなおす」してみてください。kill出来ない場合は、Windowsのタスクマネージャーでプロセスをとめてしまいましょう。

 以下に、PSQLを立ち上げた後の実際の例を示します。青色フォントが、実際に入力する文字です。黒色フォントは、DBサーバーからの応答です。

test=# create table tmptable (number serial not null primary key, value varchar(254));
NOTICE: CREATE TABLE will create implicit sequence 'tmptable_number_seq' for SERIAL column 'tmptab
e.number'
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'tmptable_pkey' for table 'tmptable'
NOTICE: CREATE TABLE will create implicit sequence 'tmptable_number_seq' for SERIAL column 'tmptab
e.number'
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'tmptable_pkey' for table 'tmptable'
CREATE
test=# insert into tmptable(value) values ('This is a test.');
INSERT 25087 1
test=# insert into tmptable(value) values ('日本語 テスト');
INSERT 25088 1
test=# select * from tmptable;
number | value
--------+-----------------
1 | This is a test.
2 | 日本語テスト
(2 rows)

(END)

こうなれば、ばっちりですね。

PSQLを終了するときは、

test=#\q

です..

ちなみに、上で作ったテーブルを削除する場合は、

test=#drop sequence tmptable_number_seq;
DROP
test=# drop table tmptable;
DROP

8. 更なる最適環境構築の為に

<postgreSQL ODBC ドライバーの導入(WindowsからリモートのpostgreSQLなどと接続:MS-ACCESSなどで利用できる)>

ftp://ftp.postgresql.org/pub/odbc/versions/full/psqlodbc-07_01_0009.zip

から、オリジナルのPostgreSQL ODBC Driverを入手。

psqlodbc-jp-20010713-bin.zip(119,907バイト) - zip で圧縮したもの

から日本語パッチをダウンロードします。

(あるいは、「PostgreSQL ODBC Driver 日本語版」や、「PostgreSQL ODBC Driver 日本語版のインストールについて」をご参照ください。)

日本語版をインストールするにあたり、先にインストールするオリジナル(英語版)のバージョンは特に問いません。 
オリジナル(英語版)に付属のODBCドライバマネージャは英語版です。インストール先のシステムにODBCドライバマネージャがないか、あってもバージョンが古い場合、オリジナルのセットアッププログラムはPostgreSQL ODBC Driverのインストールと同時に英語版のODBCドライバマネージャもインストールします。ご注意ください。 
オリジナル(英語版)のインストール途中でODBCドライバマネージャのインストールに関する選択肢が表示される場合があります。選択に迷った場合には、むやみに英語版にされないためにも次の優先順位で選ぶのが安全です(それでも英語版にされる場合はあります)。 
Install Driver Manager (with version checking) 
Install Driver Manager 
インストール先のシステムにすでにPostODBCがインストールされている場合、オリジナル(英語版)のセットアッププログラムはこれを削除(中途半端なことにドライバ本体のDLLファイルのみを削除)してしまい、以後PostODBCが正常に動作しなくなります。これを避けるためには、オリジナル(英語版)のインストールの前にPostODBCのドライバ本体のDLLファイル(WindowsのシステムディレクトリのPODBC32.DLL)をバックアップし、インストール完了後に復元してください。 

導入が終わると、32bit ODBCコンソール(コントロールパネルから・・)の「ドライバ」タブのなかに、postgreSQLがあることが確認できます。

<PgAccessのインストール>

TCL/Tkのダウンロード(日本語版)
ftp://ftp.sra.co.jp/pub/lang/tcl/jp/tcltk805jp17.zip

PCACCESSのダウンロード
 

PgAccess は、 GBorgThe pgaccess Project -- PgAccess に移り、PostgreSQL のリリースに含まれなくなりました。 今後、PgAccess は、PostgreSQL アプリケーションとして、 PostgreSQL のリリースとは独立に、 GBorg で開発が続けられます。

ただ、ダウンロードして、解凍し、setup.exeを実行するだけです。

APPENDIX. その他

 <LESS>

デフォルト環境だと日本語表示できません。 less290i.tgzをダウンロードし、
/tmp
に移動します。
% tar xvfz less290i.tgz % cp less.exe /usr/local/bin
で、lessで日本語表示可能です。

以下に、nkfをインストールする方法もかいておきます。(rpmから)

 <秀丸などのエディター>

秀丸をCygwin上で使うには、以下のファイルを作ればOK!
 -- /usr/local/bin/hidemaru.bat --

 "c:\Program Files\Hidemaru\hidemaru.exe" %1 %2 %3 %4 

---------------------------------
 -- /etc/profile --
 ...
 alias hidemaru="hidemaru.bat"
 ...
---------------------------------
秀丸以外の場合、hidemaruを適宜変えてやってみてください。

 <INVOKER>

http://www.idetix.com/files/invkr153.zip

(Windows2000の「サービス」で、自動立ち上げができるようになります。)

<RPM>

(RPMとは、RedHat Package Managerの略で、一般的に利用されるソフトを簡単にインストールし、さらにインストールの履歴をデータベースで管理するものです。なお、RPM に関する詳細については、 http://www.rpm.org/を参照して下さい。あるいは、市販の本かな・・)

Project HeavyMoonから、最新のcygwin用RPMを入手しましょう。ここが、rpmのtar+bz2形式最新圧縮ファイルです。ダウンロードして、Cygwinのルートディレクトリにおいてみましょう。

解凍の仕方は、

 bash-2.03%  bzcat rpm-3.0.6.bin.tar.bz2 | tar xvf - -C /

として、解凍します。(rpm-3.0.6.bin.tar.bz2は、ダウンロードしたファイル名を入れます。適当に書き換えてください。)

Windows98等をご利用の方は、Project HeavyMoonにある、patchをあててください。また、9x系でコンパイルがすでにされているモノはみあたらないので、SPECファイルをダウンロードし、ご自身でソースを持ってきてコンパイルしてしまってください。

私は、ここから、nkfやinfo、grep、zip、lhaなどを入手し、インストールしましたが、うまく稼動しています。
 bash-2.03%  rpm -ihv ***.rpm
で、
 bash-2.03%  #################
と表示されれば、うまくインストールされたことになります。

インストールされたパッケージ一覧は
 bash-2.03%  rpm -aq
で表示されます。


・・では、ご健闘をお祈りいたします。ちなみに、「WINDOWS最適環境構築」に紹介する、FileVisor4とメモ帳トラッパー(or DUMMYPAD)+WZ_EDITOR環境だと、ファイルの中身の漢字コードを意識しなくてすむばかりか、tar.Zファイルやbz2ファイルなど、殆どの圧縮形式のファイルの解凍が楽にできます。(FileVisor5の方が断然良いです。圧縮ファイルをツリー表示できます)

近々、PHPでのpostgreSQL接続(Windows+Cygwin)の方法についてお教えいたします。(いやー、これが出来たおかげで、開発環境がかなりよくなりました・・・)

APPENDIX2. もろもろ

 実は、PHPのWindows版のほうについては、色々と悩んでいたことがあって、それが解決するまでは、PHP+Windowsのことをかけないな、と思っていたのですが、解決いたしまして・・・。モウすぐ、PHP+PostgreSQL(Windows + Cygwin)のことを書きますね。以下に、「悩んでいたこと・・・」をPHP-JPメーリングリストにて投稿し、自己解決したものを記します。


Terra-Internationalの北畠です。

自己レスですが・・。

以下の件なんですが、解決しました。

ただ、解決した、といっただけでは、情報としてなにも意味がないので、
説明を。


<前提>

1 PHP4.04 (PHP 4.01以上) for Win は、ISAPI(php4isapi.dll)を使う場合(つまり、CGI版ではない場合)、inetinfo.exeのcpu使用率が100%になったり、といったバグが、海外では報告されています。
(PHP 4.02以上だと解決しているというのもあったような気はしますが、そうではなかったみたいで。まあ、PHP4.04でも、「たまには」
安定することがありましたけど。)
 ちなみに、cpu利用率が100%になった場合は、タスクマネージャーでinetinfo.exeを選択し、(もしVC++デバッガーがあれば)デバッグを
する、にして、デバッガーを閉じると、元に戻ります。一応、はまった人向け情報。(私はこれで何回も助けられました・・・)

2 IISは(バグなのかわざとなのかは釈然としませんが)、CGIを起動する場合(例えば、PHPであれば、php.exe)、HTTPヘッダーが
"302 Object Moved" をだすものに関しては、強制的に、ヘッダー情報を書き換えてしまいます。つまり、Set-Cookieヘッダーも無視
されてしまいます。
  #参照:
  #http://support.microsoft.com/support/kb/articles/q176/1/13.asp
これがどういう結果をPHPにもたらすか、というと、以下のメールのとおり、SetCookieしてからHeader("Location: ...")で
リダイレクトをかけると、失敗します。

具体的には、
| HTTP/1.1 302 Object Moved
| Location: (URL)
| Server: Microsoft-IIS/5.0
| Content-Type: text/html
| Content-Length: 165

| <head><title>Document Moved</title></head>
| <body><h1>Object Moved</h1>This document may be found <a
HREF="(URL)">here</a></body>
となります。
#本来は、Set-Cookie: ********* 行が入るというのに・・・。


<解決方法>

CGI版を使い(つまり、拡張子のマッピングには、php.exeを使い)、このような記述をします。

---- (filename:) nph-hoge.php --------------------------
<?

$time = mktime()+600; // Cookieの有効時間が10分と想定
$date = date("l, d-M-y H:i:s", ($time)); 
$key1 = "cookiename1"; // Cookieのキー名1
$val1 = rawurlencode("対応する値1"); // 対応する値1
$key2 = "cookiename2"; // Cookieのキー名2
$val2 = rawurlencode("対応する値2"); // 対応する値2
$protocol = "http"; // プロトコル
$location = "redirect_to.html"; // リダイレクトしたいファイル名

$cookie = "Set-Cookie: ${key1}=${val1}; path=/;
expires=${date} GMT;\r\n";
$cookie .= "Set-Cookie: ${key2}=${val2}; path=/;
expires=${date} GMT;\r\n";

$header = $protocol . "://" . getenv("HTTP_HOST") . "${location}\r\n";

if ($cookie){ $header .= $cookie . "\r\n";}

Header("HTTP/1.0 302 Redirect\r\nLocation: $header");

Exit;
?>
---------------------------------------------------------

尚、注意点は、PHPファイルの名称は、必ず「nph-」をつける、ということです。その点を忘れてしまうと、はまります。
(nph = non-parsed header)

この方法は、(PHP-MLには関係ありませんが)Perl(CGI版)でも有効でしょう。


では、失礼します。


P.S. どなたか、Zend Encoder Unlimitedを使ってらっしゃる方、いらっしゃいますか? Windows 2000 + IIS 5.0 でも動きました。Zend.comには、Win版Apacheしか記述されていませんでしたが・・。PHPスクリプトをプリコンパイルして、コードを見えなくする手法は、画期的ですね。ちょっと高いですが・・。。。


--

On Tue, 30 Jan 2001 22:43:36 +0900
Tetsuya Kitahata  wrote:


> Terra-Internationalの北畠と申します。

> Windows版のPHP4を導入しているのですが(Win2000 + IIS 5.0)、
> php4isapi.dll ではなくphp.exeを、IIS 5.0において.php 拡張
> 子に関連付けたところ、SetCookie関数が通らなくなりました。

> 具体的な例としては、

> ----hogehoge.php----------
> <?
> ..................
> SetCookie("key", $value);
> Header("Location: *****.php");
> ..................
> ?>
> --------------------------

> です。つまり、Location: をHTTPヘッダーに挿入し、リダイレクション
> をかける場合に措いて、です。HTTPヘッダーから、Cookie行の情報が
> すっぽり消えてしまいます。(IISが勝手に書き換えているような気が
> しなくもありませんが)
> この現象は、HTTPのログをみて確認済みです。

> そして、IIS の設定に措いて、拡張子関連付けに、DLLを使うと、これは
> 解決します。SetCookie後、Header("Location: ....")しても、正常どおり、
> Cookieは焼かれます。
> #ただ、DLL使うと、なぜか、inetinfo.exeがCPU使用率をものすごく
> #食ってしまったり、Access Violation エラーが起こることが
> #あるので、これまた困っていますが。

> --

> 同じような現象がおこるかた、いらっしゃいますでしょうか?また、
> 解決策はありますか?
> 多分、仕様上のバグのようにも思えるのですが、すっきりさせたいと
> 思っていまして、この件につきご存知の方がいらっしゃれば、お教え
> いただければ幸いです。

知的財産権(知財)法からみた、電子商取引(EC) -- 知的所有権:特許:ビジネスモデル特許:電子決済システムの問題

1. はじめに

 まず、電子商取引が現実的に有効に機能する際に、国際的な標準が存在すべきなのか、また、標準化が行われた際に、どの様な問題が起こりえるのか、先ず日本の知的財産法とりわけ工業所有権に関する条約を考察した後、問題を探ってみる。また、広義の産業政策のなかでの、知的財産権の占める割合は大きく、特に、米国における知的財産権に関する政策や解釈の変化が、国際的なルールづくりにどのように影響を与えてきたのか、まとめて検討したい。(アンチパテント→プロパテントの確立への推移)

 1992年11月アメリカのシティーバンクが、日本特許庁に対して「電子通貨システム」と呼ばれる発明にたいして特許請求を行った。電子マネーの発行から支払い、入金、銀行間決済といった電子金融の一連のシステムを特許範囲として請求している。一方、これに特許認可が下った場合、業界全体をカバーする独占的な金融ネットワークが形成され、もって、ネットワーク使用料や、加入認可権の乱用など、不公正かつ独占的なシステムになることは想像に難くない。しかし、米シティーの特許を日本で認めないことになると、世界的な標準から取り残され、強いては日本金融界の孤立化を招く恐れも十分に考えられ、日本の産業政策上、好ましくない。シティーバンクが、独自に開発した電子マネーシステムに対する特許を世界20カ国に対し出願したことは、世界中の金融機関を震撼させた。事実、日本の主たる都市銀行(第一勧銀、富士銀行、さくらなど)は、「新規性がない」などとしてこの出願に対する異議を申し立てた。それほどまでに銀行がこだわるのはなぜか、一つは、このシステムが世界中で特許を取ることになると(シティーバンクは20ヶ国で特許申請をしている)、世界での金融システムの事実上の標準ができあがり、もって銀行が今まで有していた「決済」と「与信」機能がシティーバンクの手中に握られてしまうこと、また、このシステムが世界的な標準として用いられた場合、莫大な額の使用権を米シティーバンクに対して払わなくてはならなくなるからである。シティーバンクは、1992年11月に特許庁に出願、1995年同月に出願公告された。しかし、一方で、NTTが「電子商取引(エレクトロニックコマース)で受け取った電子マネーをそのまま即座に別の電子取り引きにも使える」という、内容の特許をシティーバンクに先駆けて持っているという話もある。(1996年3月13日付日経産業新聞「ネット・ビジネス死角アリ」)
 では、もし日本に於いて認められ、この特許権に対する侵害(勝手に利用すること)が行われた場合、いかなる措置がとられるのであろうか。特許権侵害に対しては、損害賠償のほか、侵害行為の排除や差止め請求が認められるのが通常である。つまり、邦銀としては、もしこのシステムが世界的な標準になるとするならば、という仮定をおくとしたとき、世界的な流れにのらなくては国際的な流れであるEDI(電子データ交換)に乗り遅れることになるため、莫大な金額の使用料を払わなくてはならないのである。そこで、以下に、日本の工業所有権制度について述べ、若干特許要件についての判例を紹介した後、パリ条約がらみから考察したいと思う。
#余談であるが(本当は非常に重要)、すでに日本でもこの特許がとられてしまった、という話もある。だが、私見では、このシステムは「特許」と呼ぶにふさわしいものなのか、素人の目から見て、いささか疑問が残る。(※注1

2. 知的所有権(知的財産権)とは

2.1 知的所有権と独占禁止法

 知的所有権(一部、この翻訳を嫌い、知的財産権という。(中山など) :※注2)は、intellectual propertyの訳語とされ、「知的創作物の模倣行為あるいは営業条の模倣行為に対する権利」(田村)であるとされている。具体的には、技術に関する発明を保護する特許法、デザインを保護する意匠法、技術に関する考察を保護する実用新案法、文化的な創造物を保護する著作権法、営業上の表示を保護する商標法などがあり、特に著作権法を除くものには、工業所有権法という別の名前がつけられている。また、国際的な取り決めとして、工業所有権保護に関するパリ条約や、PCT(特許協力条約)があり、更に、ガットウルグアイラウンドにおいて成立したTRIPs協定などもその範疇に含まれる(更に、ハーモ条約や、著作権に関わるヘーグ条約などがある)。さて、工業所有権との関係においてよく問題になるのが、独占禁止法である。これら2つは、産業の発達に寄与する、という共通の目的があるものの、その達成する為の方向性が異なるわけだが、歴史をひもといてみると、その時代時代の産業政策により、どちらかの理念が衰退したり、どちらかが強大な力をもったりしたものである。独占禁止法は、独占的なシェアを誇る企業の対等により、産業の健全な育成がはばかられることを防止することを趣旨とする法律であるが、アメリカでは、ニューディール政策時代(アンチパテント)には独占禁止法が強化され、特許法などが有名無実化した事もある。1952年の特許法改正の流れをうけ、両法は調和をはかってきたが、1980年代にいたって、事情は一変し、米国はプロパテント時代の到来とともに、独占禁止法政策の後退を余儀なくされた(CAFCの設立と判例法の統一にもとづく:1982年)。独占禁止法23条によると、「この法律の規定は、著作権法、特許法、実用新案法、意匠法または商標法による権利の行使と認められる行為についてはこれを適用しない」が、いったん権利が認められたからといって独禁法の網にかけることが完全にできなくなるわけではなく、この問題については様々な議論がある。一言コメントさせていただくと、その中で特許法はその目的からして、「発明の保護および利用を図る事により発明を奨励し、もって産業の発達に寄与する事(特許法1条)」が重要であり、もしも発明者に独占的な利用の権利を与えないと、発明をしようとする人がいなくなってしまう、ということから考えると、あくまで比較衡量がはかられなければならない、という事である。

2.2 特許法の日米比較

 日本の特許法の歴史は古く(アメリカの方がもっと古いが)、改正も時代の要請にあわせて数多くなされて来た。現在では、特許を取れる発明の要件として、以下のような点が挙げられる。つまり、特許出願前に日本国内において 1 公然知られた発明 、2 公然実施された発明 、3 あるいは外国において頒布された刊行物に記載された発明、をのぞいたものであることである。また、発明の保護対象として、「物の発明」「方法の発明」「物を生産する方法の発明」が挙げられ、以前はソフトウェアは発明にはあたらないものとされていた(この点については後述)。今回のシティーバンクの出願している特許は、「物の発明」でも「物を生産する方法の発明」でもなく、「方法の発明」である(しかも、あくまで「ビジネスの方法」である:この点についても、後述する)。従って、発明の「実施」にあたる行為は、あくまで「その方法を使用する行為」のみとなる。次に、日本とアメリカの特許法の違いを簡単に触れるが、日本や欧州の特許法は「先願主義」を採用しており(特許法39条)、一方アメリカの特許法は「先発明主義」を採用している、つまり、「最も早く発明していた人」が発明者であるとの認定がなされる、ということである(しかも、アメリカは自国民には「先発明主義」・外国人には「先出願主義」を採用しているのだから、たまったものではない)。また、(これは1996年1月に改正法が施行されたそうだが)アメリカの特許制度では、「出願の公開」がなされなかった。次に、「特許期間」が日本・欧州では「出願後」20年であるのに対し、アメリカでは「成立後」17年となっている事である。(よって、アメリカでは、意図的に発明者が特許成立を引き伸ばす事ができる・・・サブマリン特許)

平成6年特許法改正附則(1)
○附則第8条:特許付与後の異議申立て制度導入に伴う経過措置について規定したもので、原則として、迅速な権利付与のニーズにマッチさせるべく、改正法の施行前に出願した特許についてもこの異議申立てが認められる事になっている。しかし、既に出願公告(この制度は新特許法で廃止)がなされ、仮権利が生じているものに関しては、排除される。ということは、シティーバンクの特許は、既に仮権利がなされていたのであるから、(仮権利発生は去年の11月)これは以前の特許法の「事前異議申立て」制度が使われ、事後救済はできないことになってしまう。

出願公開制度(2)
○出願公開とは、特許出願日から1年6ヶ月を経過した後に出願内容を公開する制度で、これは、出願から特許になるまで長い時間を要し(特に日本では、10年もの年月がかかるものもある)、第3者が同じような発明の研究開発を進めてしまう可能性があるからである。しかし、この制度は特許法の平成6年改正でなくなった。

2.3 パリ条約

 パリ条約とは、工業所有権の国際保護に関する同盟条約であり(1条)、本来一国の産業政策上の問題といえるものに、各国法制の違いを斟酌しつつ、できる限り調整法としての枠組みで可能な限りの工業所有権の国際保護という目的を達成するため、・同盟条約である・開放条約である・無制限条約である などの特色を有している。さらに、保護内容の特色(パリ条約の3大特色)として、1 内国民待遇の原則(2条) 2 優先権制度(4条) 3 各国特許独立の原則(4条の2)がある。「内国民待遇の原則」とは、パリ条約同盟国が工業所有権の保護に関し、他の同盟国民に、内国民と差別することなく平等の待遇を与えることをいう(2・3条)。「優先権制度」とは、同盟国が他の同盟国に出願する際の言語的、地理的不平等を制度的に克服し、もって内国民待遇の実効性を手続き面から担保するために採用された制度で、同盟国民による正規の同盟第一国出願に基づき同一対象について同盟第二国出願をするさいに、第一国出願時に出願したならば得られたであろう利益を第二国出願に与える条約上の特別の利益を「優先権」という。(4条)「特許独立の原則」とは、同盟国の国民が書く同盟国で出願した特許は他の国において同一の発明について取得した特許から独立したものとする原則(4条の2)とされ、ここが特許製品の並行輸入の並行輸入の議論で大いに問題となるところである。日本の特許法は、パリ条約に基づいて規定されているものが多いが、自己執行的規定のばあい、憲法98条を介して、特許法26条により「直接適用」される。(パリ条約 2条・4条・4条の2・5条の3など)

3. アメリカの知的所有権(知的財産権)に対する保護の強化

 1950年に連邦最高裁で下された「グレーバータンク事件」で、原告のリンデ・エア・プロダクツ社が所有するカルシウムとマグネシウムの珪酸塩を含むフラックスに関する特許紛争で、被告の製品はカルシウムと「マンガン」であった。しかし、連邦最高裁は被告らの製品と原告の製品が「均等物」すなわち同じ物だと認定して、特許侵害を認めた。しかし、独禁法が強化された50年代から60年代にかけて、均等論による特許の範囲の拡大は認められなかった。(「特許ライセンスの日米比較」29P)例えば、1970年代、ゼロックスが、特許侵害を理由にアメリカの他の複写機会社を訴えた事件では、逆にゼロックスの方が独禁法違反で基本特許3件を無料公開、残りを有料公開させるという事態になってしまった。(「強い基本特許有効な取り方/係争の争点」333P)インスタントカメラの用のカラーフィルムの供給をコダックに依頼していたポラロイドが、コダック側の謀反と同社の特許侵害を理由とする訴訟に勝利した事件は、1976年に連邦地方裁判所に提訴されたが、この頃はアンチパテントからプロパテントへの移行時であり、もしこれが独禁法が幅を利かせていた時代に提訴されていたら、逆に独禁法違反でポラロイドが負けていたかもしれない。さらに、原告ハネウェルと被告ミノルタの特許訴訟では、「均等論」がまさしく問題となり、特許の範囲から言うと文言上は何ら抵触しなくても、「同一の方法で、同一の機能を果たし、同一の結果を得る」のであれば両者は均等とみなされる結果、被告側が「真似した」とみなされたのである。「特許の有効性」が極端に高くなったという大きな違い・あるいは特許侵害に対する損害賠償額の巨大化も見逃せない。
 この歴史的な変革の裏には、アメリカの国家の威信をかけた、「知的所有権の強化に伴うアメリカの再生」、という姿勢がある。1930年から40年代は、ニューディール政策に伴い、「独占」が忌み嫌われ、その結果として、特許制度は大きく衰退した。1950年から60年代は、1952年の改正特許法の施行(非自明性の導入など:103条)に伴い、特許制度と独禁法の調和が図られたが、依然として対立していた(上記のクレーヴァータンク事件の少々後で、ゼロックス事件の頃にあたる)。1980年代は、2人の大統領(カーター&レーガン)の政策により、パテントの強化がなされるようになった。(知的所有権に対するアメリカの対外圧力が強くなったのもこの頃から)特に、1982年のCAFC(連邦巡回区控訴裁判所:13番目で、ワシントンDCにおかれている。特許審査を専門としている。)の設立により判例法が統一され、またセカンダリーコンシダレーションと特許の有効性の強化や、均等論の強化と禁反言の制限、がなされた。アメリカの特許法では、必ずしもアメリカ特許が有効なものではなく、ただ単に有効であると推定されるだけである(米国特許法282条)から、特許侵害紛争では、侵害の有無に加えて、その特許の有効性自体が争われる。有効性の推定にかんして、CAFCは従来の判例を変更し、特許庁において検討されなかった先行特許が侵害訴訟で提出されても、有効性の推定は否定されないとしている。
 セカンダリーコンシダレーションとは、技術の専門家ではない裁判官の為に、商業的成功の有無などを考慮して「非自明性」を推定する制度で、その中には、「同時期の発明」をもってクレームの自明性を推定する、というのも含まれる。(3)

4. 特許制度の判例

4.1 発明とは?

 日本で言う「発明」は、自然法則を利用した科学的思想の創作のうち高度なものをさし、数字や記号を組み合わせた暗号作成は特許法にいう発明とはいい難いとの判例がある。(しかし、古い)また、以前はソフトウェア自体に特許性は認められていなかったが、最近では、新しい審査基準の導入により、フロッピーディスクやCD-ROMに書き込んだソフトに特許権が認められ、これを模倣したソフトを書き込んだディスクの販売・製造・輸入は、特許侵害として差し止められることが可能となった。これは、以前はソフト自体の保護は著作権任せになっており、ハードウェアに組み込まれて一体とならなければ特許権が認められないとされていたことからすると、かなりの進歩であるが、ソフト開発業者の中には、登録料のコストがかかったり、新規開発の場合の確認の費用を考えて、「逆に開発コストの上昇につながる」との懸念があるのも事実である。(日経 4/3) 個人的にも、ソフトウェアの保護を著作権にばかり求めるのではなく、特許性を認め、もってソフト業界の活性化を図るべきであると考える(ハードウェアは、ソフトがなければただの箱)。勿論、この特許性の期間をもっと考慮すべきであるが。(1982年の中山論争:ソフトウェア立法の提言)

4.2 特許成立要件

※一般的な考え方
特許成立要件(in Japan)
 1 特許法上の保護対象は「発明」
 2 「発明」のうち、一定の要件を満たしたもの
 注)一定の要件=産業上の利用可能性、新規性、進歩性
特許成立要件(in America)
 1 特許法の保護対象(法定の主題)は、「方法、機械、製品、合成物、
   またはこれらの改良」である (米国特許法101条)
 2 上の保護対象に含まれるものの中で、有用性、新規性、非自明性があるもの
とすると、金融商品やサービスに関する特許権が成立する際に問題となるのは、
2よりも1の方(つまり、特許適格性の要件)であろう。
実際、米国のPTO (Patent and trademark office)の審査便覧(manual of patent examining procedure)で、特許法の保護対象(法定の主題)に含まれないものとして、印刷物、天然物、科学原理、とならんで、「ビジネスの方法」をあげている。これが、今まで日本の金融機関が、金融商品などにあまり力を入れていなかった(勿論、今までの護送船団方式にもよるだろうが)原因の一端となっているものと解することができ、今後、日本の金融機関がどういう対応をしていくのか、非常に興味があるところである。
日本での「発明」の要件として、1単なる精神活動、2 純然たる学問上の法則、3人為的な取り決め等、一定の者に独占を認めるよりは誰もが利用できた方が産業の発展にしするものは、除外されるとされている。一方、米国での「法定の主題」(発明の要件)のなかで、1 自然法則(law of nature)、2 自然現象(natural phenomena)、3 抽象的なアイデア(abstract idea)は、特許の対象にならないとされている。しかし、アメリカでは、特許の対象が拡大解釈され、今では、コンピューターの応用による生産理念や数学的発明、バイオテクノロジーによる高等動物への遺伝子組換などにも特許が認められるようになってきている。いかに、その例を少々挙げてみる。

 例1:カーマーカーの数学特許
  本来、世界のどの国に於いても数学的発明には「特許」を与えない方針であった。(日本の特許法における「発明」は、「自然法則を利用した」ものでなければならず、 その点において、数学はそれ自体では発明とはならない)しかし、数学自体が産業に利用されるようになる、例えば、産業的なシミュレーションや数値計算などで威力を発揮するようになると、産業界での重要性は高まる。カーマーカーの特許はこうした流れの中、ATT(アメリカン・テレホン・アンド・テレグラム)により出願され、アメリカでは1988年5月10日/90年4月3日、EP(ヨーロッパ特許)では、90年10月10日/89年10月11日にそれぞれ認められた。(日本では、未審査・あるいは拒絶審査)
 カーマーカー特許は、線形計画法をもちいて長距離電話網での回線割当てや電話網管理などで、システムコストを最小限とするものである。線形計画法などの数学的解法は本来は特許の対象ではないが、この解法を純数学的に用いることをクレームとしたのではなく、産業的に応用することのみをクレームとした。これにより、「数学的な知識自体はクレームされておらず、学問的知識自体を特許により独占するという不都合が回避されうる」
 例2:生産理念の特許性とATTのCIM特許
  CIMとはコンピューターをつかった統合生産であり、コンピューター管理による省力化工場の決め手となるものである。CIMは、新たな生産の理念であり、これを理念のままで特許を認めることが可能なのか。実施例として、「電気回路の設計から製造までをコンピューターの管理により行う」ことがあげられよう。そして、これは実際アメリカで特許をとった(日本では不出願)。これも、ビジネスの手法と考えられるが、コンピューターを使っている点で、保護される可能性が高かったといえる。

 このように、アメリカとしては、国家の産業政策上重要と思われるものに対してどんどん特許性を認め、産業を活性化させようとする動きを見せている。(勿論、この背景にはCAFCの設立とそれに伴う判例法の統一、更に、セカンダリーコンシダレーションと特許の有効性の強化があげられる)特に、コンピューターが産業界に深く根をおろすにつれ、特許の範囲は拡張されなければならないのはいうまでもなく、今後更なる議論が出てくる事であろう。(更に、コンピューターソフトウェアに対して50年間の保護期間をもたせるのかいなか、というのも興味深い問題である。)

4.3 金融システムに関する特許紛争(ビジネスの手法の特許性)

裁判例(金融システムに関する特許紛争:アメリカ)
<Hotel Security Checking事件>
 事案:レストランにおいてウェイターが売上金を横領することを防ぐ方法あるいは手段に関する発明の特許適格性を否定された事案
 本件において、第一審たる連邦地方裁判所は、「こうした商売を営むものであるならば、容易に思いつく方法である」として、特許適格性を否定した。控訴審では、この発明における物理的な手段である伝票と控えの用紙そのものには新規性はないとしたうえで、「ビジネスのシステムは、それを実行するための手段から切り放されている場合には技術とは解釈できない」として、本件クレームは法定の主題に当たらないものとした。
<Johnston事件>
 事案:デジタルコンピューターによる経理帳簿自動記載システムに関する発明について、特許適格性が認められた事案
 PTO審査部は、このクレームは「銀行業務の手法の独占を許すことになる」として、拒絶審査を行った。しかし、それを不服とする発明者(Johnston)は、CCPAに不服を申し立てた。CCPAは、「本件の装置クレームは、ビジネスの方法や、ましてや簿記の方法を目的としているわけではない」ため、「記帳のための機械システム」に関する本件クレームに特許適格性がないとはいえないとした。また、本件特許の範囲が、あくまでクレームに示された機械に留まり、「銀行業務の方法そのものに特許が付与されているわけではない」ことを強調した。
<Merrill Lynch事件>
 事案:CMA(cash management account)に関する発明の特許適格性が認められ得るものとされたもの。
 注)CMA...証券売買用の決済口座、MMF売買用の口座、クレジットカード決済用の
      口座の3つをくみあわせたもの。
 原告は、本件特許は「ビジネスの方法に過ぎない」と主張したが、コンピュータープログラムを使ったオペレーションシステムであり、これは特許法にいう技術の範疇に含まれるものとした。しかし、実際のところ、Johnston事件と同じように、ビジネスの方法自体に特許性が認められているわけではない。ただ、この事件のクレームは、具体的にコンピュータープログラムの動作を含めたコンピューターの作業内容が明示されているわけではない。

裁判例(金融システムに関する特許紛争:日本)
<オムロンバンクシステム>
 事案:1992年にオムロンのバンクシステム(スウィング機能付き総合口座)についての特許が公告された。(特公平4-1381)
 日本において、金融界で特許権に関する関心が高まったきっかけとなった。しかし、最終的には、「進歩性」がないとして本件特許申請に対して拒絶査定がなされた。
<注文授受兼生産自動化飲食店店舗装置>
<証券店舗の接客用業務設備>
 これら2つは、「発明」の要件である「自然法則の利用」という条件の認定を多少あいまいにしている。が、オンライン化したカウンターとかV字型のカウンターといったかたちでビジネスの方法についてのアイディアが具現化されている事と思われる。

<まとめ>
 新たに開発した金融商品やサービスに関する特許が出願されると、そのクレームが抽象的なアイディアに過ぎない場合には特許法の保護対象とはならないが、装置やシステム等による具体的な応用がなされていれば特許法の保護対象にはなりうる。特に、金融商品やサービスについてのアイディアを具体化する手段としてコンピューター・ハードウェアを用いる場合には、コンピューター・ソフトウェア関連発明の判断基準によって特許適格性が判断される。具体的に言うと、アメリカでは「数学的アルゴリズムが物理的要素に応用されているか」、日本では「ハードウェア資源が利用されているかどうか」が判断の重要なポイントとされる。

4.4 独占禁止法と、著作権

 一般に、コンピューターを使用するに当たっては、application program(AP)と呼ばれるプログラムを用いて、その目的(作業)を果たすことになるのであるが、そのプログラム自体からの情報を文字表示したり、キーボードからの入力を依頼するプログラムが、operating system(OS)とよばれるものである。この時、APとOSの間の規約(protocol)が、API(application program interface)である。米国マイクロソフト社が、windows95を発売する際に、セットとしてマイクロソフトネットへ参加できるというソフトも付随した。それが、「ウィンテル包囲網による、通信ネットへのなぐりこみ」と解釈され、独禁法に違反するものではないかとして、公正取引委員会が動きだことがある。
注>ウィンテル:ウィンドウズをOSとし、インテル社のPentiumをCPUとしたパソコンが、世界中で圧倒的なシェアをほこっている。特に、世界No1.2のシェアを誇る、商用ネットCompuServe ,AOL(American online network)からの反発が激しかったのは想像に難くないであろう。マイクロソフトネットは、そのため、利用者数を制限することで、公正取引委員会からの捜査を免れた。

 また、IBM社も、米国司法省によりシャーマン法2条に違反するものとして訴追をうけ一時は分割案もでていたことがあるが、このころプログラムというもの自体が著作権をもって保護されるという案はなかった。(唯一、アメリカで、トレードシークレットにとして保護されていたのみである。)しかし、実際このIBMに対する訴訟は82年1月にとりさげられた。と同時に、IBM社は、日本の企業(富士通・日立など)にたいして、知的所有権紛争を開始し、もって勝利した。(IBM産業スパイ事件)

5. 電子マネーの技法が特許権を獲得できるのか

5.1 米国シティーバンクの特許

 アメリカでのシティーバンクの特許は、1991年11月に出願され、現在この発明の特許はアメリカで認められている。この特許の特徴は大きくいうと3つある。
 1つめは、このシステムの要素が「銀行または金融機関」「コルレス銀行」「複数の取り引き装置」「発行銀行及びコルレス銀行に関連する出納装置」「決済銀行」「データ通信ネットワーク」「安全保障機構」と、電子マネー関係に必要と思われる機関を全て網羅している事。
 2つめは、多目的ペーパレス支払方式を提供し、それをもって取り引きが加入者間でオンライン・オフラインいずれにおいても実施される事。更に、通常の通貨と交換可能な電子マネーを用いた電子通貨システムで、多種通貨型の電子マネーを利用可能にしている事。
 3つめは、電子マネーを発生するための金銭モジュール・出納モジュール・取引モジュールなど、電子通貨の流通において必要なプロセッサーの利用を全て想定している電子通貨システムであるという事。

 特に、シティバンク特許は、銀行が必須の構成要件となっており、第1クレームを見る限り、転々流通されていく電子通貨について発行銀行が受け戻しの責任を負うために(初期の貨幣的価値を担保するために)必要な技術、特に取引モジュールで移転レコードを発生させて電子通貨とともに移転させていくことにより、経由した所有者を追跡して発行銀行にたどり着くことができるようになっている点が特徴といえ、また、ネットワークを前提とした特許なので、その構成要素である「通過の電子的象徴」,「金銭発生モジュール」,「出納モジュール」や「取引モジュール」が各国に分散している場合には1国内での発明の実施に該当しなくなるので、権利侵害を免れる方法もありうる。

 まず思い付くのが、これは先述の「ビジネスの方法」にあたらないか、という事である。つまり、彼らの特許は、コンピューターのプログラムなどといったものではなく、あくまでも「方法」の提示をなしているものであり、これは明らかに「ビジネスの方法」にあたる、ということである。しかし、先述の通り、ビジネスの方法は、それ自体では特許性を有するものではないが、「数学的アルゴリズムが物理的要素に応用されているか」が満たされれば、歴然とした特許足り得る、ということ、また、産業界へのインパクトを考えると、少なくともアメリカでは特許性は認められて当然という事になる(この点は、アメリカでは、先述のカーマーカーの例にもあったように、日本では考えないような事を平気で特許を取る風潮がある)。特に、上のメリルリンチ事件にあるように、具体的にコンピュータープログラムの動作を含めたコンピューターの作業内容が明示されているわけではないので、逆に特許性が認められやすかったのではないかと考える。次に、アメリカの特許制度では、先述のように、「有効性」が推定されるのみであるので、NTT(以下に記述)がこれに対して抗議をなすことが少なくともアメリカでは可能であろうという事である。更に、「セカンダリーコンシダレーション(3)」でふれた、「自明性」の推定の項で、NTTとシティーバンクがなした特許出願がほぼ同時期である事を考えると(NTTのほうが少し早い??平成2年??)、アメリカの特許の要件を満たしていないようにも思えてくる。
 発明は「自然法則を利用した技術的思想の創作のうち高度のものをいう」(特許法第2条1項)と定義されている。ここで「自然法則」とは、自然界において経験的に見い出される法則ををいい、人間が案出したルール等は含まれないとされおり、その意味で商品の陳列方法やビジネスの手法等は発明の対象から除外されてしまっている。しかし、一方、ソフトウエア関連発明については、簡単にいえば、ハードウエア資源を有効に利用していれば(審査基準)発明として成立する余地があり、例としてパソコン等の階層メニュー構造について、審査基準では、上位のメニューと下位のメニューとが記憶装置内のアドレス付けにより関連付けられていればハードウエア資源を有効に利用しているとした実例が挙げられる。明細書の記述テクニックにもよるが、このような形で特許を取得すれば階層メニュー構造にしたユーザーインターフェースそのものを権利化できる。 この考え方を適用すれば、単にハードウエア資源を利用しただけでは発明は成立しないが、もう一歩進んでハードウエア資源を有効に利用していれば発明として成立する。その結果その特許の権利の効力がビジネス方法に及ぶ場合もあるとされる。

5.2 日本におけるNTTの特許

5.2.1クリッパーチップにかわる新しい技術。

 BLACK BOXをいれず(日本の憲法の「検閲の禁止」に触れないように)、アメリカのクリッパーチップのような国家検閲を可能とするシステムではなく、しかも優れた技術であるため、関心が高まっている。

5.2.2 電子商取引のシステムに関する特許(※注3

 デジキャッシュ社のシステムとは違い、インターネットを通じて、電子マネーが転々流通(例えば、「イシュアー」→「顧客」→「店」→→「店」のように、「店」から「店」への流通を可能とする電子決済システム)が可能となる。ところで、このNTTの特許と、米シティーバンクの特許に類似性はみいだせるのだろうか。もし見出せるとすると、米シティーバンクの出願している特許は明らかに「新規性」を満たさず、この請求は、日本特許法29条の「特許の要件」(特許出願前に日本国内において公然実施された発明ではないこと)を満たさず、原則として特許は認められないはずであろう。更に、もしNTTが他国でもこのシステムを特許として請願していれば、米シティーバンクのシステム自体、他の国でも新規性を持たないことになる。
 #パリ条約:優先権制度(4条)
 ただし、優先権制度は、特許の場合1年間(第一国での出願から第二国への出願に関して)である。とすると、もはやこの手をNTTがつかうことはできず、やはりあくまで日本国内に於いての米シティーバンクのシステムの新規性だけが奪われるのみになるのだろうか。また、アメリカの特許法の「均等論」を使う事で、この特許をアメリカで阻止する事ができるのだろうか。しかし、いったん特許を取られてしまった場合に、その後で無効を主張するのも、難しそうである。(CAFC設立後、特許侵害紛争における特許の無効判決が60%から30%へと減少した)

6. CONCLUSION

 米シティーバンクの出願している特許は、日本の金融機関、特に銀行にとって死活問題である。事実、都市銀行の大部分は、このシステムに対する抗議をだしている。ところが、日本の有数の優良企業たるNTTが電子マネー関係の特許をすでにとったという話があり、これをもとに、米シティーにたいする包囲網を形成しないことには、邦銀はシティーバンクの特許にたいして莫大な使用料をはらわざるを得なくなり、さらに、もしかすると邦銀のうちのどこかが専用使用権を獲得して、他銀行に対して利用権を請求するようになるかもしれない(一方、弁護士や弁理士の間では、このパテントライセンス料は少額になるのではないか、という議論がなされているそうである)。
 その特許がもし既に取られているとするならば、今年1月施行の改正特許法の「事後異議申立て」制度がつかえそうであったが、これも附則により、拒まれる事となってしまった。また、「新規性」「有用性」という観点からも、若干の問題点を残していたシステム(あくまで個人的な意見)であったにも拘らず、認められる、というのは若干納得のいかないところではある。

 この問題は工業所有権の属地主義の問題、法の域外適用、外国判決の承認の問題にもからんでくるとおもわれる。特に、後者に於いては、もし仮に日本でシティーバンクの特許請求が認められたとして、日本で特許侵害の判決が出た場合、アメリカにあるサーバーも差し止めできるかどうかの問題である(知的所有権問題では、「IBM対 日立」事件)。つまり、このシステム自体がグローバルなものであることにも関係し、例えばこのシステムが有効に利用されるためには、日本・アメリカ・欧州などといったところにそれぞれサーバをおいて、外国為替を行うものだから、例えば、日本やアメリカにサーバーをおいたとして、もし日本で侵害判決がなされると、アメリカのサーバも利用停止にする事ができるのか、という問題である。この点を含めて、今後大いに議論がなされそうである。さらに、アメリカが1994年8月に日米包括経済協議の中の知的所有権交渉のなかで日本側に要求した「特許後の異議申立て」制度(今年1月の特許法改正のメルクマール)を使う事で、もしかするとシティーバンクがすでにとったと(弁理士の酒井先生がおっしゃっていたが)されている特許に対して日本側として反論できたのではないか、という事も考えたが、これについては上記の(1)により、破棄せざるをえない。しかし、アメリカで取られた特許については、アメリカの「均等論」を使う事によって阻止できるのではないか、と考える。(余談であるが、日本の特許法においても、「均等論」を導入すべきとの見解も多い。この点につき、認知限度論などの否定的な見解もあるが、特許法70条の解釈の問題や、WIPO特許調和条約との関係から、今後も大いにいに議論がなされる事であろう)

 電子商取引を含めたネットワークでの知的所有権問題は、まだまだ沢山存在する。ここには詳しく挙げなかったが、例えばネットワーク間でのソフトウェアの流通に絡めた、著作権の問題(ある一定の取り決めにしたがってデータ変換されたソフトの頒布など)、また、Internet Domain名と商標との関係(電子商取引における市場参入の位相で考えられる)、バーチャルモール(NTTデータ通信の商標名)内での、商標記載や、WWWにおける画像等の著作権(WWWの画像データを取り込む事が、著作権法で言う「複製」にあたるか否か)、更に、コンピューター関係で言うと、ソフトウェアの特許性なども、大いに議論されるであろう。私たちの班は、電子マネーが導入されたときのドメスティックな法律の問題点や、これからのあり方を模索する事を行って来たが、ネットワークを通した電子商取引という事を考えると、さらに、Internet等のワールドワイドなネットを通じたものたりうることを考えると、知的所有権や、強いては独占禁止法(反トラスト法)に絡む問題ともなりうるのである。

7. 参考文献その他

<注>この文書を作成するにあたり、以下の書物を参考にさせていただいた。
「日米特許摩擦」 塩入明 著 [中央経済社] 1993
「特許の文明史」 守誠 著 [新潮選書] 1994
「逐条解説改正特許法」 熊谷健一 著 [有斐閣] 1995
「工業所有権法逐条解説第13版」 特許庁 著 [社団法人発明協会] 1996
「パリ条約コンメンタール改訂版」 [法学書院] 1995
「新版国際経済法」 丹宗暁信・山手治之・小原喜雄 編 [青林書院] 1993
「電子金融の衝撃--銀行が消える日-」 日本経済新聞社 編 [日本経済新聞社] 1996
「国際民事訴訟法」 石黒一憲 著 [新世社] 1996 (5章)
「電子商取引環境整備研究会中間報告」 通商産業省公報
「金融研究」 1995 / 7
「特許公報 特平7-111723」(シティーバンク:電子通貨システムに関する特許出願公告)

※注1

 この時感じた「違和感」というのが、恐らく、「ビジネスの手法」に対する違和感、であったのだろうと思います・・。(2001/07/01)

※注2

 日本に措いて、Intellectual Property の翻訳が「知的所有権」となっているあたり、やはり知的な活動に対する日米の差異が生じざるを得ないのだろうな、という気がしています。知的活動を積極的に活用し利益を生む、というのが米国の考え方であり、日本は「ただ持っているだけ」という考え方である気が・・・。(2001/02/14)

※注3

 NTTは、「電子現金実現方法及び其の装置」という名称に措いて、特許を日本ならびにアメリカ、カナダ、フランス、ドイツで登録している。(特公平2-88838) その後、多数の電子現金方法に関する特許や日銀と共同の特許などを出願、登録したが、これは、(携帯電話, PHSの有効利用法を当時から考えていた筆者にとっては)NTTあるいはその子会社が何らかの形で銀行業務をやることがありうるだろう、ということを予感させるものであった。事実、携帯電話におけるマイクロペイメントは、きわめて日本に措いて定着しうるものであり、現に、行われている事実もある。(2001/07/01)
 #実は、丁度、インターネット時代における「決済の手法」(MONDEX型、ecash型、等等)についても、同ゼミにおいて議論されてたんですよ。其のときに、ふと思ったことではあったんですが・・・。(日本は、おかみからくる請求書には疑問をもたないで自動引き落としを受ける傾向にあるし)


追伸: (2000/08/16)

 まさか、3・4年前に書いた、これが、今話題の「ビジネスモデル特許」に関係しているとは・・・。(ちなみに、ビジネスモデルという英語はなく、Business Method Patent、つまり、<<ビジネスの方法>>に対する特許、というのが、ビジネスモデル特許を指します。)

 ビジネスモデル特許は、平成10年7月、米国において「「ビジネス方法」に該当するからといって直ちに特許性が否定される訳ではない」などとした判決(ステート・ストリート・バンク事件)が出されたことを契機として、一定の条件の元認められるようになった経緯があります。この文書を書いたのが平成8年ですから、その2年後ですね。
 Citibank EMS に関し、当時に比して、この話題に関する本が充実しています。例えば、「電子マネーと特許法」(弘文堂) 相澤英孝編著  などが非常にまとめられています。当時、私はシステム全体のことや特許法そのものについてもあまり知識がありませんでしたから、今読み直してみると、結構勘違いしているな、と思える部分も多いです。(例えば、当時、「レコード」という言葉に、CDの前の音楽レコードなどをイメージしましたから。勿論、データベースのテーブルにおける<行>のことですけどね)

 ビジネスモデル特許については、書きたいことがいっぱいありますが、少なくとも、あまり過度に敏感になる必要はあるまい、ということです。今は、プロパテント時代・・つまり、特許権が優勢な時代です。しかし、またいつしか、アンチパテント時代が必ずやってきます(ビジネスモデル特許の乱立で、ベンチャー企業の芽がどんどんつぶされるようになることは、想像に難くなく、このような現象になることを米国は「その特性上」許さないのです。再度、米国・日本の特許法の存在理由について考えてみましょう。)。その間をしのぐために、郵便局の「確定日付郵便」をうまく利用し、自分自身に郵便物を送ることで(ファイリングはしっかりしてください)、対抗要件を備えてください。。。。。。。

おまけのおまけ※次の年のゼミ(商法:江頭先生):
連結会計制度について

連結会計制度メモ(1997/06)-- 連結財務諸表・連結納税制度も視野に入れて

1. 連結会計・連結会計制度とは?

2. 連結会計制度充実の必要性

  • NIFTY20とTOPIXの株価推移(figure)→→最近の、外国投資家の動向としては、グループ力の強い企業により投資する傾向あり→→投資対象選定の基準として連結財務諸表が使われる可能性大
  • 国際会計基準との差違の是正→→グループ内でのリスク等の把握の必要性
  • 各企業の法的形式の差違を利用して行われる支配従属会社間の利益操作や粉飾決算の排除(refer to 4a)
  • 企業自身がその実態に即したより適切な経営判断を行なう事を可能とする(管理会計)

3. 歴史的沿革

日本に措ける連結財務諸表制度

  • 1977年4月1日以降開始する事業年度より連結財務諸表が有価証券報告書の添付資料として提出が義務づけられる
  • 1983年4月1日以降開始する連結会計年度から、持分法の強制適用が行なわれる
  • 1988年4月1日以降開始する連結会計年度から、連結財務諸表の有価証券報告書等との同時提出が義務づけられる
  • 1990年4月1日以降開始する連結会計年度から、セグメント情報開示の導入が行なわれる

4. 連結会計制度をめぐる諸々の論点

a.連結会計と配当可能利益計算

  • 配当利益を連結決算ベースで算定する必要性

b.子会社増資・子会社株式売却等に伴う親会社持分変動および子会社の資産・負債評価

  • 現行  規定なし
  • 改訂案 連結調整勘定で処理
  • 方法論1 部分時価評価法 2 全面時価評価法

c.子会社合併と連結会計

合併前の連結財務諸表と合併後の連結財務諸表との一致の要請があるが…

 方法論まだ確立されておらず

d.税効果会計

現行    認められているが任意に近い
改訂案   一時差額に関わる金額を期間配分しなければならない、と変更
国際的趨勢 改訂案に同じ
問題点   税効果会計は連結会計以外にも個別で適応されてしかるべきもの
      → 今後、商法との整合性について検討しなければならない

e.連結・持分法適用の範囲

 (1)連結子会社
 種類  持ち株基準・支配力基準
 日本に措ける現状:持株基準(恣意的な持分変動を招きやすい)
 国際的趨勢:支配力基準(連結基準があいまい)
 該当企業については「全面的連結」が適用される
 (2)関連会社・非連結子会社
 種類 同上
 該当企業については「持分法」が適用される

f.親子会社間の会計処理の統一

  • 「できるだけ」 → 「原則的に」 への文言の変化

g.資本連結手続きの明確化

h.連結財務諸表における表示区分

  • 現行    少数株主持分については、負債の部に計上
  • 改訂案   少数株主持分の項目を負債の部の下に追加
  • 国際的趨勢 改訂案に同じ

ex.キャッシュフロー計算書

  • 営業活動によるキャッシュフロー
  • 投資活動に使用されたキャッシュフロー
  • 資本調達活動によるキャッシュフロー

ex.日本に措ける連結財務諸表制度

  • 1977年4月1日以降開始する事業年度より連結財務諸表が有価証券報告書の添付資料として提出が義務づけられる
  • 1983年4月1日以降開始する連結会計年度から、持分法の強制適用が行なわれる
  • 1988年4月1日以降開始する連結会計年度から、連結財務諸表の有価証券報告書等との同時提出が義務づけられる
  • 1990年4月1日以降開始する連結会計年度からセグメント情報開示の導入が行なわれる

追伸:(2000/08/16)

これも、3・4年前に書いたメモです。今思うと、大学時代すごいことを勉強していたんだなー、と思ってしまいます。

おまけのおまけ※前の年のゼミ(国際民事訴訟法/国際私法:石黒先生):
知的財産権(知財)法からみた、電子商取引(EC) -- 知的所有権:特許:ビジネスモデル特許:電子決済システムの問題

選択納税制度の実現 - 日本政府の財政を健全化する為に

選択納税制度の実現 - 日本政府の財政を健全化する為に - はじめに

ここ数年、日本の財政のことがよく話題となります。600兆円の国の借金をどうするか、であったり、日本は以前の輝きを失った、であったり、国債の評価が下がった、であったり、です。

日本の財政を支える元になる収入源は、「税金」です。でも、庶民感覚としては果たして如何でしょうかか。「納税」の意識というものが果たして皆さんにはありますでしょうか?筆者自身は、毎年確定申告をしていますから(自営業でしたからやむを得なかったのです)、毎年いくら税金が・・ということは、計算していますが、サラリーマンの皆さんの場合は、なかなか実感がわかないのが実情でしょう。

所得税や地方税(住民税)はわからんが、おいらは酒税やタバコ税をたくさん払ってるぜ!とおっしゃる方・・・それも非常に素晴らしい事です。数年前の私は、「所得税よりも酒税のほうが多かった」ことをウリにしていましたし・・・(笑)

選択納税制度 - 提案

 筆者が提案する、「選択納税制度」、は、以下の通りです。

  • 確定申告で確定される税金は、当然のごとく払う義務を有する
  • 確定申告で確定された以外の「新たな税金」として、(余裕がある場合に)オプションの税金を一緒にはらうことが出来る制度を確保する。オプションというのは、「私は教育に対してもっと税金を払う余裕がある」「私は、地方自治体の財政の悪化を懸念しているので、地方自治体への交付金に使ってほしい」などの場合にのみ使うことが出来る。(これは、義務というよりも、財政、政治に対しての「権利」としての位置付けともなりうる)
  • (オプション)できれば、「選択肢」については、国民で投票し選べるものとする。(どれを選択肢にするか、ということ。例えば、「教育」「地方財政」という選択肢の作り方もあれば、「義務教育」「生涯教育」「医療」という選択肢の作り方もありますが、その「選択肢」自体を国民が作ることができるようにする、ということです)

この制度を導入することによるメリットは、以下のとおり。

  • 選択納税制度は、最初は「お金持ち」しか使わないものであるかもしれない。しかしながら、少なくとも真剣に「日本国のことを考えている」と言える人間にとっては、自己の主張を全うする良き機会となりうる。
  • 国家の財政が少なくとも5%以上は潤うことが予想される。
  • 国家に対して真剣に考えている人間が、どういう「カテゴリ」に対して興味関心を持ち、どのように予算を配分してほしいのか、ということが手に取るようにわかる(公表される)。つまり、今までは、選挙権によってのみ「自分がどういう政治参加ができるか」という権利を行使することができなかったが、国政の腐敗を見てわかる通りに現状の政治に任せることは事実上不可能となった今、「納税を通して、何を今してほしいのか」を訴える機会を有することが可能となる。
  • 「我々の税金を....」とただ言いっぱなしの無責任な「ジャーナリスト」や困ったチャンの意見を奪いさる:-) ... 「余分な」税金を払っている事が証明されたものが、本当に「税金の使い道を真剣に考えている」ものなのである
  • (選択肢に「地方行政」が入れば)故郷に錦を飾れなかった都会育ちの方々が故郷に「目に見える形で」貢献する事の出来る一つの<選択肢>が生まれる。

尚、段階的に「余分に払った分の税金分」を数年後に控除していくようになれば望ましいでしょう。

余談:控除?

小生がいつも疑問に思っているのは、何故税率計算式が「リニア」(線形)なのか、と言う事です(330万円を境に2割...うんぬん)。化学の中和曲線を応用した「n回微分可能な」「なめらかな」<税率曲線>なる式を考案する方が、よほど「中流意識」と「横並び主義」を是正するための起爆剤になりえると思うのですが....

選択納税制度の実現 - 日本政府の財政を健全化する為に - 終わりに

この制度自体は、私のオリジナルのアイディアですが、官公庁に行った東大OBの友人達にはおおむね好評だったので、アイディアを公開してみました。

もともとのアイディアのきっかけは、「権利」と「義務」は表裏一体の関係性を有するものであるのに、こと納税に至っては、どうして「義務」ばかりが先行してしまうのかな、と考えたことです。人は、「取られるもの」に対しては、一歩間を取ったスタンスを持ってしまうもの。全く逆転の発想で、「政治参加できる機会」としての納税(確定申告)と考えられるようにしてはどうか、というのが、根底にある発想です。

(また、重要なポイントですが)現行の憲法に全く抵触することなく、この制度は導入することが可能です。電子政府や電子納税(e-Japan 構想)などが可能となれば、面白い展開ができるかもしれませんが、今の「確定申告」のやり方でも、一行か二行の項目を追加するだけで可能でしょう。

皆さんのご意見いただければ幸いです。ご意見は「こちら」よりお願いいたします(当ページをご覧頂いた事がわかるような内容のメッセージにして下さい)。

おまけのおまけ※前の年のゼミ(国際民事訴訟法/国際私法:石黒先生):
知的財産権(知財)法からみた、電子商取引(EC) -- 知的所有権:特許:ビジネスモデル特許:電子決済システムの問題

Terra-International, Inc. -- テラ・インターナショナル

1. はじめに(違憲立法審査制度について)

 「違憲立法審査」・・この言葉をご存知でしょうか?(権利として考えれば、「違憲立法審査権」)

 ご存知のとおり、立法府(=国会)は日本国憲法に基づき、「日本国唯一の立法機関」という権限をもっています。行政府は、立法府が作成した法律に従った行政を行い、そして、最高裁を長とした司法府が、 法に基づいた「裁判」をしてくれます。(三権分立)

 権力を一つの機関におくと、独裁的な権限をもった機関が暴走し、歯止めが利かなくなってしまう・・・こういった観点から、三権分立というシステムが確立されていった歴史がありました。(「法の精神」:モンテスキュー) 所謂、「チェックアンドバランス」です。

 立法府(=国会)は、毎年数百にも及ぶ法案を提出し、それが法律として認められます。しかし、もし、その法律が憲法の精神に反しているとして、誰がそれをチェックできるでしょうか。現在、システム上、司法府の「違憲立法審査」という仕組みで、唯一、立法府の<行き過ぎ>を監視しうるようになっています。

 以前、刑法200条において、「尊属殺人罪」というのが存在しました。尊属とは、自分の直属の親族のことを指します。この法律では、自分の上の親族(自分の父親や母親、祖父母など)を殺人したときに、”無期懲役か死刑”しか裁かれる道はなく、この事が、憲法上問題がないか、という議論がなされたことがあり、最高裁に付されたことがあったのでした。(今は、刑法200条はなくなりました。法解釈上は、色々な議論がありますけどね)

 このように、憲法の精神に反しているであろう法律に対して、違憲判決を出す、ということは、たまにですがあります。・・・(でも、戦後ほとんどないけど)

 しかし・・・問題なのは、この「違憲審査」につき、「具体的な事件(訴訟事例)がない限りは違憲審査ができない」という、システム上の問題です。実は、オーストリアやドイツでは、この違憲審査は、国民に開放されています。すなわち、国民が明らかにおかしいと思った法律に対して、裁判所に(具体的な訴訟がなくても)訴えることができる、のです。これは、違憲立法審査の制度が2種類ある事を踏まえてください。「抽象的審査制度」と「付随的審査制度」です。

抽象的審査制度」とは、特別に設けられた憲法裁判所が、具体的な訴訟と関係なく、抽象的に違憲審査を行なう方式であり、一方の「付随的審査制度」とは、通常の裁判所が具体的訴訟事件を裁判する際に、その前提として事件の解決に必要な限度で、適用法条の違憲審査を行なう方式です。「付随的審査制度」の考え方は、伝統的な司法の概念に立脚し、個人の権利を保護することに重きを置いた考え方で、私権保障型といえましょう。「抽象的審査制度」は、其の逆で、日本が採用しているものです。憲法適合性についての抽象的審査権が、最高裁判所ではなく、事実上内閣法制局の判断にゆだねられている、とも言えます。

 私は、この「違憲立法審査」を、国民に広く開放すべき、だと思っています。

 尚、オーストリアやドイツでは、引退した弁護士のおじいちゃんが、暇つぶしに違憲立法審査を提出するのだとか。うらやましい限りですね。はい。

2. ハンセン病訴訟に思う・・

 こんな酷い法律、なんでずっと残ってたんでしょうね?

 この法律がずっと残っていた、大きな理由の一つは、国会議員の不作為です。不作為とは、なにもしない、ということ。不作為による人権侵害だったのでした。

 でも・・・ちょっと待ってください。上の「違憲立法審査」を、国民が提出し、それが受け入れられていれば、解決しませんか?具体的な被害者による訴訟ではなく、国民が「これはどう考えてもおかしい」という法律に対して、チェックを掛ける・・・システムがもし今まで存在していれば、これほど酷い話にはなりえなかったのではないでしょうか。

3. 国会議員の給与って高い?

 最近まで、(オレンジ共済事件で有罪が確定されるまで)国会議員の地位に居つづけようとした国会議員さんがいましたね?

 1億円(いや、もっと多い)以上の国民の税金が彼の懐に入ってしまいました。

 なーんで、こんなことになるんでしょ?

 国会議員の給与等を規定する法律をつくるのは、自分達です。つまり、国会議員です。こんな馬鹿げたことってないですよねー。「1人あたり1億円の給与を国会議員(=公務員)に支給する」という”自分に都合の良い法案”を提出できるのも国会議員なんですね・・・こんな馬鹿げた法律が出来たら、誰がとめられます??

 上の、違憲立法審査、を国民にオープンにしたら、こおんな法律は一発でOUTですね? cf 「特別職の職員の給与に関する法律」

4. 憲法論争(憲法改正議論)

 いやぁ。小泉じゅんちゃんは、頑張っていますね〜。5-60年間も変えられなかった、憲法を改正しようと言ってるんですから・・・。(おっと・・本当は、憲法改正といっても単に9条の事しか考えていないのかも・・。)

 でもですねー。憲法の議論をするんだったら、自分達(=国会議員)が作る法律に対するチェック(憲法の精神に違反していないか)をもっと厳しくすべきだ、と言ってくれたほうがよいように思いますね〜。

 具体的な事例がなければ、法律に対するチェックが出来ない・・・こんな、今の違憲立法審査に対して、みなさんはどう思いますか?「前例のないものは何もしない」・・この発想は、日本が「横並び」主義と呼ばれる最大の原因でもあるのですが、まさしくこと「憲法」の事を意識しても、この「前例主義」が成り立っている、というのは、極めて滑稽な事でしょう。

 私は、小泉さんには、郵政3事業民営化のことよりも先に、この「違憲立法審査」「違憲立法審査権」を国民に広くオープンにする改革をしていただきたいと思っています。

 そして、(今後の司法改革を含めた議論になるかと思いますが)違憲判決がなされたら即座に国会に措いて審議をしなければならないようなシステムにすべきです。こうなって初めて、国会議員の不作為を言及できるように・・社会がなっていくことでしょう。

ご意見は「こちら」よりお願いいたします。

Windows最適環境構築 -- Windows環境をより便利に -- ファイル管理・文字コード変換ツール・メーラー紹介等

1. Windows最適環境構築 - はじめに

 ここ数年、外の会社の中で作業をする機会も増えてきているのですが、大体において、デフォルトのWindows(NT, 9x問わず)の環境では、作業がしづらいことが多く、いつも同じフリーソフトやシェアウェアソフトをダウンロードしたりして、作業環境を筆者の自宅の環境とほぼ同じにすることが必要です。筆者自身は、MS-DOS時代からDOSのCUI (Command line User Interface)に親しんでいたためか、DOS時代からずっと使っているツールも多いわけですが、皆さんにもいいツール群を知っていただこうと思い立ち(あとは、同じ環境をどうせ様様なところで構築するのだから、自分のためにも、と思って・・)、「Windows最適環境構築 -- Windows環境をより便利に、より使いやすく(フリー・シェアウェア・商品)」を書いていきたいと思います。

注:尚、かなり前に元々書いたドキュメントなので、現時点(2003/5)でかなりリンクが「デッドリンク」になっているのもあります。NotePadの書き換えツール系に関して特にそうです。ですから、シェアウェア(秀丸)や市販ソフト(MIFES)などを使っても「InternetExplorerでの<ソース表示>の書き換え」が出来ますので、そちらに切り替えることをお勧めします。

2. Notepad を 書き換えよ

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしますが・・・私自身がいつも思っていること。それは、「WindowsにバンドルされているNOTEPADは使いづらい」という事です。漢字変換もままならない・・こういう自体が、日本のIT化(死語?)を阻んでいることを、誰も気がつかないのでしょうか・・・。大体、Internet Explorerで「ソースを見る」のデフォルトはNotepadだし、「ソースを見る」の設定は変えられないし.... そんな中、漢字コードがEUC (Enhanced Unix Code)のHTMLがあると、文字化けてて思うようにみれませんよね。

 #大体に措いて、日本が米国からITで数年遅れている、といわれるのは、単純な話、
 #こうした日本語環境がままならないことが多いから優秀なSE達がくだらないことに
 #時間を割かなければならないから・・・だなあ。(余談)

 はい、そういうことを常々思っている人のために紹介するのが、「メモ帳トラッパー」。これは、Windowsにバンドルされているnotepadを、自分の好きなエディターに関連付けてくれる、という代物です。例えば、私がつかっている「WZ-EDITOR」や「MIFES」は自動漢字コード判別をファイルオープン時にしてくれるので、EUCファイルも文字化けずに見ることができたりします。つまり、「メモ帳トラッパー+MIFES/WZ-EDITOR」で、テキスト形式ファイルは漢字コードを気にせずに読むことができる(+編集できる)というわけですね。ただ、WZ-EDITORはバージョンアップが遅いので、私は、「MIFES」に切り替えてしまいました。UTF-8の自動認識やXMLの整形チェックなども出来、これは使えます (あっと・・ただし、UTF8は一部自動認識してくれません。BOMがあるファイルは自動認識しますが、無い物//UTF-8Nはも文字化けります・・ 例えば、Google検索で表示される際、文字化けしてるサイトにはBOMが無いのでMIFESで見るとShift_JIS認識となり、文字化けします)。最高です!MIFESのバージョン6.0.5以上では、「プリ・ポストプロセッサ」として「MIWUTF8」を使うと、UTF-8Nを自動認識し、SHift_JIS変換してから、セーブ時にはUTF-8N(BOMなし)で保存します。

Tips: BOM=0xef 0xbb 0xbf の三バイト で、(Byte Order Mark)の略です。このBOMがあると、PHPやASPなど、思わぬところで「エラー」を発生させる要因となることがあります。(特に、ASPでディレクティブ指定するときなど)・・このような場合、UTF-8NでASPやPHPファイルを保存し、Response.Writeやechoの最初にBOMをつけるようにすると、「Google検索で文字化けせず」「ASP.PHPのエラーも起こらない」事でしょう。 MIFESのMIWUTF8を使う方法もありますが、FileVisor付随のバイナリエディタやMIFESのバイナリエディタで、最初の3バイトを削除する、という手法をとっても良いです。

 「メモ帳トラッパー」は、以下のようなお悩みを持つ方におすすめです。

  1. メモ帳に関連づけられているファイルを使い慣れたエディタで表示したい。
  2. Internet Explorerの「ソース表示」をメモ帳ではなく、使い慣れたエディタで表示したい。
  3. ソフトをインストールしたときに表示されるReadmeファイルを使い慣れたエディタで表示したい。
  4. ついでにファイルの印刷も使い慣れたエディタを用いたい。
  5. EUCコードのテキストや、改行がLF (UNIX形式)のテキストファイルを、あまり意識せずに編集したい。

 実は、このソフト、「シェアウェア」ではなく「日本酒ウェア」(笑)という代物なのですが、作者の方が途中でアップデートをあきらめてしまったらしく、今は、シェアレジにしか残っていないはず。ということで、同じような機能を持つものとして、「DUMMYPAD」(フリーウェア)もおススメ。

 尚、Windows2000を利用している方は・・ちょっと注意が必要です。なぜなら、「メモ帳トラッパー」も「DUMMYPAD」も、C:\WinNT\System32\(Cドライブであるかどうかはわからない。環境によって異なるが・・・通常、システムディレクトリは%SYSTEM%で表現します・・。)の中にあるNotepad.exeを書き換えるのですが、Windows2000は、システムファイルを書き換えたりすると「元に戻そう」とする機能が働くのです(これは、単純な話、むやみやたらとSystemディレクトリの中身を書き換えられると、ウィルスに感染しそうになったときに困るでしょ?ってこと)。ですから、Windows2000をセーフモードで立ち上げるなり、%SYSTEM%dllcacheディレクトリのnotepad.exeを削除してインストールするなりの手法が必要です。詳しくは、他のInternet Siteにて。

 ちなみに、エディターというのは、MS-WORDや一太郎といったワープロソフトよりもさくさくと動く、テキストファイル作成・編集専用ソフトのことであり、WZ-EDITORのほかには、「MIFES」、「Em-Editor」、「DANA」、「秀丸エディタ」 などがあります。DOS時代には、VZ-EDITORなどをつかっていたなー・・・。

3. ファイルの中身を覗け!

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしますが・・・と、同じ事を言っていてもしょうがないですが、Windowsに標準に添付されている「エクスプローラー」(「スタート」→「アクセサリ」→「エクスプローラー」)・・これも、使いづらい。(というのは、ファイル閲覧ソフトになれている筆者だから言えることなのかもしれませんが・・。) うーん・・大体において、UNIX系では必須の、「.***」(ドット+ファイル名・・例えば、.bashrcや.htaccessなど)というファイルをエクスプローラーから作ろうとすると、「ファイル名を指定してください」といわれてしまうし。。

 「圧縮されたファイルの中身をワンクリックで見る」「同じく、圧縮ファイルをワンクリックで解凍する」 「画像ファイルの中身をワンボタンで覗く」「(DOSの)FDのようにファイル一覧を表示、コントロールする」「(上の2で書いた、エディタで)ファイルをワンボタンで編集する」・・・・こんなことができれば、すばらしいと思いませんか? こんな要求を満たしてくれるのが、ファイル閲覧ソフトの「FileVisor5」です。シェアウェア。

<FileVisor 5(画面は、FileVisor4のときのもの)> 

 

 画面は、こんな感じですが、使い方はいろいろ。まず、ファイルを選択した上でキーボードの「V」を押すと、中身が表示されたり(テキスト系の場合は中身が、画像系の場合は、画像が表示される)、「E」を押すと編集ができたり、ダブルクリックすると、ファイルの拡張子に対応した処理を行ってくれたり・・あとは、LHAで圧縮されたファイル(拡張子.lzh)は、「V」ボタンで圧縮された中身が見え、「U」ボタンでUnpackつまり解凍ができる、などなど、多機能です。 圧縮ファイル(.lzh, .tar, .zip, .gz, bz2など)は、統合アーカイバープロジェクトに、対応DLLが容易されていますので、Windows9x系では C:\Windows\System、NT系ではC:\WinNT\System32ディレクトリにDLLを置くと、「それだけで!」上の機能が使えるようになります。大変便利便利。もう、LHACAなどは必要ありませんね?あと、この関連で便利なのは、「Explzh」です。FileVisor5で、.jar、.zipファイル等に「関連付け」しても良いでしょう。このソフトは、統合アーカイバプロジェクトの全ての最新ファイルを自動的にダウンロード/インストールする機能も有していてかつ圧縮ファイルを「ツリー表示」してくれます。これは便利便利。

FileVisor5に標準でついている「ビュワー」(エディタ)は、UTF-8Nを自動認識してくれますが(これは非常に便利)、保存時にUTF-8にしてしまいます。つまり、BOMがつきます。Mifesと共存させている場合など、注意が必要です。

 統合アーカイバープロジェクト から、個別ライブラリ / DLL Libraries DLL類をダウンロードし、展開した中の「.DLL」ファイルを、システムディレクトリ(\Windows\Systemあるいは\WinNT\System32)にコピーします。最初はUNLHA.DLL が良いでしょう(自己解凍.exe形式だし。そもそも、UNLHAが使えるようにならないと、他のDLLはLHAで圧縮されているから、解凍できなかったりする・・)。

 これに似たファイル閲覧ソフトとしては、「WinFD」が有名です。DOS使いだったひとで知らない人はいないくらいに有名なFD (A. Idei氏の)のWindows版ですね。今でも、たまに、Linux用のFD (RPM化されてます)を使ったりしています。

 余談ですが、筆者は、「コンピューターになれる」ためには、「標準的なディレクトリ構造をともかく覚える」ことと「たくさんのファイルの中身を見る」ことだと思っています。そういうときに、エクスプローラーではやっぱ無理があるんですよね・・。尚、FileVisor5に標準についてくるファイルビュワとテキストエディタはUTF-8などに対応しています。

4. いつも使うメールクライアントソフトだからこそ・・

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしま・・・・(まだ言ってる・・)。。。。OutlookやOutlook Expressは、どうも使いづらい(と感じてしまいます)。はっきり言えば、私は使った事がありません。OSのUpdateの度に入ってくるのははっきり行ってうざったいとすら思えます。

 いつも使うソフトだからこそ、多機能で使いやすいものを・・ということで、Becky! Internet Mail 2 (シェアウェア)をおススメします。 日本発のメールソフトですが、海外では特にドイツで人気が高いと思われます。

 Ver2.0になって、更にバージョンアップしたわけですが、多機能で、メールを結構使う人にとっては必須ソフトと言えるでしょう(根拠を後述します)。

 昔は、パソコン通信のNIFTYSERVE(現在の@NIFTY)だったものですから、NiftermAirCraftなどを使っていましたが・・・。やっぱ、インターネットメールを扱うなかで一番いいな、と思うのは、Becky!ですね。

 もう一つ、Becky! 2で「GOOD!」と思うのは、「スレッド管理ツール」が使えること。いやー、これは、筆者が2000年2月くらいに、BitValleyのMLにおいて、以下のようなことを言っていたことがあったからです。MLを30以上管理していた筆者にとっては、メーリングリスト内で「ルール」や「マナー」についてあまり議論があることは好ましくないと思っていたので、「技術的に解決できること」としていくつかあげていたことの一つだったのです。わざと、質問形式にしましたが・・・(笑)。

 Becky! 2では、「スレッドを切る」ことと「スレッドをつなげる」ことが簡単にできるようになっています。筆者は、いまでは、「スレッドを守ってくれない」メーラーを使っている方のメールも、このテクニックで解決しています。

投稿数が多いメーリングリストの場合、どうしても、スレッド(つまり、どのメールに対しての返事であるかを、エクスプローラー
風に見ることができる機能)から必要な情報を検索するのが中級者くらいでは一般的です。

|---[MLname:002] こんにちは
|   |---[MLname:004] Re:こんにちは
|---[MLname:003] はじめまして
  |---[MLname:005] RE:はじめまして
    |---[MLname:006] Re:RE:はじめまして

といった具合に、スレッド表示されます。(スレッド対応メーラーを使うと)

これは、メールのヘッダにある、
|In-Reply-To:
行が、どのメールの返事であるかを読み取って実現します。
(Reference行と)

しかし、In-Reply-To 行をつけてくれないメーラーから送られたメールは、スレッドからはずれ、スレッド対応
メーラーを使っている人でも非常に整理がしにくい状態になってしまいます。(なぜか、というと、RFCにはないから・・・単純な理由)

そこで、質問なのですが、In-Reply-To行がついていないメールであって例えば「Re:[MLname:003] はじめまして」というメールサブジェ
クトであれば、「[MLname:005]Re:[MLname:003] はじめまして」といったメールサブジェクトにおきかわるようなML-Soft、あるいはML
サービスはないものでしょうか。勿論、In-Reply-To行がある場合は
「Re:[MLname:003] はじめまして」は「[MLname:005] Re:はじめまして」
におきかわることが前提です。

これであれば、中級者くらいの方でもメール分類(というか、どのメールについての返事であるかをある程度分類すること)
が多少楽になりますし、議論もしやすくなるかと思います。

これも、技術的にさほど難しいことではないだろうと予想されることなのですが。いかがでしょうか。

 あと、Becky1を使っていた方向けに、Becky2に乗り換える際、コンバートツールがあります。更に、Becky2には色々なプラグインがあります。私のお気に入りは、「マルチレスヘルパ」と「メール集計ソフト」です。後者の方は、メーリングリストの中でどのメーラーが良く使われているかを調べる事が出来ます(みて分かるんですが、殆どのMLで、投稿数の多い人の殆どがBecky!を使っている事がわかります。まあ、LinuxMLなどは例外ですが(笑))

5. FTP、TELNET .... etc.

 FTP (File Transfer Protocol)や、TELNETは、ローカルで作ったホームページを、リモートのサイトにアップロードしたりその逆をしたり、また、インターネット上にあるファイルを取ってきたりするときにつかうものでありますが、そのソフトにも、色々なものがあります。一応、Windowsに標準で、TELNETのツールはついてきますが(「スタート」から「ファイル名を指定して実行」で、「TELNET」とやると、TELNETできます。また、DOS窓からFTPもできます)、これまた使いづらい。。。というわけで、FTPにはWS_FTP (日本語版)FFFTP、TELNETにはTera-Term秀Term Evolutionをご推薦いたします。

 WS_FTPは、定番ソフトだから良いとして、FFFTPは、なんといっても、EUC->Shift-JISやその逆のコンバートを自動的にやってくれる点を高く評価し、お勧めします。以下の図の、「EUC」「JIS」を選んでおくだけで、漢字コード変換を自動で行ってくれます。

<FFFTP>

 TELNET用(本当は、ターミナルエミュレーター=通信ソフト というべき・・)では、秀丸エディターを使っているいないに関係なく、秀Term Evolutionが使いやすくてよいでしょう。両方とも、パソコン通信にも対応しています(ました)。

6. Jarファイルを覗け!

Javaプログラマ・エンジニアの皆さんは、jar, warファイルの中身をどう覗いているのでしょうか?jar, warファイルの中身を、例えばWinZipで覗いたとしても、Jarファイルと言うのはそもそもディレクトリ構造をそのまま入れているわけですから、どこに何があるのかさっぱりわからないものです。

そこで、「FileVisor5」の有効活用法をお教えいたします。
http://www.lightship.co.jp/fv5/
勿論、ダウンロードしてインストールしている事が前提です(笑)。
統合アーカイバプロジェクトからUnzip.dllをダウンロードしておく必要もあります。(JARファイルは、基本的にZIP圧縮形式ですので)

[Alt]+[f7]で、「動作環境の設定」を選びます。(「ツール」→「動作環境」でもよい)
「アドインビュア」タブを選択し、「追加」ボタンをクリック。
「対象拡張子」を[.jar]とし、「プログラム名」を
"C:\WinNT\system32\rundll32.exe" "C:\Program Files\Common Files\LightShip\lsparcvw.dll" cavRunView
にします。(""を忘れずに)
そして、OKを押して、一旦「動作環境の設定」を閉じます。

.jarファイルを選択した状態で「V」キーを押すと、JARファイルの中身がツリー表示されます。勿論、エクスプローラー風になっていますので、[TAB]や[←][→][↑][↓]を組み合わせると、マウスを使わなくても中身を楽々確認できます。(確認後、そのウィンドウをクローズするには、[ESC]キーを使います。)

尚、「Explzh」などのツールを「V」キーに対応させる事もできます。上の「プログラム名」を「Explzh」の.exeファイルにポイントするだけです。(FileVisor5のlsparcvw.dllは、たまに他のプログラムと競合を起こしてエラーがでますんで、このツールも覚えておくと良いでしょう。)「Explzh」は、とあるディレクトリにある、アーカイブファイル内のファイル名を検索する事が可能なので、何かJavaでエラーが出た場合のクラスファイルの「特定」をするときに非常に役に立ちます。

余談:Explzh」は、頻繁に更新されていますが、登録しておくと、ありがたいことに(本当に親切に)「メールで」お知らせが来ます。こういう地道な努力が、シェアウェアやフリーウェアの発展につながっていくんでしょうね。

7. 一括文字コード変換ツール

Shift_JISで書いたファイルを、すべてUTF-8にしたい場合とか、移植の為にShift_JIS->EUCにしたい、といった場面がありますよね?ただ、一つ一つのファイルに対し、いちいちエディタを開くのも面倒くさい。そこで、Unibirth.com「CharsetConverter」をお勧めします。 コマンドラインからの自動変換もサポートしており、複数のファイルを一括して変換するような使い方も可能です。例えば、Windowsでの右クリックの「送る」に、「CharsetConverter」を対応させる、など。そうすることで、Shift_JIS、EUC-JP、ISO-2022-JP、Unicode、UTF-8 の相互変換と、改行コードの変換が非常に楽になります(一括文字コード変換)が、ただ、唯一の弱点は、出力時におけるUTF-8Nに対応していない点です。

APPENDIX. さいごに...

 まあ、大体の筆者の環境を説明したわけですが、いずれは、実際のダウンロードの仕方や、詳しい設定の仕方なども書いていこうかと思っています。

 ただ、少なくとも、「ファイル閲覧ソフト」(エクスプローラーがわり)や、エディタを任意に指定できるソフトなどは、知っていて損は無いです。損は無いというより、今後のWindowsに対する意識がかなりかわっていくことでしょう。

 例えば、筆者は、Oracle Master Gold 8, 8i を、まったくのド素人のときから1週間ほどの勉強で合格しましたが、その際は、Oracleのディレクトリのファイルの中身を色々とみましたから。・・・そういう積み重ねが、IT力(死語?)のアップに貢献する、というわけです。

 あと、実は、筆者の環境では、Windows環境でLinux-OSのコンピューターと(sambaで)ファイル共有をしているのですが、Windowsのエディターで、Linuxコンピューターの中身を見れるし、エディットも(漢字コードを全く気にせずに!)できます。これは、かなりの時間削減につながることです。File Visor 5MIFES + Explzh は、最強 です。

 

・・・では、がんばってください。

 

P.S.  別に、Microsoftが嫌いというわけでもないです(年25万円も払って、Universal Subscriptionのライセンスを買ってますし)が、使い勝手のよさや悪さ、というのは、公平に判断すべきもの・・・。ということで、本当はもう少しMS社にも使い勝手の良いものを作ってもらいたいな〜とは思うんですがね。「OSのデフォルトのインストールに付随する」に恥じないものを、です。(尚、念のため補足して置きますが、Notepadは、あれは「わざと」ライトウェイトになるようにあんな仕様になっているそうです。)

PDFファイルを自動生成

1. はじめに

 PDF ファイル( Adobe Acrobat Readerなどで見えるファイルです)は、一般に広く利用されています。例えば、あなたがある企画書を Microsoft Power Point 2000 で書いたとして、その形式をそのままにクライアントに紙ではなく電子書式で送りたいと考えたとしましょう。そのとき、あなたは、「クライアントはMicrosoft Power Point 2000 を持っているかな?」と考えることでしょう。現在、様様なプレゼンテーション用アプリケーション、表計算アプリケーション、ワープロアプリケーション、などのアプリケーションがあり、その数は数千、数万に及ぶことでしょう。Microsoft製品ならば、(少なくとも)あまり意識せずともよいこともありますが、新しいバージョンのアプリケーションの場合など、やはり不安になることは多いはず。

 PDFファイルは、そんな不安を解消してくれる共通書式を提供してくれます。PDFファイルに変換されたドキュメントは、Acrobat Readerを持っているクライアントに対して適切な表現方法を提供してくれます。

 尚、このドキュメントはWindowsでの使用を前提にしていますが、Linux等であっても、Java系の方であれば、、「Jakartaの杜」POIを参照するのも良いでしょう。あるいは、Apache FOPというやり方もあります。

2. 方法論

PDFファイルを作りたいと思ったら、PS (Post Script)形式からPDFに・・・と考えるのが本筋なのですが、てっとりばやくなんとかしたい人のために、PerlとVBS (VB Script) を使って、あるディレクトリにあるファイル群を一括してPDF形式に変換する方法をここでご提示いたします。勿論、一括して・・などと考えない方は、Office2000製品がはいっている状態で、AcrobatをInstallするとPDFのアイコンができますので、簡単にPDFを作成できます。

 まず、前提条件は、Abobe Acrobat 5.0 (日本語版) をインストールしておく必要があります。 Abobe 社のAcrobat は、インターネット黎明期からその地位を確立しており、現在、標準のフォーマットを提供している、といっても過言ではありません。 ちなみに、Abobe Acrobat 5.0 は、13,000円くらいだったはずです(訂正情報ください)。

 Abobe Acrobat 5.0 には、 Abobe Acrobat Writer というものと、Adobe Acrobat Reader というものと、 Adobe Distiller というものが入っています。今後使っていくのは、 Adobe Distiller です。ちなみに、Abobe Acrobat 4.05をWindows 2000をお使いの場合は、色々と問題が生じますので、Adobe社の情報を参照ください。また、色々と高度な事をしたい方は、Adobe社からSDKを入手し、そちらをご利用になることをおすすめします。

 まず、Abobe Acrobat 5.0 をインストールした後に、Office のファイル(例:Microsoft Word 2000)で「印刷」をしたときにプリンタ名で「Adobe Acrobat Writer」と「Adobe Distiller」があるかどうかを確認ください。なければ以下は意味ありません。

 あと、一応、以下のドキュメントの「LPT1:」の部分は、適宜お使いのOfficeのSP等により変わることもあります。はじめて行う際は、何かテスト用のエクセルファイルなりワードファイルなどをつくって、マクロで、Adobe Distiller にて印刷を行ってみて、そのマクロの内容をVBAで確認することで適宜変えてみてください。

 以下、Microsoft Wordが前提です。Excel、PowerPoint等でも、VBAが存在するし、殆ど同じ手法を使えるのでしょうが、Excel以外はまだ確認していないので、確認したらまたご報告します。

3. VB Script (WSHやVBA) を使う方法

----wordpdf.vbs----

Set WordObj = WScript.CreateObject("Word.Application")
MyDoc = "C:\My Documents\test.doc" 'PDF化したいファイル
On Error Resume Next ' これやっとかないと、あとでエラーになったとき余計なプロセスが生じてしまう
WordObj.Documents.Open(MyDoc)
WordObj.Visible = False
currentPrinter = WordObj.Application.ActivePrinter
WordObj.ActivePrinter = "Acrobat Distiller on LPT1:" ' 環境に応じて書き換えてください。マクロを利用してこの部分を調べておくと良いです
WordObj.Options.UpdateFieldsAtPrint = True
WordObj.Options.PrintBackground = False
WordObj.Options.PrintReverse = True
WordObj.ActiveDocument.PrintOut
WordObj.ActiveDocument.Close
WordObj.Application.ActivePrinter = currentPrinter
WordObj.Quit
Set WordObj = Nothing

----word2pdf.vbs---- (フォルダ内のすべての.docファイルをPDF化)

Set WordObj = WScript.CreateObject("Word.Application")
WordObj.Visible = False
Path = "C:\TEMP"  ' 検索フォルダ名の指定
Set FS = CreateObject("Scripting.FileSystemObject")
Set FD = FS.GetFolder(Path)
For Each File In FD.Files
 If Right(File.Name,3) = "doc" then ' Wordファイルであれば
  call word2pdf(Path & "\" & File.Name, WordObj) ' サブルーチンのコール
 end if
Next
Set FD = Nothing
Set FS = Nothing
WordObj.Quit
Set WordObj = Nothing

Sub word2pdf(filename, WordObj) ' 印刷用のサブルーチン
On Error Resume Next
WordObj.Documents.Open(filename)
WordObj.ActivePrinter = "Acrobat Distiller on Ne01:" ' 各自の環境にあわせて
WordObj.Options.UpdateFieldsAtPrint = False
WordObj.Options.PrintBackground = True
WordObj.Options.PrintReverse = False
WordObj.PrintOut
WordObj.Documents.Close
if Err.Number <> 0 then ' On error resume next しているので、エラーがおきてもエラーをトラップ可能
msgbox("error" & Err.Number & vbCR & filename & vbCR & Err.Description)
end if
End Sub

4. Perlを使う方法

use strict;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Word';
my $CurrentPrinter;
my $MyDoc = "C:\\My Documents\\test.doc"; #ドキュメントの場所... ただし、\は\\にする
my $Word = Win32::OLE->new('Word.Application', 'Quit');
my $const = Win32::OLE::Const->Load($Word);
$CurrentPrinter = $Word->{ActivePrinter};
$Word->{Visible} = 0;
$Word->{PrintReverse} => 1;
$Word->Documents->Open($MyDoc) || die("Unable to open document ", Win32::OLE->LastError());
$Word->{ActivePrinter} = "Acrobat Distiller on LPT1:";
$Word->Options({UpdateFieldsAtPrint => 1,
PrintBackground => 0,
PrintReverse => 1,});
$Word->ActiveDocument->PrintOut({
Background => 0,
Append => 0,
Range => $const->{wdPrintAllDocument},
Item => $const->{wdPrintDocumentContent},
Copies => 1,
Collate => 0,
PageType => $const->{wdPrintAllPages}
});

$Word->{ActivePrinter} = $CurrentPrinter;

exit;

5. EXCEL+VBScript(WSH)

----excelpdf.vbs---- (sheet1のみを印刷)

Set ExcelObj = WScript.CreateObject("Excel.Application")
MyDoc = "C:\test.xls" ' PDF化したいファイル
On Error Resume Next ' これやっとかないと、あとでエラーになったとき余計なプロセスが生じてしまう
ExcelObj.Workbooks.Open(MyDoc)
ExcelObj.Visible = False
currentPrinter = ExcelObj.ActivePrinter
ExcelObj.ActivePrinter = "Acrobat Distiller on Ne01:" ' この部分は、各自の環境にあわせて
ExcelObj.Worksheets("Sheet1").Activate ' Sheet1 のみActivate
ExcelObj.ActiveSheet.PrintOut                ' Sheet1 のみ印刷
ExcelObj.Workbooks.Close
ExcelObj.ActivePrinter = currentPrinter ' ここでエラーがでることがあります・・・
ExcelObj.Quit
Set ExcelObj = Nothing

----excelpdf2.vbs---- (ブック全体を印刷)

Set ExcelObj = WScript.CreateObject("Excel.Application")
MyDoc = "C:\test.xls" ' PDF化したいファイル
On Error Resume Next
On Error Resume Next ' これやっとかないと、あとでエラーになったとき余計なプロセスが生じてしまう
ExcelObj.Workbooks.Open(MyDoc)
ExcelObj.Visible = False
currentPrinter = ExcelObj.ActivePrinter
ExcelObj.ActivePrinter = "Acrobat Distiller on Ne01:" ' この部分は、各自の環境にあわせて
ExcelObj.Copies = 1
ExcelObj.Collate = True
ExcelObj.ActiveWorkbook.PrintOut ' ブック全体を印刷:各SheetのPDF印刷のプロパティが一致していないと、最後のシートのみがPDF化されることがある
ExcelObj.Workbooks.Close
ExcelObj.ActivePrinter = currentPrinter ' ここでエラーがでることがあります・・・
ExcelObj.Quit
Set ExcelObj = Nothing

----excel2pdf.vbs---- (フォルダ内の全エクセルファイルのブック全体を印刷)

Set ExcelObj = WScript.CreateObject("Excel.Application")
Path = "C:\temp" ' 検索フォルダ名の指定
Set FS = CreateObject("Scripting.FileSystemObject")
Set FD = FS.GetFolder(Path)
For Each File In FD.Files
 If Right(File.Name,3) = "xls" then ' エクセルファイルであれば...
  Call excel2pdf(Path & "\" & File.Name, ExcelObj) ' サブルーチンのCALL
 End If
Next
Set FD = Nothing
Set FS = Nothing
Set ExcelObj = Nothing

Sub excel2pdf(filename, ExcelObj)  ' PDF印刷を行うファイルに対する処理のためのサブルーチン
 On Error Resume Next
 ExcelObj.Workbooks.Open(filename)
 ExcelObj.Visible = False
 ExcelObj.ActivePrinter = "Acrobat Distiller on Ne01:"
 ExcelObj.Copies = 1
 ExcelObj.Collate = True
 ExcelObj.ActiveWorkbook.PrintOut ' ブック全体を印刷:各SheetのPDF印刷のプロパティが一致していないと、最後のシートのみがPDF化 される
 if Err.Number <> 0 then ' On error resume next しているので、エラーがおきてもエラーをトラップ可能
  msgbox("error" & Err.Number & vbCR & filename & vbCR & Err.Description)
 end if
 ExcelObj.Workbooks.Close
 ExcelObj.Quit
End Sub

----(ここまで)----

ちなみに、PDFの一ページに一枚のシートを印刷したい、などという場合については省略しますが、ここらへんは、EXCELマクロを記録してVBAのコード(Distillerを利用した印刷のすべてを記録)を参照する事で実装可能かと思います。

6. まとめ

・・・すいません。本当は、もっと正確に書きたいのですが、時間がないもので・・・。一応、成功したら、こちらからご一報ください。

C:\Program Files\Adobe\Acrobat 5.0\Distillr\PDF Output\

あるいは

C:\Program Files\Adobe\Acrobat 5.0\PDF Output\

(あるいは、ログインユーザーのデスクトップ)あたりに、ご希望のPDFファイルができていると成功です。

 このフォルダも、実は変更可能です。コントロールパネルの「プリンタの設定」のPDF Distillerのプロパティって、他とちょっと違いませんか?というか、フォルダ名+*.pdfがはいっていませんか?

 例えば、C:\PDF\ディレクトリを、デフォルトの出力ディレクトリにしたければ、「プリンタの設定」で「Acrobat Distiller」を選び、プロパティを出します(マウスの左クリック)。プロパティシートの「ポート」で「新しいポートの作成」で<PDF Port>を選択→エクスプローラー風にフォルダ選択できる画面がでるので、C:\PDF\をさす・・・・で、OKなはずです(Windows2000, Acrobat5.0でのみ確認)。

 あとですね。今回は、「自動化」させるといっても、高々1つのファイルなのでよいのですが、複数であれば、やはり、いちいちPDFファイルをつくったらPDFファイルがでてくるのってイヤですよね(あくまでサイレントモードでやりたい・・・)?そういう場合は、「プリンタの設定」で「Acrobat Distiller」を選び、プロパティを出します(マウスの左クリック)。プロパティシートの「全般」で、「印刷設定」ボタンを押します。「Adobe PDF 設定」タブにて(アイコンが入っているタブ)、「Acrobat でPDFを表示」と「PDFファイルの保存先を確認」の二つのチェックをはずします。以上でできるはずです(Windows2000+Adobe Acrobat 5.0にてのみ確認)

 あ・・・私は未だわからないのですが、Wordの場合、出来上がったPDFファイルの順序(ページの順序)が逆である可能性がありです。これは、単純な理由で、1page目から順次印刷(=PDF化)して、新しいPDFページは常に上にくるようになっているのですから。
 というわけで、それがいやな方は、プリンタの設定の「Acrobat Distiller」のプロパティで、「全般」タブの「印刷設定」→「レイアウト」タブの「ページの順序」を<逆>にする・・・としてみてください。多分、これでOKでしょう。(Acrobat 4.05の時のみと思われる)

その他、ご興味ある方は、こちらからご一報ください。・・・頑張ってください。

すごいぞ!PHP (sample programs)

jcode.phps

使い方: Perlのjcode.plに同じ

<?
function JcodeConvert($str, $from, $to){
//0:AUTO DETECT
//1:EUC-JP
//2:Shift_JIS
//3:ISO-2022-JP(JIS)
if($from == 0) $from = AutoDetect($str);
if($from == 1 && $to == 2) return EUCtoSJIS($str);
if($from == 1 && $to == 3) return EUCtoJIS($str);
if($from == 2 && $to == 1) return SJIStoEUC($str);
if($from == 2 && $to == 3) return SJIStoJIS($str);
if($from == 3 && $to == 1) return JIStoEUC($str);
if($from == 3 && $to == 2) return JIStoSJIS($str);
return $str;
}

function AutoDetect($str){
$b = unpack("C*", $str);
$n = count($b);
$is_ascii = TRUE;
for($i = 1; $i < $n; $i++){
if($b[$i] == 0x1b && $b[$i+1] == 0x24) return 3; //JIS
if($b[$i] <= 0x7F) continue; //ASCII
$is_ascii = FALSE;
if($b[$i] <= 0x9F) return 2; //SJIS
if($b[$i] <= 0xDF) return 1; //EUC
if($b[$i] >= 0xF0) return 2; //SJIS
if($b[$i+1] <= 0xA0) return 2; //SJIS
if($b[$i+1] >= 0xFD) return 1; //EUC
$i++;
}
if($is_ascii) return 0;
return 5;
}

function HANtoZEN($str, $encode){
//0:AUTO DETECT
//1:EUC-JP
//2:Shift_JIS
//3:ISO-2022-JP(JIS)
if($encode == 0) $encode = AutoDetect($str);
if($encode == 1) return HANtoZEN_EUC($str);
if($encode == 2) return HANtoZEN_SJIS($str);
if($encode == 3) return HANtoZEN_JIS($str);
return $str;
}

function JIStoSJIS($str_JIS){
$str_SJIS = '';
$mode = 0;
$b = unpack("C*", $str_JIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if(($b[$i+1] == 0x24 && $b[$i+2] == 0x42) || ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)){
$mode = 1;
}elseif($b[$i+1] == 0x28 && $b[$i+2] == 0x49){
$mode = 2;
}else{
$mode = 0;
}
$i += 3;
}
if($mode == 1){
if($b[$i] & 0x01){
$b[$i] >>= 1;
if($b[$i] < 0x2F) $b[$i] += 0x71; else $b[$i] -= 0x4F;
if($b[$i+1] > 0x5F) $b[$i+1] += 0x20; else $b[$i+1] += 0x1F;
}else{
$b[$i] >>= 1;
if($b[$i] < 0x2F) $b[$i] += 0x70; else $b[$i] -= 0x50;
$b[$i+1] += 0x7E;
}
$str_SJIS .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}elseif($mode == 2){
$b[$i] += 0x80;
$str_SJIS .= pack("C", $b[$i]);
}elseif($i < strlen($str_JIS)){
$str_SJIS .= pack("C", $b[$i]);
}
}
return $str_SJIS;
}

function JIStoEUC($str_JIS){
$str_EUC = '';
$mode = 0;
$b = unpack("C*", $str_JIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if(($b[$i+1] == 0x24 && $b[$i+2] == 0x42) || ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)){
$mode = 1;
}elseif(($b[$i+1] == 0x28 && $b[$i+2] == 0x49)){
$mode = 2;
}else{
$mode = 0;
}
$i += 3;
}
if($mode == 1){
$b[$i] += 0x80; $b[$i+1] += 0x80;
$str_EUC .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}elseif($mode == 2){
$b[$i] += 0x80;
$str_EUC .= pack("CC", 0x8E, $b[$i]);
}elseif($i < strlen($str_JIS)){
$str_EUC .= pack("C", $b[$i]);
}
}
return $str_EUC;
}

function SJIStoJIS($str_SJIS){
$str_JIS = '';
$mode = 0;
$b = unpack("C*", $str_SJIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
if($mode != 2){
$mode = 2;
$str_JIS .= pack("CCC", 0x1B, 0x28, 0x49);
}
$b[$i] -= 0x80;
$str_JIS .= pack("C", $b[$i]);
}elseif($b[$i] >= 0x80){
if($mode != 1){
$mode = 1;
$str_JIS .= pack("CCC", 0x1B, 0x24, 0x42);
}
$b[$i] <<= 1;
if($b[$i+1] < 0x9F){
if($b[$i] < 0x13F) $b[$i] -= 0xE1; else $b[$i] -= 0x61;
if($b[$i+1] > 0x7E) $b[$i+1] -= 0x20; else $b[$i+1] -= 0x1F;
}else{
if($b[$i] < 0x13F) $b[$i] -= 0xE0; else $b[$i] -= 0x60;
$b[$i+1] -= 0x7E;
}
$b[$i] = $b[$i] & 0xff;
$str_JIS .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
if($mode != 0){
$mode = 0;
$str_JIS .= pack("CCC", 0x1B, 0x28, 0x42);
}
$str_JIS .= pack("C", $b[$i]);
}
}
if($mode != 0) $str_JIS .= pack("CCC", 0x1b, 0x28, 0x42);
return $str_JIS;
}

function SJIStoEUC($str_SJIS){
$str_EUC = '';
$b = unpack("C*", $str_SJIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
$str_EUC .= pack("CC", 0x8E, $b[$i]);
}elseif($b[$i] >= 0x81){
$b[$i] <<= 1;
if($b[$i+1] < 0x9F){
if($b[$i] < 0x13F) $b[$i] -= 0x61; else $b[$i] -= 0xE1;
if($b[$i+1] > 0x7E) $b[$i+1] += 0x60; else $b[$i+1] += 0x61;
}else{
if($b[$i] < 0x13F) $b[$i] -= 0x60; else $b[$i] -= 0xE0;
$b[$i+1] += 0x02;
}
$str_EUC .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
$str_EUC .= pack("C", $b[$i]);
}
}
return $str_EUC;
}

function EUCtoJIS($str_EUC){
$str_JIS = '';
$mode = 0;
$b = unpack("C*", $str_EUC);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
if($mode != 2){
$mode = 2;
$str_JIS .= pack("CCC", 0x1B, 0x28, 0x49);
}
$b[$i+1] -= 0x80;
$str_JIS .= pack("C", $b[$i+1]);
$i++;
}elseif($b[$i] > 0x8E){
if($mode != 1){
$mode = 1;
$str_JIS .= pack("CCC", 0x1B, 0x24, 0x42);
}
$b[$i] -= 0x80; $b[$i+1] -= 0x80;
$str_JIS .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
if($mode != 0){
$mode = 0;
$str_JIS .= pack("CCC", 0x1b, 0x28, 0x42);
}
$str_JIS .= pack("C", $b[$i]);
}
}
if($mode != 0) $str_JIS .= pack("CCC", 0x1b, 0x28, 0x42);
return $str_JIS;
}

function EUCtoSJIS($str_EUC){
$str_SJIS = '';
$b = unpack("C*", $str_EUC);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
$str_SJIS .= pack("C", $b[$i+1]);
$i++;
}elseif($b[$i] >= 0x80){
if($b[$i] & 0x01){
$b[$i] >>= 1;
if($b[$i] < 0x6F) $b[$i] += 0x31; else $b[$i] += 0x71;
if($b[$i+1] > 0xDF) $b[$i+1] -= 0x60; else $b[$i+1] -= 0x61;
}else{
$b[$i] >>= 1;
if($b[$i] < 0x6F) $b[$i] += 0x30; else $b[$i] += 0x70;
$b[$i+1] -= 0x02;
}
$str_SJIS .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
$str_SJIS .= pack("C", $b[$i]);
}
}
return $str_SJIS;
}

function HANtoZEN_EUC($str_HAN){
$table_han2zen_euc = array(0xA1A3,0xA1D6,0xA1D7,0xA1A2,0xA1A6,0xA5F2,
0xA5A1,0xA5A3,0xA5A5,0xA5A7,0xA5A9,0xA5E3,0xA5E5,0xA5E7,0xA5C3,0xA1BC,
0xA5A2,0xA5A4,0xA5A6,0xA5A8,0xA5AA,0xA5AB,0xA5AD,0xA5AF,0xA5B1,0xA5B3,
0xA5B5,0xA5B7,0xA5B9,0xA5BB,0xA5BD,0xA5BF,0xA5C1,0xA5C4,0xA5C6,0xA5C8,
0xA5CA,0xA5CB,0xA5CC,0xA5CD,0xA5CE,0xA5CF,0xA5D2,0xA5D5,0xA5D8,0xA5DB,
0xA5DE,0xA5DF,0xA5E0,0xA5E1,0xA5E2,0xA5E4,0xA5E6,0xA5E8,0xA5E9,0xA5EA,
0xA5EB,0xA5EC,0xA5ED,0xA5EF,0xA5F3,0xA1AB,0xA1AC);
$str_ZEN = '';
$b = unpack("C*", $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
$b[$i+1] -= 0xA1;
$c1 = (($table_han2zen_euc[$b[$i+1]] & 0xff00) >> 8);
$c2 = ($table_han2zen_euc[$b[$i+1]] & 0x00ff);
$str_ZEN .= pack("CC", $c1, $c2);
$i++;
}elseif($b[$i] >= 0xA1){
$str_ZEN .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
$str_ZEN .= pack("C", $b[$i]);
}
}
return $str_ZEN;
}

function HANtoZEN_SJIS($str_HAN){
$table_han2zen_sjis = array(0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,
0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,
0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,0x8360,0x8363,0x8365,0x8367,
0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,
0x837D,0x837E,0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,
0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B);
$str_ZEN = '';
$b = unpack("C*", $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
$b[$i] -= 0xA1;
$c1 = ($table_han2zen_sjis[$b[$i]] & 0xff00) >> 8;
$c2 = $table_han2zen_sjis[$b[$i]] & 0x00ff;
$str_ZEN .= pack("CC", $c1, $c2);
}elseif($b[$i] >= 0x80){
$str_ZEN .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
$str_ZEN .= pack("C", $b[$i]);
}
}
return $str_ZEN;
}

function HANtoZEN_JIS($str_HAN){
$table_han2zen_jis = array(0x2123,0x2156,0x2157,0x2122,0x2126,0x2572,
0x2521,0x2523,0x2525,0x2527,0x2529,0x2563,0x2565,0x2567,0x2543,0x213C,
0x2522,0x2524,0x2526,0x2528,0x252A,0x252B,0x252D,0x252F,0x2531,0x2533,
0x2535,0x2537,0x2539,0x253B,0x253D,0x253F,0x2541,0x2544,0x2546,0x2548,
0x254A,0x254B,0x254C,0x254D,0x254E,0x254F,0x2552,0x2555,0x2558,0x255B,
0x255E,0x255F,0x2560,0x2561,0x2562,0x2564,0x2566,0x2568,0x2569,0x256A,
0x256B,0x256C,0x256D,0x256F,0x2573,0x212B,0x212C);
$str_ZEN = '';
$mode = 0;
$b = unpack("C*", $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if($b[$i+1] == 0x28 && $b[$i+2] == 0x49){
$mode = 1;
$str_ZEN .= pack("CCC", 0x1B, 0x24, 0x42);
}else{
$mode = 0;
$str_ZEN .= pack("CCC", $b[$i], $b[$i+1], $b[$i+2]);
}
$i += 3;
}
if($mode == 1){
$b[$i] -= 0x21;
$c1 = ($table_han2zen_jis[$b[$i]] & 0xff00) >> 8;
$c2 = $table_han2zen_jis[$b[$i]] & 0x00ff;
$str_ZEN .= pack("CC", $c1, $c2);
}elseif($i < strlen($str_HAN)){
$str_ZEN .= pack("C", $b[$i]);
}
}
return $str_ZEN;
}
?>

mail.phps

使い方: 以下のサンプルを参照のこと

<?

include("./jcode.phps");

class ErrorMsg{
var $TemplateFile;
var $ErrMsg;

function init()
{
$this->TemplateFile = "";
$this->ErrMsg = "・エラーが発生しました!\n";
}
function CallError(){
if(is_readable($this->TemplateFile)){
$myFile = fopen($this->TemplateFile,"r");
while(!feof($myFile)){
$myLine = fgets($myFile, 255);
$myLine = ereg_replace("___%([^%]+)%___",nl2br($this->ErrMsg),$myLine);
print($myLine);
}
fclose($myFile);
}else{
print "内部エラー<数時間後、やりなおしてください>\n";
exit;
}
}

}

class Mail{
var $subject;
var $mailto;
var $mailfrom;
var $mailcc;
var $mailbcc;
var $context;
var $codefrom;
var $codeto;
var $mailheader;
var $ErrorTemplate;

/* コンストラクタ */

function init()
{
$this->subject = "";
$this->mailto = "";
$this->mailfrom = "";
$this->mailcc = "";
$this->mailbcc = "";
$this->mailheader = "Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0";
$this->context = "";
$this->codefrom = 2; //Shift_JIS
$this->codeto = 3; // JIS
$this->ErrorTemplate = "";
}

function SetTemplateFile($TemplateFile,$vars)
{
for ($i=0;$i<count($vars);$i++){
eval("global \$${vars[$i]};\n");
}
if(is_readable($TemplateFile)){
$this->context = "";
$myFile = fopen($TemplateFile,"r");
while(!feof($myFile)){
$myLine = fgets($myFile, 255);
ereg("___%([^%]+)%___",$myLine,$match);
$myLine = ereg_replace("___%([^%]+)%___",${$match[1]},$myLine);
$this->context .= $myLine;
}
fclose($myFile);
}else{
$this->context = "";
}
}

function SendMail()
{
$errmsg = "";
if (!EmailCheck($this->mailto)){$errmsg .= "・メールアドレスのTo(送信先アドレス)の形式が正しくありません。\n";}
if (!EmailCheck($this->mailfrom)){$errmsg .= "・メールアドレスのFrom(送信元アドレス)の形式が正しくありません。\n";}
if ($this->context == ""){$errmsg .= "・メール内容がありません。\n";}
if ($this->subject == ""){$errmsg .= "・メールタイトルがありません。\n";}
if ($errmsg != ""){
$err = new ErrorMsg;
$err->init();
$err->ErrMsg = $errmsg;
$err->TemplateFile = $this->ErrorTemplate;
$err->CallError();
exit;
}
$this->mailto = JcodeConvert($this->mailto,$this->codefrom,$this->codeto);
$this->mailheader = "From: " . JcodeConvert($this->mailfrom,$this->codefrom,$this->codeto) . "\n" . $this->mailheader;
$this->subject = "=?iso-2022-jp?B?" . base64_encode(JcodeConvert($this->subject,$this->codefrom,$this->codeto)) . "?=";
$this->context = JcodeConvert($this->context,$this->codefrom,$this->codeto);
mail($this->mailto,$this->subject,$this->context,$this->mailheader);
}

}


Function EmailCheck($mail_addr){
$esc = '\\\\'; $Period = '\.';
$space = '\040';
$OpenBR = '\['; $CloseBR = '\]';
$NonASCII = '\x80-\xff'; $ctrl = '\000-\037';
$CRlist = '\n\015';
$qtext = "[^$esc$NonASCII$CRlist\"]";
$dtext = "[^$esc$NonASCII$CRlist$OpenBR$CloseBR]";
$quoted_pair = "${esc}[^$NonASCII]";
$atom_char = "[^($space)<>\@,;:&\^'!#\$%\".$esc$OpenBR$CloseBR$ctrl$NonASCII]";
$atom = "$atom_char+(?!$atom_char)";
$quoted_str = "\"$qtext*(?:$quoted_pair$qtext*)*\"";
$word = "(?:$atom|$quoted_str)";
$domain_ref = $atom;
$domain_lit = "$OpenBR(?:$dtext|$quoted_pair)*$CloseBR";
$sub_domain = "(?:$domain_ref|$domain_lit)";
$domain = "$sub_domain(?:$Period$sub_domain)+$";
$local_part = "^$word(?:$Period$word)*";
$addr_spec = "$local_part\@$domain";
$mail_regex = $addr_spec;
if (!preg_match("/$mail_regex/i",$mail_addr)){$ret = 0;}else{$ret = 1;}
return $ret;
}

?>

mailsample.phps (上記mail.phps, jcode.phpsを使ったサンプル)

<?

include("./mail.phps");

$Name = ($Name) ? $Name : "ななしのごんべい";
$mail = new Mail;
$mail->init();
$mail->subject = "$Name さんからのメールです";
$mail->mailfrom = $MailFrom;
$mail->mailto = $MailTo;
$mail->ErrorTemplate = "./ErrorTemplate.txt";
$vars = Array("message","Kanso","Name");
$mail->SetTemplateFile("./EmailTemplate1.txt",$vars);
$mail->SendMail();

$mail = new Mail;
$mail->init();
$mail->subject = "$Name 様 メッセージありがとうございました";
$mail->mailfrom = $MailTo;
$mail->mailto = $MailFrom;
$vars = Array("message","Kanso","Name","MailTo","MailFrom");
$mail->SetTemplateFile("./EmailTemplate2.txt",$vars);
$mail->SendMail();


?>

(注:EmailTemplate1.txt

___%Name%___ さんからメッセージが届きました。
-------------------------------------------------------
感想: ___%Kanso%___
内容: ___%message%___
)

(注:EmailTemplate2.txt

___%Name%___ 様:

メッセージ、ありがとうございました。
以下のメールを、___%MailTo%___宛てに送信
いたしました。
これからも宜しくお願い申し上げます。
-------------------------------------------------------
感想: ___%Kanso%___
内容: ___%message%___
-------------------------------------------------------

)

さいごに

余談:1年前くらいに作ったのですが、折角なので公表します。尚、jcode.phpsは、PHP4.04のときのものなのですが、今(PHP4.12)は、日本語変換が自動で出来るかと思うので、あまり意味ないでしょう(笑)
どういう動きをしているか知りたい方は、MAILしてみてください。
あと、ファイルは全て同一ディレクトリに入れる必要があります。

自宅からのWEBサイト公開 -- フレッツISDN (NTT提供)編

1. 自宅からのWEBサイト公開 〜 はじめに

 この、Terra-International, Inc. のホームページは、レンタルサーバーを使っていますが、Terra-InternationalにはWindows 2000 Serverマシンもあり、このマシンで作成したWEBを、なんらかの形で公開できないものか、と常々考えておりました。ただ、問題となるのは、フレッツIP接続で一般的なプロバイダーを利用する場合、IPアドレスが固定ではないので、専用線接続のように保有ドメイン名にIPアドレスを振り当て、WEB公開、ということは通常できません。

 では、どうすればよいか、というと、「動的IPアドレスをマッピングしてくれるサービス」を利用し、更に、フレッツISDNで利用するダイアルアップルーターの設定で、TCP/IPのポートの一部を開放すればよいのです。今回は、動的アドレスをマッピングするサービスをご紹介するとともに、大体の設定の概要を説明いたします。

 尚、これによって、例えばTerra-Internationalの場合、WEB開発の受託の際に、わざわざ成果物をお客様のところにもっていかなくても、ある程度のテストはしていただけます。SOHOの方々には、特に朗報となるでしょう。

2. 自宅からのWEBサイト公開 〜 基本となる事

 NTTのフレッツISDNサービスに加盟してください。尚、フレッツADSLでもできるようです。Firewallが入っているのが一般的なので、ケーブルでは無理のはずです・・・。以下は、ISDNに限定して話をすすめます。

 (WEBを公開する場合) IIS (Internet Information Server) をインストールしてください。NT4.0 Serverの場合は、Service Packに、Windows2000 Serverの場合は、デフォルトでついてきます。Windows 9x系のPWS (Personal Web Server)でも問題はありません。
 開放する、PCのローカルIPアドレスを設定してください。一般的には、192.168.1.xです。ルーターがDHCPサーバーをかねている場合、できれば固定して指定するようにしましょう。

 ルーターの設定で、「NATe拡張設定」にて、開放するポートを指定してください。WEBサーバーを公開する場合は、ポート80を開放するようにしてください。IPアドレスの指定をする場所がある場合は、上で設定したローカルPCアドレスを入れてみてください。ここらへんは、お持ちのルーター等により、色々とかわってしまいます。私はcomstarzを使っていますが・・。

 尚、
 HTTP: 80 (WEBサーバー)
 TELNET: 23
 FTP : 20,21
 SMTP : 25
 POP3 : 110
 が一般的なポートです。

 IISなどのWebサーバーが起動しているかどうかは、http://(Your computer Name)/でも確認できます。

3. ドメイン名とIPアドレスをマッピング

 海外には、色々なサービスがありますが、無料で利用できるもので、結構おすすめなのが、dyndns.orghn.orgです。特に、hn.org(ハンマーノード)は、独自のドメイン名を利用することができます。尚、日本にも最近はいくつか動的DNSサービスを展開しているところがあるようです。Google等で検索して下さい。

 ハンマーノードに限って話をすすめると・・。

 まず、

Vanity Dynamic DNS

でアカウントを作成します。Create an Accountです。指定したメールアドレスにメールが入ります。http://hn.org/(User Name)/ というURLができあがります。次に、Modify your Accountで、アカウント情報を更新します。アカウント更新は、まだあまり必要としません。適当なときに書き換えてください。

 「Tools」で、「YourIP - Your IP Address」を選びます。そうすると、今の接続状態でのIPアドレス(プロバイダにより動的に割り当てられたIPアドレス)が表示されます。TOP画面に戻って、IPの欄に先ほど表示されたIPアドレスを入れ「UPDATE」をおします。尚、WEBサーバーを公開する設定にしてあれば、先ほどのIPアドレスをブラウザでたたけば、なんらかの表示がされているはずです。

 http://hn.org/(User Name)/ のURLを指定すれば、WEBサーバーが公開されていることがわかります。

 次に、自分の持っているドメイン名を使えるようにします。まあ、その前に、ドメイン名の取得が必要です。onamae.comあたりが良いのではないでしょうか。ドメイン取得した際、NS (Name Server)をどうするかという設定ができるはずですから、そのNameServerを

 Primary NS :     ns1.hn.org  (63.169.118.18)
 Secondary NS : aux1.hn.org (63.169.118.19)

にします。

 次に、

Virtual Domain Mappings

Create an Accountに移ります。アカウント(先ほどのVanity Dynamic DNSと同じでも違っても良い)を作成後、IDとメールで送られたパスワードを入力し、「Login」をします。「Insert Domain」を選択します。Domain Name:の部分に、自分の取得しているドメイン名(***.com // ***.net 等)を入れます。上のNS(Name Server)の書き換えを行って24時間以上たっている場合は、「Check here if domain is already delegated to ns1.hn.org / aux1.hn.org (The Hammernode will verify a yes "checked" response.)」の部分をチェックしておくとよいでしょう。

 次に、画面を戻して、「Modify Domain」のプルダウンメニューに先ほどいれたドメイン名が入ったことを確認します。ドメイン名を選択して、クエリ送信を押します。ここで、Rec Typeが「A」になっているものを「Delete」します。そして、「Insert a new Resource Record:」で、Rec FQDNに自分のドメイン名を、Rec Type に「A」を、「Rec Value」に、上の「http://www.hn.org/(User Name)/」を、DynDNSを「1」にして、<Insert>します。<Queue for Varification>のボタンがある場合は、まだ、NSの設定が完全にhn.orgのNSにいっていません。成功していれば、「This Domain was verified against the root servers on ...(date)....」が表示されます。

 これで、設定は完了です。http://www.(yourdomain)/が表示されれば、大成功。

 あとは・・・ですね・・・。IPアドレスは動的に変わってしまうので、http://www.kvtek.com/にある、yiPostなどを利用し、30分に一度くらいInternetにアクセスして、自分のIPアドレスをhn.orgサーバーに登録するように指定しましょう。このプログラムが、PCが立ち上がったときに自動的に実行されるよう、autoexec.batを書き換えるなりなんなりしてください。

yiPost以外にも、いくつか良いツールがあります。http://support.dyndns.org/dyndns/clients/ の「Client Listings」で、自分のPCのOSにあわせたツールを選んでください。(私は、ロシア人が好きなので、なんとなくyiPostにしてみました(笑))

4. 最後に

 本当は、こんな短くかけないほど、いろんな技術が必要なのですが、概要を大体書かせていただきました。あとは、本人のやる気次第(あとは英語力?)です。がんばってください。

WholeSite



Valid HTML 4.01!Valid CSS!