phpで作成したプログラムでSmartyを利用する場合の商用利用についての問題

このQ&Aのポイント
  • phpで作成したプログラムでSmartyを利用する場合、商用利用に問題はありませんか?
  • LGPLのプログラムを商用利用しても問題はないのでしょうか?
  • LGPLの制約はphpで作成したプログラムに影響しないのでしょうか?
回答を見る
  • ベストアンサー

phpで作成したプログラムで、Smartyを使用していますが商用で問題は出ないでしょうか?

現在、取引先の社内で使うアプリケーションをphpで作成しております。 で、そのプログラムではSmartyを利用しているのですが、SmartyのライセンスLGPLについて疑問が出てきたので、質問したいと思います。 LGPLのプログラムを、商用で利用しても問題はないのでしょうか? もっと言えば、私の作成したphpプログラムにはLGPLの配布における制約は影響しないでしょうか? LGPLですが、非公式ですが日本語訳がこちらで公開されてます。 http://www.opensource.jp/lesser/lgpl.ja.html この中で、「複製、頒布、改変に関する条件と制約」では、 ----------------- 5. 『ライブラリ』のいかなる部分の派生物も含まないが、それとコンパイルされるかリンクされることにより『ライブラリ』と共に動作するようデザインされているプログラムは、「『ライブラリ』を利用する著作物」と呼ばれる。そのような著作物は、単体では『ライブラリ』の派生著作物ではないので、この契約書の範囲外に置かれる。 ----------------- とあります。 つまり、phpでSmartyを利用するプログラムを作成しても、顧客に渡すとき、パッケージにSmartyが含めなければ(そして、顧客側で、Smartyをサーバに入れて頂くようお願いすれば)OKなのではないかと考えているのですが、認識違いはありますでしょうか? LGPLの事を色々と調べている内に、人によって解釈が結構違うので混乱してきました。 ライセンスに詳しい方、ご回答の程、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

LPGL(やGPL)は本来Cのようなコンパイルしてバイナリを作るような言語を念頭においているっぽいところがあるので、 PHPのようなスクリプト言語だと微妙な部分があるとは思いますが、基本的には > つまり、商用とした場合でも、単に「require_once ($SMARTY_DIR . > > "Smarty.class.php");」でSmartyを呼び出してその機能を使うだけなら、 > 作成したプログラム部分ではLGPLを適用させなくても良いのか、という事です。 このような使い方であれば、質問者さんの作ったプログラムは「派生物」にはあたらないと 考えるのが自然でしょうから、LPGLの縛りは受けません。 ですから、 >例として、顧客の改良・改変などを禁止するようにしても問題はないのか ライブラリそのものは改変していない。上記のように呼び出しているだけ。 ということであれば問題ないと思いますが、PHPのような言語でそのようにすることに 意味があるのかなあという気はします。

ikazuti
質問者

お礼

ご回答、ありがとうございます。自分でも、また調べてみましたが、大丈夫そうですね。Smarty利用したWEBアプリを商用で売っている例もあったので。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

GPLやLPGLが要求しているのは基本的に、これこれこういうときはあなたの書いた分の ソースコードも公にアクセスできるようにしなさい。 ってなことですから、商用に使うかどうかは問題ではありません。 お客さんにあなたの作った(Smarty使用の)PHPプログラムを引き渡すということは ソースコード丸見えなわけですから、気にするようなことはないと思います。 >認識違いはありますでしょうか? 引用している部分で述べられているのは簡単にいうと、 ・ライブラリのコードを改変したものは「派生物」である ・ライブラリを単に呼び出して使っているのは「派生物」ではない ということです。 使用しているライブラリが支障なく入手できる状態になっていれば問題ありません。

ikazuti
質問者

お礼

どうやら、問題はないようです。 ご回答、ありがとうございます。

ikazuti
質問者

補足

申し訳ございません。若干、質問が曖昧で分かりづらかったです。 つまり、商用とした場合でも、単に「require_once ($SMARTY_DIR . "Smarty.class.php");」でSmartyを呼び出してその機能を使うだけなら、作成したプログラム部分ではLGPLを適用させなくても良いのか、という事です。 例として、顧客の改良・改変などを禁止するようにしても問題はないのかなと思って質問させていただきました。LGPLの場合、リバースエンジニアリングは許可しなくてはいけないという情報を見たもので、少し気になっております。

関連するQ&A

  • LGPLの適用範囲について

    LGPLライセンスについて教えてください。 ↓にiTextという、OSSのPDFを生成ライブラリがあります。 http://www.lowagie.com/iText/ この場合はデュアルライセンスなのですが、例えばLGPLのライセンスを適用した場合、このライブラリを使ったサーバサイド・プログラム(iTextを改変せず動的リンクしたプログラム)で、PDFを生成する機能を商用サービスの一環として提供した場合、LGPLによる制限が発生するでしょうか? http://www.opensource.jp/lesser/lgpl.ja.html.euc-jp ↑では、 「複製や頒布、改変以外の活動はこの契約書ではカバーされない。」 とあります。 この場合のPDF生成機能の有償提供は、「カバーされない」部分にあたるのでしょうか? そしてその場合、「iTextを使用している」という旨を明記したり、ソースの開示をしなくともよいのでしょうか。 上記のようなiTextへのリンクを含んでコンパイルされたプログラム自体を再配布する場合、LGPLの制限が発生するように思うのですが、iTextに限らずLGPLのライブラリを使った成果物の領布において、どのように考えるべきなのか分かりません。 よろしければ、ご教授ください。 お願いいたします。

  • GPLライセンスの再配布時の著作権表示

    GPLライセンスに関して、GPLライセンスで作られたプログラムを改変して配布することにしました。 改変したプログラムを配布する際に著作権表示は行う必要はないと思っていますが、正しいでしょうか? 以下の表示になるかと思いますが、後半の著作権表示はどこまで必要なのか調べたのですが、答えが出ていません。  GPLライセンスに関する表示  著作権表示(誰が作成したかなど) パターン1 ------------ オープンソース(GPLライセンス)のプラグインを新規に作成 作成したプログラムはGPLライセンスのため、プラグインもGPLライセンスの元配布 ○質問1  LGPLの場合のプログラムの場合は、LGPLでなくてもよいでしょうか ○質問2  GPLライセンスの表示はするが、私が作ったことを表示しない(著作権表示をしない)ことは問題はないでしょうか ------------ パターン2 ------------ オープンソース(GPLライセンス)の既存プラグインを改変 プラグインには作成された方の著作権表示がある。 ○質問3  私が改変したことを表記する必要はありますか ○質問4  改変した場合に著作権表示をする場合は、本来あった著作権表示に加えて、  改変したことを明記することを表記はしてもよいでしょうか ------------ 全てでなく一部の回答でも構いませんので、よろしくお願いします。

  • LGPLのファイルを改変し、別のプログラムに組み込んで配布するには何が

    LGPLのファイルを改変し、別のプログラムに組み込んで配布するには何が必要でしょうか。 現在PHPでWikiクローンを作成しており、それでText_Diff(PEARのライブラリ、LGPL)を使用しています。このウィキは配布するつもりで、PEARのインストールを強要しないためにText_Diffを同じZipファイルに入れて配布したいと考えています。 この際に必要な著作権の表示や手続きを教えていただけますでしょうか。

    • ベストアンサー
    • PHP
  • 【php】Smartyを使うとどの様な利点があるか

    phpによるWEB制作で 現在 デザイナーが作ったデザインを1枚のHTMLファイルに コーディングまでしてもらって それを、プログラマーがバラバラに分解、インクルード、データベースとの組み込みなどを 加えていくという工程を行っています。 以前からプログラマーとデザイナーが作業を分担しやすいという Smartyというものに興味があったのですが、 Smartyも、デザインをパーツごとにわけて変数化するということですよね? インクルード化や、phpの変数に納めるのと どう違うのか また、動的ページは条件によって1枚のページがいろいろ変化するわけですから 結局デザイナーにもある程度のプログラムを意識した作成が求められるように思えます。 Smartyを導入すると、どのような利点があるのでしょうか。

    • ベストアンサー
    • PHP
  • PHP初心者はSmartyやPEARを使うべきですか?

     PHPのサンプルなどが載っている書籍で勉強をしていると、Smartyで効率を上げるとか、PEARのクラスを利用して実装の時間を減らすということが書かれていて、実際のサンプルプログラムもそれらの技術を使って作られていることが多いです。  しかし、PHPをまだ習熟できていない私は、それらの技術が出てくる所為でプログラムを理解することに苦しむことがあります。エラーがあっても、その原因を特定するのに時間がかかってしまったり、PEARのマニュアルを読むだけでも一苦労だったりします。  そこで皆さんの意見をお聞きしたいのですが、PEARやSmartyは是非とも使いたいものなのでしょうか?私はこういう所が気に入っているから使っているとか、ここがダメだから使っていないなどありましたら教えてください。  また、初心者だからこそPEARやSmartyを使ったほうが良いのでしょうか?

    • ベストアンサー
    • PHP
  • ライセンスについて

    企業向けソフトウェアの開発をしております。 開発は得意なのですが、絵心がないため、アイコンの作成は不得手です。商用目的でフリーで使用できるアイコンを探していたところ、「LGPL(GNU Lesser General Public License)」というライセンス形態をとっているアイコン集がありました。 いろいろと調べてはみたものの、「プログラムのライブラリを組み込むだけなら、ソースコードの開示の必要がない」らしい、ということまではつかめたのですが、アイコンはライブラリをもっていないため、どこまでが「プログラムのライブラリを組み込む」にあたるのか、ちょっとわかりません… 32×32サイズのアイコンが16×16に縮小され表示、または設定された場合は、ソースの改変にあたるのでしょうか? もちろん、『企業向けソフトウェア』の開発のためソースコードの開示はしたくありませんので、開示が必要になるようであれば、使用はあきらめたいと思います。 もし、使用する事になったときには、なにか明記が必要なのでしょうか? よろしくご教授下さい。

  • GPLv2のコピーレフト(改変したプログラムを頒布する行為)は、マスト事項ではなない?

    GPLについてお尋ねしたいことがあります。 GPLとは、改変したプログラムを頒布する行為を奨励することによってプログラムの発展を促すために作成されたもの、という認識を持っています。 しかしながら、GPLv2の日本語訳(http://www.opensource.jp/gpl/gpl.ja.html.euc-jp)を見ると、 ********************* 2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラム』 を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定める条件の下で複製または頒布することが【できる】。ただし、そのためには以下の条 件すべてを満たしていなければならない: (※隅つきカッコは、強調のために当方にて挿入されたものです) ********************* と書かれています。つまり、「頒布しなくてはならない」とあればラインセシーは必ず改変したプログラムを頒布しなければならないと思うものの、「頒布することができる」と記載されているために、ラインセンシーは絶対に改変したプログラムを頒布(公開)しなくても良いと解釈できるのです。  換言すれば、当方は、頒布することはライセンシーのマスト事項ではないと当条項に記載されているように解釈してしまうのです。  となると、GPL準拠のOSSを利用している企業は、自身のWebサイトに改変したプログラムを載せなくても良いとも考えられます。  つきましては、下記の二点の質問に答えていただければと思います。 1)改変したプログラムを頒布することは、GPLのラインセンシーにとって「しなければいけない」ことなのか、「しなくてもいい」ことなのか、どちらであるかを教えて頂けないでしょうか? 2)さらに、1)において、改変したプログラムを頒布することはGPLのラインセンシーにとって「しなければいけない」ことである場合、その根拠は、GPL内のどこに記載されているのでしょうか? 以上2点、宜しくお願い致します。

  • SmartyでのShift-JIS使用

    現在、携帯サイトの構築を行っています。 EUC-JPならば問題なく表示されるのですが携帯電話はShift-JISをサポート。 一応、EUC-JPも表示はされますがサポート外である事実は変わりません。 そこで、表示に関してはShift-JISで行いと考えています。 (全ての携帯がEUC-JPでも問題なく表示できる確証がない限り表示はShift-JISを考えています。) しかし、今度はSmartyがShift-JISがサポート外。 普通にShift-JISを使うと文字化けを起こしたりエラーが表示されます。 PHPもShift-JIS、SmartyのテンプレートもShift-JISにすれば とりあえずはPHPからの表示する文字に関してはShift-JIS表示できますが Smartyテンプレートに直接書いた文字は文字化けを起こします。 自分なりに調べて http://blog.livedoor.jp/alpha1280/archives/50225918.html http://www.knym.net/wiki/index.php?PHP%2FSmarty のサイトを見つけて記事内に書いてあるPHPを利用してみました。 Smarty_Extends.phpをSmarty.class.phpと同じフォルダに作成して テンプレートをShift-JISで作成、プレフィルタとポストフィルタのコメントを外して Smarty_Extendsを利用して表示するPHPを作成↓ <?php include_once('Smarty_Extends.php'); $smarty = new Smarty_Extends('templates','templates_c'); $smarty->assign("test", "Shift-JISによる表示だよ。必須"); $smarty->display("Enc_Shift-JIS.tpl"); ?> エラーは出なかったんですが従来通り文字化け、何度もテストしているんですが判りません。 SmartyでShift-JIS表示の経験がある方、上記の問題点や解決作の判る方。 お力を頂ければ幸いです、宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • PHP
  • xserver Smarty PHP+MySQL

    xserver Smarty PHP+MySQL xserver(レンタルサーバー)でSmartyのtplが読み込まれません。 Xserver(レンタルサーバー)環境 MySQL5 バージョン:5.0.77 MySQL5 ホスト名:xxx.xserver.jp PHP Version 5.3.3 include_path .:/usr/share/php53/pear :/usr/share/php Xserver PHP関連の仕様一覧 PEARインストール済み <インストール済みライブラリ> ・Archive_Tar ・Auth ・Console_Getopt ・DB ・HTML_Common ・HTML_QuickForm ・HTTP ・HTTP_Header ・HTTP_Download ・Mail ・Net_SMTP ・Net_Socket ・Pager ・PEAR ・XML_Parser ・XML_RPC ・Structures_Grap データベースは同じくXserverに設置されているphpmyadmin(MySQL5)で作成しました。 /xxx.xsrv.jp/内に 【php_libs】   [config]     ・config.inc.php   [module]     ・build_screen.inc.php     ・menu.inc.php     ・MYDB.inc.php     ・sub.inc.php       [smarty]     ・cache     ・configs     ・libs     ・templates     ・templates_c 【public_html(DocumentRoot)】   ・testsmarty.php   ・testsmarty.tpl を置いています。 以下のコードでエラーがでます。 Warning: Smarty error: unable to read resource: "testsmarty.tpl" in /home/xxx/xxx.xsrv.jp/php_libs/smarty/libs/Smarty.class.php on line 1088 どこが間違っているのか教えて下さい。 ●testsmarty.php <?php $documentroot = dirname( __FILE__) . '/'; require_once $documentroot . '../php_libs/config/config.inc.php'; require_once( _SMARTY_LIBS_DIR . "Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = _SMARTY_TEMPLATES_DIR; $smarty->compile_dir = _SMARTY_TEMPLATES_C_DIR; $smarty->config_dir = _SMARTY_CONFIG_DIR; $smarty->cache_dir = _SMARTY_CACHE_DIR; $smarty->assign("title", "タイトル名"); $file = 'testsmarty.tpl'; $smarty->display($file); ?> ●testsmarty.tpl {$title} ●config.inc.php <?php //---------------------------------------------------- // デバッグ表示 true / デバッグ表示オフfalse //---------------------------------------------------- // define("_DEBUG_MODE", true); define("_DEBUG_MODE", false); //---------------------------------------------------- // データベース関連 //---------------------------------------------------- define("_DB_USER", "xxx_sample"); define("_DB_PASS", "password"); define("_DB_HOST", "tcp+xxx.xserver.jp"); define("_DB_NAME", "xxx_sampledb"); define("_DB_TYPE", "mysqli"); define("_DSN", _DB_TYPE . '://' . _DB_USER . ':' . _DB_PASS . '@' . _DB_HOST . '/' . _DB_NAME); //---------------------------------------------------- // 認証関連 //---------------------------------------------------- // 会員認証に使うテーブル名 define("_DB_MEMBER_TB", "m_member"); // 管理者認証に使うテーブル名 define("_DB_SYSTEM_TB", "m_system"); // ユーザー名を格納するカラム名 define("_DB_USERNAMECOL", "username"); // パスワードを格納するカラム名 define("_DB_PASSWORDCOL", "password"); //---------------------------------------------------- // 会員・管理者 処理分岐用 //---------------------------------------------------- // 会員用フラッグ define("_MEMBER_FLG", false); // 管理者フラッグ define("_SYSTEM_FLG", true); //---------------------------------------------------- // セッション名 //---------------------------------------------------- // 会員用セッション名 define("_MEMBER_SESSNAME", "PHPSESSION_MEMBER"); // 管理者用セッション名 define("_SYSTEM_SESSNAME", "PHPSESSION_SYSTEM"); //---------------------------------------------------- // ファイル設置ディレクトリ //---------------------------------------------------- //$smarty->○○○を使わない場合下記で表示されました。 define( "_PHP_LIBS_DIR", "/home/xxx/xxx.xsrv.jp/php_libs/"); // 設定ファイル define( "_CONFIG_DIR", _PHP_LIBS_DIR . "config/"); // 機能ファイル define( "_MODULE_DIR", _PHP_LIBS_DIR . "module/"); //---------------------------------------------------- // Smarty関連設定 //---------------------------------------------------- // Smartyのlibsディレクトリ define( "_SMARTY_LIBS_DIR", _PHP_LIBS_DIR . "smarty/libs/"); // Smartyのテンプレートファイルを保存したディレクトリ define( "_SMARTY_TEMPLATES_DIR", _PHP_LIBS_DIR . "smarty/templates/"); // Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、 define( "_SMARTY_TEMPLATES_C_DIR", _PHP_LIBS_DIR . "smarty/templates_c/"); // Smartyのlibsディレクトリ define( "_SMARTY_CONFIG_DIR", _PHP_LIBS_DIR . "smarty/configs/"); // Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、 define( "_SMARTY_CACHE_DIR", _PHP_LIBS_DIR . "smarty/cache/"); ?>

    • 締切済み
    • PHP
  • PHP5(データベースは使わない)で作成したプログラムを配布したいので

    PHP5(データベースは使わない)で作成したプログラムを配布したいのですが、スクリプトのコピー等を防止する方法を教えてください。 例えば、以下うちで出来るものはありますか? 1.ある部分のみ暗号化されていてライセンス認証する仕組み 2.スクリプトの暗号化(難読化ではない) よろしくお願いします。

    • ベストアンサー
    • PHP