前回、プログラミングを始める前に・・・
ということで、コンパイラ関連の事をさらっと書きました。
今回から実際にプログラミング教室ということで、C言語を使ったプログラムの
作り方ということをやっていきたいと思います。

せっかくの天草のサイトなので天草弁で書いていこうと思いますが、
ばあちゃん子だったネイティブアマクサンの自分がガチで天草弁を書くと
たぶんワケがわからんとなる人が多いと思うので、あまりコアな天草弁は
使わないように注意したいと思いますw

環境構築

えーと、まず最初はPCにプログラムばコンパイルする環境ば作らんばつまらんけん、
今回はコンパイラとかそげんとばインストールする方法からゆっかせます。
あ、一応OSはWindows7ば使って説明するばってんが、XPでもたぶんでくるはずです。

プログラミング環境ばってんが、WindowsならVisual Studioがよかて思ったとばってんが、
なんさま、インストールの説明ば書くとがめんどくさかけんですね、今回はLinuxとかで使われとる
gccていうコンパイラばインストールしようて思います。
そんためにMinGWていうとばダウンロードします。

ちなみにこんMinGWはおんも初めてインストールするけん、こぎゃんしたっていうとば
はっつけていくけんそんとおりにしてみればよかて思います。
何年も前にCygWinならインストールしとった事のあったとばってが、Linux環境作ってからは
そっちば使えばよかけんて思って入れとらんかったとです。

だけん、使い方とかはよーわからんけん、色々とググッてみてくださいw


まずはhttp://www.mingw.org/に行って、Downloadsば開いてみてください。
mingw001


そしたらぎゃんページの開くて思うけんDownload mingw-get-setup.exe (xxx kB)
って書いてある所ばクリックしてみてください。
mingw002


クリックしたらぎゃんページに切り替わってカウントダウンの始まって0になったら
ダウンロードの開始されるけん保存先ば選択してください。
いつまっでんたったっちゃダウンロードの始まらん時は小さくdirect linkって書いてある所ば押して
ダウンロードしてください。
mingw003


ダウンロードはでけたですか?
そんじゃダウンロードしたプログラムば実行します。
Windows Vista以降だったら管理者権限で実行せんばつまらんけん
ダウンロードしたファイルば右クリック→「管理者として実行」で実行してください。
mingw004


管理者として実行しようとして、ぎゃんダイアログ出たなら「はい」で進んでよかです。
mingw005


そしたらぎゃん英語でベラベラ書かれたダイアログの開くばってんが、
インストールするには「Install」って書かれたボタンやろなって言うとのわかりますけん
「Install」ボタンば押してください。
英語じゃなくて天草弁ならわかっとばってんがですねw
mingw006



そしたら次のごたる画面の開きます。
ここでは「... on the desktop」っていう所のチェックば外しとるばってんが、
おそらくデスクトップにショートカットば作るかどぎゃんかって意味じゃなかかって思うとですたい。
なんさま、初めてインストールするもんだけんわからんとです。英語やし。
まぁ、そこは好きんごつして「Continue」ば押して先さん進んでください。
mingw007


そしたらぎゃんやって必要なもんばダウンロードはじめるけんしばらくまっとってください。
mingw008



終わったら下の「Continue」ボタンば押さるるごつなるけん押して先さん進みます。
mingw009



そしたらぎゃん画面の開くて思います。
左ペインが「Basic Setup」っていうとが選択されとるとば確認してください。
mingw010



そしたら右側の上のチェックボックスごたっところば全部下のごつ矢印ばつけてしまってください。
チェックボックスばクリックすれば下のごつメニューの出るけん「Make for Installation」ば選んでください。
そしたら矢印の出てきます。
今回のは全部で7個あるごたっです。下のは6個矢印のつけてて7個目ばつけようとしとるところ。
はっきし言ってfortranとか使わんちゃばってん。。。
mingw011



はい、矢印ば全部つけてしまったら「Installation」っていうメニューばクリックして
「Apply Changes」っていうとば選んでください。
mingw012



選んだですか?そしたら下んごたる画面の開いたと思いますけん、ここでも「Apply」ば押してください。
mingw013


押したら必要なものばダウンロードします。
ダウンロードの終わるまでまっといてください。
速度の遅か回線なら時間のかかるて思いますよ。
mingw014


ダウンロードの終わったら今度は勝手にインストールの始まります。
これもしばらく待っといてください。
PCのおろいかったら、時間のかかるて思います。
mingw015



はい、インストールが終わったら右上の「Close」ボタンが押されるごつなりますので
押して閉じてください。
mingw016


閉じたらまたさっきのウインドウに戻ったですね。
チェックボックスのなんじゃい草のごたる色になっとります。
これでインストールは完了だけん、×で閉じてください。
mingw017



インストールが終わったら今度は環境設定ばします。
まず、コンピューターを右クリックしてプロパティば開きます。
XPの人は「マイコンピュータ」の右クリックです。
mingw018



開いたら「システムの詳細設定ば」開いてください。
mingw019


そしたら「詳細設定」タブの選択された状態でシステムのプロパティの開くけん
そん中の「環境変数」っていうボタンば押してください。
mingw020



そしたら環境変数のダイアログが開いて下ん方に「システム環境変数」っていうとの
一覧の出てきとります。
この中で変数が「Path」っていうとば探します。(大文字、小文字は区別する必要なし)
mingw021


※注意※
環境変数を誤って変更したり削除したりすると今まで動いていたソフトが
動かなくなったり、色々とシステムに影響を及ぼす場合があるので
自己責任でお願いします。
編集にはレジストリを扱うのと同等に注意してください。

そしたらこぎゃんとの開きます。
変数値の所ば一番右までスクロールしてください。
スクロールの時、まちごうて中身ば変更せんごつしてください。
もし、何かキーに触れて値ば変更してしまったら「キャンセル」押して閉じてから
また開きなおしてください。

mingw022
変数値は環境によって違うけんこぎゃんなっとるとは限らんですばい。
変数値の一番右側に;(セミコロン)のついとらんかったら、
セミコロンばつけてぎゃんふうに追加してください。
;C:\MinGW\bin;C:\MinGW\msys\1.0\bin

ついとるならセミコロンの後ろにぎゃんふうに追加してください。
C:\MinGW\bin;C:\MinGW\msys\1.0\bin

ちなみにこれはここのInstallation DirectoryがC:\MinGWの場合だけん、
ここば変更したりした時はC:\MinGWの部分ばそれに置き換えて設定せんばつまらんですよ?

変数値に入力の終わったら「OK」で閉じていってください。

よかでしょうか?


はい、ほんなら次はコマンドプロンプトば開きます。
[Win]+[R]でファイル名を指定して実行のダイアログば開いて「cmd」と打つか
すべてのプログラム→アクセサリ→コマンドプロンプトで開きます。
mingw023



コマンドプロンプトの開きますね?
mingw024



開いたら「gcc」て入力してEnterば押します。
mingw025
そしたら、
gcc: fatal error: no input files
compilation terminated.
っていうメッセージん出るて思います。
出たら成功です。

もし、
'gcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
って表示されたら環境変数に設定したパスん間違っとらんか確認してください。



そんなら仕上げです。
今度はアクセサリからコマンドプロンプトのショートカットばコピーします。
すべてのプログラム→アクセサリ→コマンドプロンプトの所で右クリックメニューの
「コピー」ば選択してコピーしてください。
mingw026




そしたら、適当なフォルダー(新しく作ってよかですよ)にコピーしたショートカットば
貼っ付けます。
mingw027



貼っ付けたらそんショートカットの右クリックメニューの「プロパティ」ば開いてください。
mingw028





そしたら「ショートカット」タブにある「作業フォルダー」っていう所に入っとる文字列ば
[Del]で残らず全部消してしもうてください。
空白で埋めたりすっとはつまらんですよ!全部消すとです!
消してしもうたら「OK」で閉じて終了です。
mingw029


はい、ここまでが環境構築です。
どぎゃんですか?結構めんどくさかったですか?
いっちょいっちょスクリーンショットば取るともめんどくさかったとですよw
おまけに初めてのインストールやしですねw

ばってんが、EclipseでAndroid開発環境ば作っとと比べれば全然ラクばな。


今回は環境構築までやけんここで終いです。

次回はプログラムば書くためのテキストエディタばインストールしようかと思います。
「アクセサリん中のメモ帳でよか!」って人はそっでもよかですよ。
テキストエディタさえあればプログラムはつくらるるけんですねw

そんならば、また。
何年も前に作ったCGI用の自前ライブラリを使って作っていたアップローダーを
少し改変してみましたので羞恥プレイの一環天草発のオープンソースの一環として
ソースごと公開しようと思います。

※2014/03/07 includeがひとつ漏れてたのに後から気付いたので差し替えました。。。

はっきり言って糞コードと言われてもしょうがないようなコードです。。。

「CGIってPerlで書いてあるからソース晒さないと公開できないじゃん」
と思った方もおられると思いますが、このCGIはPerlではなくC言語で作ったものです。。。
なので、使用するにはsshなんかでシェルにログインしてgccでコンパイルする必要があります。
何故Perlじゃなくて、C言語だったかと言うと単純に私がC言語の方が使い慣れてるからです。
Perlを使い慣れているならPerlを使っていたでしょう。

サーバーサイドのWebプログラミングと言ったらPHPと言ってもいいくらい
PHPが普及していますが、今更CGIを公開しようとしたのは、
アップローダーという特性上、大きなファイルをアップロードする場合があるからです。

PHPでもアップローダーは作れますが、PHPにはそれぞれ
upload_max_filesizepost_max_sizememory_limit
といった設定値があり、その設定値は以下のようになっています。

memory_limitは、PHPが使用可能なメモリの最大サイズ。
post_max_sizeは、一回アップロードの最大サイズで、memory_limitより小さくないといけない。
upload_max_filesizeは、1つのファイルの最大サイズで、post_max_sizeより小さくないといけない。

これからもわかるようにアップロードするファイルをどうやらメモリに
すべて溜め込んでいるっぽい感じじゃないですか?
なので最大でもmemory_limitの値より小さいファイルしかアップロードできません。

memory_limitを増やすと大きなファイルもアップロードできるようになると思いますが、
サーバーへの負荷を考えると、いくらメモリが大きくなったとはいえ、数十MB程度ぐらいしか
使う気になりません。(まぁ、個人の気分次第だとは思いますがw)

そこで、CGIで大きなファイルを送ってもメモリを大量に使わないようなロジックを書けば
解決するわけです。
ようは送られてくるデータをメモリに溜め込まずにファイルに書き出すだけですけどね。

なので1GBとかのファイルも送信可能です。
2GB以上はブラウザによっては送信させてくれなかったり古いWebサーバーだとエラーになったりして
うまく送れない場合も多いですが(実際に2GB以上のファイル送信ができるのか試してませんw)

まぁ、そういう訳でわざわざCGIのアップローダーを作ってみたわけです(作ったのは何年も前ですが)
私が知らないだけで、PHPでも巨大ファイルの送信可能な方法があるのかもしれませんけどねw

ちなみにHTML以外にCSSとJavascriptも一応は使用していますが、
その辺はド素人なんでご了承くださいw

今後、JavascriptとかCSSは勉強する予定ですからw
勉強したら、アップロードとかそのあたりもajaxでやるように
改良するとナウくていいですよねw

ちなみにこれはWindowsのVC++でもコンパイルはできましたが、動作確認は自宅の
Linux環境でしかやっておりません。
また、動作も完璧な動作確認をしたわけではないので、バグが無い保証もありません。

サンプルとして設置したURLを貼りたい所ですが・・・
自宅サーバーのため、あまり晒したくないので、スクリーンショットで勘弁してくださいw
アップロード時にファイルのMD5ハッシュ値を計算するのでファイル破損のチェックもできますよ!
uploader-ss

Webについてあんまり詳しくないのに偉そうに語ってしまいました。。。
間違いはご遠慮なく指摘ください。

この記事の内容はいつも以上に自信がありませんwww

いつも自信満々のような書き方で書いていますが、自分のスキルには全く自信がありません。。。
色んな事に手を出しすぎてどれも中途半端ですからしょうがないんですけどw
知っておいたほうが良いと勝手に思っている事をダラダラと書いていこうと思いますw
ただし、あんまり深入りはしません。
経験のない人を対象にしようと思ってますので知ってる人は退屈と
思うかもしれませんが、その時は飛ばしてください・・・w

プログラムなんですが、これはどういうものかと言うと、
コンピューターへの命令の集合みたいなものです。
しかし、コンピューターが実際に実行できる命令は人間にとって
非常にわかりにくく、そのままプログラミングするとなると非常に生産効率が悪いです。

そこで登場するのがプログラミング言語です。
このプログラミング言語は人間にとってよりわかりやすいため、
コンピューターへの命令を記述するのに効率が良いです。

プログラミング言語も、かなり多くの種類がありますので、
実際に開発を行う場合にはその開発に適している言語を選んで開発を行ったりします。

さて、このプログラミング言語ですが困った事に、そのままでは
コンピューターが理解できません。
そのため、コンピューターがわかる命令に翻訳してあげる必要があります。
この翻訳の事をコンパイルと言い、翻訳を行うプログラムをコンパイラと言います。

コンパイラによって翻訳されたプログラムですが、そのままでは実行できません。
そのプログラムで呼び出している他の翻訳されたプログラムやライブラリというプログラムの部品を
結合して、はじめて実行できるプログラムが出来上がります。
この結合する処理をリンクといい、リンクを行うプログラムをリンカ(リンケージエディタ)と言います。

また、コンパイル~リンクまでの処理を行い、実行プログラムを作る処理をビルドと言ったりします。
このビルド(コンパイル~リンク)を単純にコンパイルとだけ言う場合もあります。

ここで言うプログラミング言語で書かれた命令や翻訳されたプログラム、
リンクされたプログラムはWindowsで例えるとこのようになります。

・プログラミング言語で書かれた命令
 → ソースファイル(C言語なら拡張子は.c、C++なら.cpp など)

・コンパイルされて翻訳されたもの
 → オブジェクトファイル(拡張子は.obj : プログラミングした事無い人はあまり見ない拡張子だと思います)
 (ライブラリファイルは.libという拡張子)

・リンクされて実行可能になったもの
 → 実行可能ファイル(拡張子は.exeや.dll など)

ちなみにこのようにプログラミング言語で書かれた命令はコンパイル等の処理が必要になりますが、
世の中にはコンパイルやリンクを行わないでよいプログラミング言語もあります。
いや、正確には実行しながら翻訳していく、といったイメージです。
そのような形式で動かすプログラムをインタプリタと言います。

インタプリタは1行1行を翻訳しながら実行するためコンパイラ方式の言語と比べると処理が遅いです。
しかし、コンパイル・リンクといった作業が不要で直接実行できるためお手軽です。
インタプリタ方式の言語で有名なものは、Perl、PHP、Ruby等です。

また、簡易的なプログラミング言語を全般的にスクリプト言語と言ったりします。
スクリプト言語はインタプリタ方式のものが多いです。
有名なものはjavascriptやVBScript等ですね、もう名前に「Script」がついてますw
また、Unix系OSのシェルに対するシェルスクリプト等もあります。(Windowsでいうバッチファイルのようなもの)

どうでしょうか?なんとなくイメージできますか?
おそらく実際にやってみないとピンとこないかと思います。
なので、ゆっくりと何回にも分けて書いていきたいと思います。

せっかくなんで、次からはオール天草弁で書いてみましょうかね・・・

※間違いや、わかりにくいところは指摘をお願いします。 ←全部?w
珍しいというか、初めてじゃないかな?
・・・といった感じです。

なにが、かと言うとホームページやブログの更新です。

今までいくつかのホームページやブログなんかを作って更新していくぞ!!
・・・と、意気込んでみたものの、2週間程度で飽きてしまって
そのまま何ヶ月も放置、数ヵ月~数年後に思い出したように更新するも数日で飽きてまた放置・・・
みたいな事を繰り返してましたw

天草Webの駅にWebサイトを開設して3ヶ月ほどですが、意外とまだ更新を続けられてますw
開設した目的がある程度固まっているからでしょうかね?

とりあえずこれからも続けれるようにモチベーションを保っとかんばつまらんですなぁw

目的?













・・・ゆっかせんwww
何か作れるといいな~と思ったので、書きますw

天草にもコンピューターに詳しく、プログラミングが出来る人が多数いるかと思いますが、
そういう人たちで集まって何か天草発のオープンソースのソフトウェアを作ってみると
面白いかな~と思いました。

どんなソフトウェアにするのか等は全くまだ考えてはないんですがw

プログラミングをやられる方はわかっておられると思いますが、ちょっとしたものを作るのにも
結構時間がかかります。

しかもこれが仕事ではなく、私のように趣味としてやってるとなると暇な時間をみつけて
ちょこちょことしか作れないため、とてもじゃないですがなかなか捗りませんw
(プログラミング能力の影響が大きいかもしれませんが・・・w)

なので、天草のプログラマー(アマチュア・プロどちらも)が集まって何かオープンソースソフトウェアを
作れれば個人で作るよりも良いソフトウェアが生まれるかもしれないと思いました。
また、他の技術者とやりとりする事でもスキルアップもできるという特典もあります!
(というか、私も色々と勉強したいので他人の技術を盗みたいです)

しかし、やってみたいとは思いつつも、現実はなかなか難しいでしょうけどね。。。
誰が取りまとめるとか、どんな感じにやるかとか。
また、完全にボランティアなので強制もできませんからね。(納期は無期限だけどw)

まぁ個人の願望と妄想ですがひとつのアイディアとしてこんなのもいいかな、と思って
記事にしてみました。

ちなみにこのアイディアはオープンソースのLibreOfficeをダウンロード中に思いつきましたw

天草の人でこういうのに興味をもたれたらコメントもらえるとテンションが上がるかもしれませんw
前へ  6 7 8 9 10 11 12 13 14 15  次へ ]      97件中 46-50件