Aggressive Style 5

読者です 読者をやめる 読者になる 読者になる

Aggressive Style 5

昨今はコミケ関係を中心に書いています。同人やニコニコ動画方面で活躍される方の相互リンクをお待ちしています。

「Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事」における2つの反省点と、新たに勉強した2つの点

目次

  • 始めに
  • 前回の記事における2つの反省点
  • 皆様のコメントを読んで、新たに勉強した2つの事
  • 1.UNIXのシェルコマンド
  • 1-1:UNIXのシェルコマンドのリファレンスサイト
  • 1-2:UNIXシェルスクリプトについて
  • 2:crontabを練習してみた
  • 2-1:crontabとその主なコマンドについて
  • 2-2:crontab-eを使ってcrontabの情報を編集する
  • 2-3:動作確認
  • 3.最後に

始めに

前記事「Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事」の方をお読み頂きありがとうございました。まさか前記事があそこまでの大反響を頂けるとは、自分の方でも思っていませんでした。ブログをやっていて良かったと思うとともに、前記事の反省点、皆様のはてなブックマークのコメントを読みつつ、新たに勉強した点について話そうと思います。尚はてなのIDをそのまんま掲載してしまったので、削除して欲しいなどの旨がありましたらご連絡下さい。

前回の記事における2つの反省点

まずは、前記事を書く上での反省点を2つ書こうと思います。もっと反省するべき点はあるだろと言われそうですが、2つまでに絞って話そうと思います。

反省点1.「11個全部やらなければ行けない」と皆さんに誤解を与えてしまった事

まず始めに反省するべきなのは、「11個全部やらなければ行けない」と皆さんに誤解を与えてしまった事です。最近の自分の取り組みを11の事として書いてしまった点も反省しています。前記事の流れとして、「1〜6は就職活動する上で使えるツールの紹介」「7は求人に[PHPができる人(中途)]と書いてある場合にやっておくべき事」「8以降は学生の頃に余裕があったらやって欲しいなと個人的に思った事」の3つに大別されます。8に関しては、後から考えると要らなかったなと正直思っております。さて、はてなブックマークに以下の様なコメントがありました。


ここに書いてあることのいくつかはやったけど、全部はやってない。でも内定はなんとかいただけました。転職する人でもここにある全部はしないんじゃないか? (id:kimikimi714さん)

id:kimikimi714さんの言及の通り、前記事に書いてある事を全部やらなくても面接には受かります。自分の場合は1社目に受かったとき、この1つもやって居ませんでしたし、2社目も掲示板のプログラムも満足に書けないまま合格と言った流れでした。この事をきちんと前記事で書いておけば良かったです。前記事を読んで「やってみたい」と思った事がありましたら幸いです。

反省点2:環境構築の説明が的確で無かった

2つ目に反省するべき点は、前記事1.の環境構築の説明が的確で無かった点です。前記事の1.で一方的にmacを薦めた理由は、自分がLinuxに対して無知だったので、macを使った方法しか紹介できなかったからです。

Linuxの「apt」を使えば、手軽にソフトのインストールが出来ます

又開発に必要なソフトウェアについて、以下のようなはてなブックマークのコメントを頂きました。


Mac+MacPortsよりはVirtualBoxやVMWarePlayerでUbuntuServer+aptのほうをオススメしたいところかなー。極力金を使わない方法のがいい。(id:nullpobugさん)

Webプログラマー目指す感じなのにXcodeを導入させる意味がよく分からないし、まずMacじゃなくていいし、LinuxWindowsデュアルブートの方が都合よさそう(id:kimitoboku035さん)

このコメントを頂き、aptでもMacPortsと同じように出来る物なのかと思い、実際に手元にあるVirtualBox+Ecolinuxを積んだWindows XP機で試してみました。ここで「sudo apt-get install *****」とシェルコマンドを打ち込めば、MacPortsと同じように気軽にインストール作業ができる事が分かりました。ご指摘の方ありがとうございました。

後で調べてみたら、MacPortsやaptはパッケージ管理システムという物に当たると思います。Wikipediaを調べてみたところ、OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムのようです。

ちなみにXcodeを勧めた理由は、直接的には関係は無いが、万一iPhoneアプリを作る事になった時に即座に対応し易いからです。人と話していて「あっ!自分も作ってみよう」と言った場合には良いと思ったからです。ちなみに環境構築とは関係ないですが、7.に関してはDBにつなぐ事が出来る言語でしたら、何でもOKです。練習の例としてPHPを挙げただけでして、それ以上の理由はありません。

皆様のコメントを読んで、新たに勉強した2つの事

1.UNIXシェルスクリプトについて

さて1点目に勉強したのはUNIXシェルスクリプトについてです。前記事のはてなブックマークのコメントに、


Macを選んだのはコンソールが使えるからという理由のはずが、shellの使い方とかは一切ない件(id:atsushifxさん)

とありました。言われてみれば自分はUNIXについてもかなりの無知だったので、これを機に勉強してみました。ここからはUNIXコマンド、もといシェル関連について勉強した事を話そうと思います。

1-1:UNIXコマンドのリファレンスサイト

まずUNIXコマンドのリファレンスが書いてあるサイトを掲載しようと思います。

コマンド ショートカットキー (Command Shortcutkey - Unix, Linux, vi, emacs):myvision


基本的な UNIX コマンド



コマンドをさらっと見たいときは上のサイト、じっくり調べたいときは下のサイトが便利です。上下とも自分などではとても纏めきれない程丁寧に纏められています。

1-2:UNIXシェルスクリプトについて

ここからはUNIXシェルスクリプトについて説明していきます。シェルスクリプトは「何かしらの作業を自動化したい」「手入力のコマンド入力の面倒さを解消したい」と言った状況で使います。自分の場合なら毎回打ち込む必要のあるコマンドをshファイルに保存して、次から呼び出して使うと言った用途に使う事があります。

使用例1:(XAMPP上にある)MySQLをシェルで操作する

例えばシェルを使う事で、(XAMPP上にある)MySQLシェルスクリプトやコマンドで呼び出す事もできます。例えば自分の場合、例えばXAMPP上のMySQLをターミナルから使いたいたいとき、「/Applications/XAMPP/xamppfiles/bin/mysql -u root -p」(パスワードは付けていなかったりです)と入力するのですが、いちいち毎回やってられません。こんなとき上記コマンドを「mysqlconnect.sh」と言うファイル名に保存し、ターミナルで「sh mysqlconnect.sh」と入力するといきなり使用準備の段階に移行する事ができます。こうしたMySQL関連のコマンドにつきましては、以下のブログさんが良く扱っております。

MySQLとシェルスクリプト(OpenGroove)




使用例2:変数と繰り返しと分岐を使ってFizzBuzz問題を解く

色々調べてやると、他の言語のように分岐や繰り返しの処理も可能なようです。そこでどうやって分岐や繰り返しを書くのかを確認するために、試しにFizzBuzz問題UNIXシェルスクリプトを書いてみました。シェルスクリプトについては以下のサイトを参考にしました。

シェルスクリプトでの制御文(須崎純一のWebサイト)




ここでFizzBuzz問題とは、以下のような問題の事を言います。

問題

1から100の数字を表示していく。現在数えている数字が3の倍数のときは数字の代わりにFizzを、5の倍数のときは数字の代わりにBuzzを、15の倍数のときは数字の代わりにFizzBuzzと表示するような問題の事をFizzBuzz問題と呼ぶ事にする。このときFizzBuzz問題を解くためのUNIXシェルスクリプトを記述せよ。

シェルスクリプト

実行結果

以下のようになっていれば大丈夫だと思います。



今までの言語と違う点

今回自分はUNIXのシェルコマンドと言う新しいものを触ったのですが、新しい言語などを触る時は「今までで何処が違うか?」等を念頭におきながら勉強しました。そこで、今までの言語などとは違う点は、以下の4つになります。

  1. 変数の扱いとして、演算やif文の中で使うときは$を付ける
  2. 足し算などをやるのに「`expr $i % 15`」等と入力する
  3. 「==」の代わりに「-eq」を使う
  4. 「else if」の代わりに「elif」、終わりにfiを入れる

使用例3:MySQLのレコードを10件連続でInsertする

使用例1,2を応用すると以下のようなテーブルに対し、「MySQLのレコードを10件連続でInsertする」と言った動作も可能となります。以下のコード実行したら、実際に10件連続でInsert可能でした。

DBのテーブル図(DB名:test テーブル名:test)
カラム名 備考
id int(10) 主キー(PRIMARY KEY)、AUTO_INCREMENT
value int(10) NOT NULL

シェルコマンド

実行結果

カラムidの値が800を超えているのは、シェルコマンドを書いてる途中に無限ループに陥ってしまったからです。while文恐るべし。書き直した所うまく行ったので安心と言った感じです。




2:crontabを練習してみた

2つ目に勉強した事はcrontabと言う物です。実はこの記事を書いてて勉強せねばと思い、その勉強の様子を掲載していきます。

2-1:crontabとその主なコマンドについて

crontabとは、コマンドやシェルスクリプトが指定した日時に自動実行するためのコマンドです。まず、以下で使うコマンドを列挙します。

  • crontab -l:現在実行しているcrontabの情報を表示する
  • crontab -e:(Vimなどのエデイタで)crontabの情報を編集する
  • crontab -r:crontabの情報を削除する

2-2:crontab-eを使ってcrontabの情報を編集する

早速ターミナルで「crontab -e」と入力して、crontabファイルを編集していきます。入力すると以下のようにvimが登場します。このとき「分 時 日 月 曜日 コマンド」と入力していきます。ここで下記のcrontab文は「毎時01分〜59分において、Hello World 2nd」を出力すると言う意味となります。



又以下のサイトに、具体的なcrontabの編集方法が書いてあります。

Linuxコマンド一覧[crontab]


色々調べていると、crontab -eは使わない方が良いと指摘しているブログもありました。「crontab -e は「絶対に」使ってはいけない(ろば電子が詰まっている)」さんにはcrontabの使われ方など、興味深い書き込みがあります。

2-3:動作確認

実際にechoを実行しているファイルを開いてみたところ、毎分Hello World 2ndが表示されているので無事に動作はしたみたいです。



3.最後に

本記事を最後までお読み頂きありがとうございました。まだまだUNIXについて覚えるべき事は一杯ありますが、覚えた事を記事にさせて頂きました。又新たに書く事が見つかりましたら、その都度ここに書くかもしれませんのでその時はよろしくお願い致します。