• ベストアンサー

WEB上で報告書の番号を取れないかと考えています

社内で報告書の管理を行うのに連番を取る事が出来るような仕組みをWEB上で作りたいと思っています。高度な開発環境を用意できないので(本業とは全く別な片手間なので)javaやC言語(linuxに入っているもの)、HTMLなど開発環境を揃えるのにお金が掛からない方法で出来るのかアドバイスお願いします。 イメージでは 1.不特定多数の人間が報告書を作成 2.作成者が報告書の連番を取るページへアクセス 3.例えば、「番号取得」のボタンを押すと番号が発行される。 ここで一番疑問に感じていることは1回のアクセスでは連番を発行できても、次のアクセスではカウンターにリセットがかかっているのではないのか。ということです。 不特定多数の人間がいつアクセスしても最新の番号を取れるようにしたいのです。どこかに最新の発行番号を保持しておかないといけないのです。 プログラミングの経験は無いのですが、出来るようであれば自分の勉強を兼ねて挑戦したいと考えていますのでご回答の程、宜しくお願い致します。

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

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

アクセスカウンタと同じ原理でよいなら簡単に実現可能です。 単純に、アクセスのたびにカウントアップするデータをファイルまたはデータベースに保持すればよいのです。 多重アクセス時の制御を行う必要があるのでロック機構が必要になると思われます。 Cで書くなら http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/ が参考になると思います。 問題は“運用との兼ね合い”でしょう。 発行した連番がキャンセルになったとき、その番号は欠番でよいのか? など…。

参考URL:
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
maruriri
質問者

お礼

早速の回答ありがとうございます。 参考URLにアクセスしてみたのですが、「Cを理解している」ことが前提のようですね。まずココからはじめなければならないですね。やってみます。 それからおっしゃるように運用面ですね。欠番はいいと思うのですが、WEBサーバ自体が自部署での運用ではないので管理者との交渉も必要ですね。詳しく知らないのですがプロバイダですらCGI禁止がありますので、そもそもCGIを置かせてもらえるのか? また、再度質問になってしまい申し訳ないのですが、perlとは何者なんでしょうか?まだ少ししか調べられていませんが無料で配布されているようですね。Cでもperlでもどちらでもイチから勉強することになるのですが、 ・この目的だけに限定した場合どちらがよいのか ・今後の自分のスキルアップとしてはどちらが良いのか お考えありましたら教えて下さい。

その他の回答 (2)

  • skyusagi
  • ベストアンサー率21% (7/33)
回答No.3

同時に二人の人が番号の発行を要求したときに、同じ番号を発行しないようにプログラムを作るには高度に熟練したプログラミング技術が必要です。その番号が絶対に同じ番号を2つ発行すると困るという種類のものでしたら、やはり専門の方に頼んだほうがよいとおもいます。

maruriri
質問者

お礼

ご回答ありがとうございました。 素人にはむりなんですかね。そこまで大げさにすることはできないので自分でやるしかなさそうです。 ありがとうございました。

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

perlはプログラム言語です。 C/C++のような「コンパイラ言語」と違い、コンパイル(プログラムテキスト→機械語への変換)を必要とせず、人間の書いたプログラムテキストがそのまま実行可能です。 コンパイラ言語に対してインタプリタ言語またはスクリプト言語と呼ばれます。 実行時にテキストを解釈しする必要があるためコンパイラ言語に比べて実行速度が遅くなります。 スクリプト言語のメリットは「テキストそのものが実行プログラムである」事です。 Webサーバー管理者から見れば「機械語のカタマリが動いている状態」より「テキストファイルが動いている」状態のほうが安心感があるでしょう。 作った人以外の人でもプログラムテキストを読んで不具合の発見が可能だからです。 (Web管理者が修正を加えるかどうかは管理規約によります) Javaも(多くの場合は)インタプリタですが実行速度を稼ぐ為に中間コードといわれる“人間には読み下すことのできない”状態で保存されます。 中間コードで保存されるタイプのインタプリタ言語はスクリプト言語とは呼びません。 この目的(と言うか、CGIに限定した場合)では資料の多さ、不具合修正の容易さでCよりもperlが向いているでしょう。 Web管理者にとってみてもCGIでの利用実績が多いperlの方が安心できると思います。 Linuxベースのサーバーであればphpという選択肢もありますが、現状ではperlの方が資料が豊富です。 将来のスキルアップを視野に入れた場合、スキルアップの目的/方向性を考える必要があります。 linuxベースのWebプログラムを目指すならperl/php/javaの内から選ぶべきでしょう。 もっと汎用的なプログラムを目指すならC++/Javaでしょうか。 スキルアップの目的/方向性が不明であり、Web管理者の管理方針もわからないので今回は“自信無し”です。

maruriri
質問者

お礼

本当に早い回答ありがとうございます。 回答して頂いたようにperlでやってみようと思います。今からの勉強なんでいつになるか分かりませんが・・・。Okwebのどこかにwindows用の無料perlの開発キットのようなものへのリンクがあったと思いますので再度探してみます。 私のスキルアップの目的・方向はあくまでも「趣味的に」です。本業は機械の技術職なのです。部門内でコンピュータ管理を兼任させられてまして、システム部門と自部門の橋渡しなどをしています。コンピュータのことが分かっていると何かと便利なので、趣味と実益を兼ねて資格取得を行っています。現在まで第2種情報処理技術者(旧名称)・初級シスアドを取得しています。なのでコンパイラ・インタプリタの違いは理解できました。 実務でやっているわけではないので、プログラミングの技術は皆無です。自分のHPに自分で組んだCGIを載せる、最初の目標はこの辺りでしょうか。余りにも大雑把なイメージだと思いますがお分かり頂けたでしょうか。

関連するQ&A