クライアントから「ソースを公開してほしい」と
要望があり、有料で公開することを会社で決定した
のですが、公開の条件等の契約者を作成する段階で
どんな制約を盛り込めばいいか大変悩んでいます。

「この制約は絶対いると思う」と言うような
アドバイスを待っていますのでよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。

itohhといいます。

無償で公開するものでは、GPLという使用許諾書があります。
ただ、今回は、有料で行うと言うことなので、GPLではダメですよね。
(参考にはなるとは思いますが...)

googleやgooなどで「使用許諾書」で検索すると有料で公開しているソースコードなどがヒットしますので、そちらを参考にしては如何でしょうか?
    • good
    • 0

直ぐに思いつくのは(有料の値段にもよりますが)、


1)Copyrightの保護
2)第三者に公開しないこと
3)そのソースに関する保守(質問、バグ対応等)に関する契約
4)公開期限があるのなら、期限後の対応に関する契約
等でしょうか。
    • good
    • 0

制約の話はわかりませんが



私の会社ではクライアントからソースを公開してほしいと
言われた場合、たとえ有料であっても「全部」は公開しません

公開するのはその「依頼」によって作った部分です

ですからコンパイルはできませんが
クライアントとしては、それでも十分な場合がほとんどで
それ以上要求されたことはありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qイベントを起こすと画面が揺れまくって大変です・・・結構見栄えもきついので回避できないでしょうか?

以前ワークシートのイベントのプログラムを教えていただきありがとうございました。
参考に作ったプログラムなのですが・・・範囲をもう少しだけでかくしてやると画面がゆれて困っています。
値を入れてコピーしているときが特にひどいです。
複数セルを選択して消去しても大丈夫なようにかつ揺れない方法はないでしょうか?

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
MyProc r
Next
End Sub

Sub MyProc(Target As Range)
Dim i As Long

Application.EnableEvents = False
If Selection.Cells.Count <> 1 Then Exit Sub

' 変更したセルに値が入った場合条件成立
If Trim(Target.Value) <> "" Then

' 行番号が10以上65530以内のとき条件成立
If Target.Row >= 10 And Target.Row <= 65530 Then

' BCD列で、5の倍数の行のとき条件成立
If (Target.Column >= 2) And (Target.Column <= 4) Then
If (Target.Row Mod 5) = 0 Then
If Target.Value <> "" Then
For i = 0 To 4
Target.Copy
Target.Offset(i, 10).PasteSpecial Paste:=xlPasteValues
Next
If (Target.Column = 2) Then
Worksheets("Sheet4").Range("A2:K6").Copy Target.Offset(5, -1)
End If
End If
Else
Exit Sub
End If
End If

End If
Application.CutCopyMode = False
End If
Application.EnableEvents = True
End Sub

以前ワークシートのイベントのプログラムを教えていただきありがとうございました。
参考に作ったプログラムなのですが・・・範囲をもう少しだけでかくしてやると画面がゆれて困っています。
値を入れてコピーしているときが特にひどいです。
複数セルを選択して消去しても大丈夫なようにかつ揺れない方法はないでしょうか?

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
MyProc r
Next
End Sub

Sub MyProc(Targe...続きを読む

Aベストアンサー

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
  Dim r As Range
  ' 画面の更新を一時停止する
  Application.ScreenUpdating = False
  For Each r In Target
    MyProc r
  Next
  ' 画面更新の再開
  Application.ScreenUpdating = True
End Sub
としてみましょう

Application.EnableEventsの設定もSelectionChange側のForループの外で1度実行すればいいのでは?

Q関数化について【コーディング制約】

VB2005でプログラムを組む際にほとんどの処理を小分けにして関数化し、メイン関数を関数の呼び出しだけにしてもいいのでしょうか?プログラムの動作には関係ないとしても、コーティング制約?を考えると悩んでしまいます。皆さんはどうしていますか?

Aベストアンサー

関数化やクラス化などをどこで分けるかは、プログラマーの自由(というかセンス?)だと思います。チームを組んでいるのであればともかく、個人で書いているのなら好きなようにしてよいと思います。

私も関数化する時は、関数ひとつで数十行に及ぶときもあれば1行で済んでしまうこともあります。関数・メソッドの役割、処理の共通性、修正のしやすさなどを判断材料にしています。

メイン関数(VBだからSub Main()かな?)だからといって、そこに中枢コードを書かなければいけない、という決まりはないはずです。いきなり別関数に飛ばしてそこでメッセージループしたっていいわけですし。ただ、そうすることにどれだけの意味合いがあるか、ということが重要だと思います。

「コーディング制約」というのがいまいちピンとこないのですが、どういったものを指すのでしょう?

Qエラー番号=5 制約を有効にできませんでした。・・・

”エラー番号=5
制約を有効にできませんでした。行に入力できるのは、null以外の値、あるいは外部キーですが、この制約違反が1つ以上で発生しています”のメッセージが表示されます。

この解決法を教えてください。

VB.net
SQLServer2005
Windows2003SERVERsp2
といった環境です。

データアダプタを用いて、データセットに格納した取得をしています。
SELECT文では、2つのテーブルをunionしてある項目のMAX値を求めようとしています。

select条件ありでレコードがあった場合には、上記のメッセージは表示されないのですが、該当レコードがないと表示されます。(テーブルは0件ではなく該当のレコードがないということです)

このselect文をクエリで実行すると正常に終了します。ただ、該当レコードがないので"null”になっていますが。

どこかで”null”だっったとしても取得できるように設定する必要があると聞いたのですが、(ひととおり設定見直したつもり)うまくいきません。

該当レコードなしでも正常として次の処理をしたいのですが、
解決法を教えてください。

”エラー番号=5
制約を有効にできませんでした。行に入力できるのは、null以外の値、あるいは外部キーですが、この制約違反が1つ以上で発生しています”のメッセージが表示されます。

この解決法を教えてください。

VB.net
SQLServer2005
Windows2003SERVERsp2
といった環境です。

データアダプタを用いて、データセットに格納した取得をしています。
SELECT文では、2つのテーブルをunionしてある項目のMAX値を求めようとしています。

select条件ありでレコードがあった場合には、上記のメッセージ...続きを読む

Aベストアンサー

EnforceConstraints プロパティを false に設定するとか。
http://msdn2.microsoft.com/ja-jp/library/s3bxwk8b(VS.80).aspx

参考URL:http://msdn2.microsoft.com/ja-jp/library/s3bxwk8b(VS.80).aspx

QExcel VBA 多段階配列の宣言の仕方

下記のような患者No.001~100の体温をまとめる配列の宣言方法について教えて下さい。
(環境:Excel2003 Windows7 ultimate 64bit)

患者No.001の、
1回目の体温36.5℃、
2回目の体温36.2℃、
3回目の体温36.8℃、


300回目の体温36.1℃
(回数の上限値は不定)


同様に、
患者No.002の、
1回目の体温36.2℃、
2回目の体温36.7℃、
3回目の体温37.9℃、


300回目の体温35.9℃

これを延々と繰り返して、、、

患者No.003~
患者No.004~


患者No.100~
(患者数は100で定数)

こんな感じです。

-----

こうしたデータをまとめるには、
どういった配列を宣言すれば良いでしょうか?
出来る限りスマートな方法で教えて下さい。

配列A(患者No、配列B(n回目、体温)) のように、
配列の中に配列を入れたい(多段階配列、多次元配列)と考えています。

よく分からないポイントは以下の通りです

・配列宣言時の型の書き方
(患者Noは1~100の整数、回数も整数、体温は非整数。
というより、配列の中に配列を入れるので、型は配列型?!)

・予め配列の要素数が決まっていない。(要素数不定)

お詳しい方、宜しくお願い致します。

下記のような患者No.001~100の体温をまとめる配列の宣言方法について教えて下さい。
(環境:Excel2003 Windows7 ultimate 64bit)

患者No.001の、
1回目の体温36.5℃、
2回目の体温36.2℃、
3回目の体温36.8℃、


300回目の体温36.1℃
(回数の上限値は不定)


同様に、
患者No.002の、
1回目の体温36.2℃、
2回目の体温36.7℃、
3回目の体温37.9℃、


300回目の体温35.9℃

これを延々と繰り返して、、、

患者No.003~
患者No.004~


患者No.100~
(患者数は100で定数)

こんな感じです。

-----

...続きを読む

Aベストアンサー

体温値の個数の上限が無いのが問題ですね。
Collectionオブジェクトを使われてはいかがですか

標準モジュールにパブリック変数として宣言
配列の添え字が患者No.になります
  Public AA(100) As New Collection

コレクションに体温値を追加
  AA(患者No).Add(体温値)
患者No.25に体温値36.2℃を追加する場合は
  AA(25).Add(36.2)

現在の体温値の数
  Num = AA(25).Count

12番目の体温値を得る
  Temp = AA(25).Item(12)
最後に測定した体温値を得る
  Temp = AA(25).Item(AA(25).Count)

Collection(コレクション)オブジェクトの詳しい使い方などはヘルプを参照してください。
また、ネット上にも解説サイトが沢山ありますので検索してください。

Qスマートクライアントについて

DBに接続する手法なのですが、やはり常識的に考えて、常時接続させる事は無理なのでしょうか?

Aベストアンサー

DBに接続するなら、スマート クライアントではありません。http://www.microsoft.com/japan/msdn/smartclient/quickguide/


このカテゴリの人気Q&Aランキング

おすすめ情報