C言語でWordpressのようなWebアプリを開発する方法はありますか?
CGIを使用して出来るとは聞いたことがあるのですが、CGIは「セキュリティ面での不安」や「サーバーへの負荷が大きい」といったことを聞いたので、あまり使わないほうがいいのかなと、現在迷っています。。
CGI以外にWebアプリを開発する方法はあるのでしょうか?
よろしくお願いいたします。
※すみませんが、C言語のみでお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
Webサーバとプログラムの結合法としては、
- サーバに直接プログラムを組み込む
- CGI、FastCGIといった汎用のインターフェースを使う
- PSGI、WSGIといった、言語ごとに決まったインターフェースを作る
というパターンが考えられます。
1つ目は、サーバ自体がC言語で書かれたものであれば拡張もC言語とすることで親和性は高いですが、CGIのような汎用のインターフェースと比べて考慮することは増えて、高度な技術が必要になることでしょうし、当然ながらサーバ固有のものになってしまいます。
2つ目でCGIを外すと、FastCGIという選択肢があります。これは実行されるプログラムもサーバとして待ち受けて、プロセスをいちいち立ち上げずに済むという形態です。C言語用のFastCGIライブラリがあれば実装は比較的容易かもしれません(参考)。
3つ目のような、言語ごとにサーバとの通信を標準化した仕様は、C言語にはありません。
とはいえ、メモリ管理や文字列処理など、C言語ではコードを書く人間の側で考慮しなければいけないことも多く、脆弱性を残してしまいやすいので、「どうしてもC言語で書きたい」という強い意志、あるいは相応な理由がある状況でなければ、他の言語の処理系を入れるほうが楽なことは間違いないでしょう。
投稿2015/03/23 02:23
総合スコア145121
0
CGIの代わりになる……しかも広く使われているスクリプト言語のフレームワークに相当する仕組み……となるとC言語では存在しないと思います。
PHPが、C言語ユーザをターゲットにした文法になっているので、PHPの採用を検討してみてはどうでしょうか。
投稿2015/03/21 03:26
総合スコア133
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/23 02:14
2015/03/23 03:58
2015/03/28 00:33
0
以前(10数年前)は速度的なメリットを傍受するためにC言語でCGIの開発してましたが、今やるのであればApacheのモジュールとして開発するのが良いかと思います。
■ApacheModuleでWebアプリケーションをつくろう
http://codezine.jp/article/detail/2502
■Apacheモジュール プログラミングガイド
http://www.amazon.co.jp/dp/4774117994/
※Apacheモジュールの書籍はほとんど出版されておらず、情報的に新しくはありませんが
貴重な一冊です。Apacheの内部処理を知ることもできるのでおすすめです。
MySQLのC言語用のAPIももちろん提供されていますので、それを利用すればWordpress同様にデータも扱えます。書き方によってはPHPで作られたWordpressより高速に動作すると思います。
(PHP自体がCで書かれていますので、途中のPHP自体の処理を端折れる分、理屈的には高速化が望めます)
C言語によるWeb開発用のフレームワークは存在しないのでは?という書込みがありますが、ある意味Apacheが提供しているAPI郡がそれにあたるのではと思います。
http://www.slideshare.net/shebang/apache-module-presentation
仕事の場合の話ですが、
とはいえ、Cを使うメリットはやはり高速性=インフラ費用の低減なんですが、
開発工数考えると、最近はインフラよりも人件費の方が高くつく場合が多くてPHPとかのLL使うことの方が多いです。相当なリクエスト数がある場合は、もちろんこの限りではありませんし、実際にその手法で高速化(サーバ台数の縮小)を図った例もあります。
話がずれますが、PHPのフレームワークのPhalconも、PHP自体の速度の解消を図るためにCで最適化をするといった手法を取っていますので、今現在もCの需要は場所によってはまだまだありますね。
http://phalconphp.com/ja/
投稿2015/03/21 07:31
編集2015/03/21 07:53総合スコア783
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/22 06:58
2015/03/22 07:16
2015/03/22 12:10
2015/03/22 12:55
2015/03/22 12:57
2015/03/22 13:36
2015/03/22 13:44
2015/03/22 13:54
2015/03/22 13:55
2015/03/22 14:02
2015/03/22 14:07
2015/03/22 14:19
2015/03/22 14:35
2015/03/22 15:05
2015/03/22 15:32
2015/03/28 00:23
0
C言語を使ってWebアプリを書くことは可能ですが、あまり現実的だとは思いません。
CGIを使う方法がありますが、ご心配のようにサーバへの負荷が大きいです。
ApacheならApacheモジュールをC言語で書いてApacheモジュールによってWebアプリを実現することが可能ですが、ハッキリ言って、非常に難易度が高い上に、C言語で書くかぎり、セキュリティ面の不安が常につきまといます。(C言語は文字列の扱いが難しく、ささいなミスでBuffer Overrun脆弱性等の深刻な脆弱性を作り込んでしまいます。)
なぜC言語にこだわるのでしょうか。
投稿2015/03/21 02:03
総合スコア971
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/28 00:38
0
不可能ではないと思いますがかなり険しい道だと思います。
Webサーバー上で動く形式の実行モジュールを作成して拡張子を.cgiに変更してcgi-binに設置し、ブラウザとの情報の受け渡しは。。。確か標準入出力で可能だったかと。
CGIで受け取った情報を元に設定ファイルを読み込んでテンプレートや設定ファイル内で指定された各種処理を実行し。。。みたいなことを作っていけばそれっぽいものが作れるのではないかと思います。
必要な処理などかなり多そうですし、セキュリティや想定外の入力に対する処理なども相当作りこまないといけなさそうです。
考えて作っていくのはかなりおもしろそうだと思いますが、他人に使わせられるレベルの物を作るのは大変でしょうね。。。
自作な分、拡張などはしやすいと思います(しやすいように作れば、ですが^^;)。
投稿2015/03/22 06:51
総合スコア85
0
可能か不可能かというお話だけなら、ほぼどのような言語でもWebアプリを作ることはできます。
※大昔、シェルスクリプトで実装されたWebアプリ(CGI)も見たことがあります。
C言語として実装されたWebアプリとしては、某大手掲示板のread.cgiと呼ばれるモノが有名?ですね。当初はCGIとして。その後高速化のためにDSOという仕組みに変わったそうです。
しかしながら、C言語は一般にWebアプリには向きません。恐らく、C言語用のWebアプリフレームワークも無いと思います。そこまでして特定の言語に拘るか? というお話になるかと思います。
※なので大抵の人は複数の言語を身に着けて、場面に応じて使い分けているというのが私の感覚。
投稿2015/03/21 02:33
総合スコア1672
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/28 00:06