韓国のスタートアップ界隈がアツかった

こんにちは、川上です。
今回、ソウルで行われた Global Career Vision に日本の学生起業団体の代表として招待され、韓国に行きました。

会場では "Global Startup" をテーマに多くの起業、団体がブースを出し、情報交換/ネットワーキングが行われ、UT Startup Gym も活動の報告を行いました。

"起業といえばシリコンバレー"というのが現状ですが、起業環境の充実という意味では韓国も負けてはいません。
政府、大企業、起業家たちが一体となって、シリコンバレーの次を狙っています。
たった2日間の滞在でしたが、イベントで感じた韓国の勢いを忘れないうちにレポートしておきます。


会場の風景


UT Startup Gym プレゼンの様子

すごいことその1 国を挙げたビジネス支援

シリコンバレーが発展した背景にはスタンフォード大学と卒業生の寄付金がある」
というのは良く聞く話ですが、韓国の場合は政府が後ろ盾になってくるように思います。
韓国での出来事、韓国で知ったことを少し振り返って、どのようにビジネスと政府が結びついているのか報告します。

新大統領の登場と国を挙げた官民協力体制の構築

今回のイベントで、韓国の次期大統領パク・クネさんに会うことが出来ました。
まさか日本の総理大臣より先に韓国の大統領に会うことになるとは思わなかったので、とても驚きました。


( 写真撮影禁止だったので、下記の記事から引用 )

大統領がどのようなことを言っていたか、このイベントを取材したKBSドイツ版の記事をご紹介します。

Die neue Regierung wolle aktiv Gelegenheiten für junge Menschen schaffen, indem sie die Beschäftigung und  Firmengründung im Ausland erweitern und gute Arbeitsplätze entstehen lasse. Sie werde junge Menschen unterstützen, damit sie in der Welt ihre Talente entfalten könnten.
韓国の新政府は海外での雇用や会社事業の拡大、それから良質な職を提供することによって若者のチャンスを積極的に創出しようとしており、若者たちが世界で才能を発揮することができるようにサポートします。

Hierfür wolle sie einen Kooperationsmechanismus zwischen dem privaten und öffentlichen Sektor schaffen. In enger Kooperation mit der Koreanischen Gesellschaft für Handelsförderung (KOTRA) und der Koreanischen Organisation für internationale Zusammenarbeit (KOICA) werde eine Datenbank für Arbeitsangebote in Übersee erstellt und eine neue Struktur zur Unterstützung der Jobsuche und Firmengründung im Ausland geschaffen. Sie wolle zudem jungen Wagnisunternehmern helfen, Überseemärkte zu erschließen, hieß es weiter.
そのために、官民の協力体制を構築しようと考えています。大韓貿易公社(KOTRA)と韓国国際協力団(KOICA)と密に協力して、海外雇用データベース、それから海外での仕事獲得や会社設立をサポートする新しい構造を構築していきます。そして、海外市場開拓のために若い起業家たちのベンチャーを支援して行きたいと考えています。
(記事/写真の出典 )

このように、大統領は、官民の協力関係の構築と、若者支援の推進を重視しており、
ジョブデータベースの構築や起業支援などの具体的な施策も着々と進んでいます。
大統領を筆頭にビジネス環境を変えて行こう、という力強さを感じました。

*記事は韓国メディアKBSがドイツ語で書いたものです。

学生団体への政府の支援がスゴい

大統領の演説にもあった若者の起業支援ですが、具体的にどのような支援が行われているのでしょうか。
今回一緒に行動していた韓国の学生起業団体 (Student Startup Network) は政府と強い関係にあるようで、
イベントの開催、参加、海外の関係者とのネットワーキングのための予算を政府から直接受けているそうです。
学生団体の規模が韓国全土に学生 2000 人と非常に大きいため、それくらいの支援を得るに値するのですが、イベントの開催支援や政府が主催するイベントへの招待、シリコンバレーなどへの海外研修など、手厚い支援があるようで、うらやましく思いました。

すごいとこその2:ネットワークを大切にする

日本では大企業とベンチャー起業が同じイベントに参加し、人脈を広げて行くような機会はなかなかないですし、ましてやベンチャー起業が政府機関とネットワークを持つ機会というのはほとんどないかもしれません。
一方、韓国では官民一体となったビジネスネットワークが完成されようとしています。
今回のイベントでも商社のような大企業に大手ITベンチャー、スタートアップ関係者があつまり、お互いの経験をシェアしていました。
分野をまたいで互いの経験が瞬く間に共有される環境が整備されていて充実しているなぁ。と感じました。

韓国, イスラエル, 日本の学生代表

まとめ

韓国だけではなく他の参加国でも、シリコンバレーの次、新たな起業天国を狙った動きが出ているようでした。
どこが成功するかは分かりませんが、いずれも虎視眈々とチャンスを狙っています。

気づいたら日本が負けていた、ということがないよう、他国のマクロな動きに目を光らせることも大切かもしれません。
UT Startup Gym も日本のスタートアップを促進できるよう、より発展させていきたいものです。

以上、UT Startup Gym 韓国レポートでした。

たった10行のコードでひたすらアイドル水着画像をあつめる

こんにちは、飯塚です。
ウェブ上にはたくさんのデータがあふれています。その中から「自分の欲しいデータだけ」を「自動」でかき集めることができたら素敵じゃないですか? そこで今回は UT Startup Gym「ウェブから情報をあつめる」で取り上げた内容をもとに、たった10行(正確には 9 行)のコードでひたすら「アイドル水着画像」を集める方法を紹介します。言語は PHP です!

まずは結果から


はい、これが今日の目標です。

さっそくコード書く

mac ユーザはさっそくプリインストールされているターミナル.app を起動して、

$ emacs crawler.php

と入力して Enter(もちろん他のエディタでも OK)。頑張って下のコード(青色のコメント部分は写さなくていいです)を写経してください。

<?php
$url = "http://matome.naver.jp/odai/2135350364969742801"; // 画像を収集したい NAVER まとめページの URL
$res = file_get_contents($url); // URL からソースコード(文字列)を取得する
$dom = @DOMDocument::loadHTML($res); // 文字列から HTML を生成
$xml = simplexml_import_dom($dom); // さらにそこから SimpleXMLNode オブジェクトを取得
$imgs = $xml->xpath("//img[@class='MTMItemThumb']"); // XPath を用いて class="MTMItemThumb" の img 要素のみ取得
foreach ($imgs as $img) { // すべての画像について ...
    echo "<img src='".$img["src"]."'>\n"; // URL から img タグを出力
}

Windows ユーザは、各自 PHP を実行できる環境を整えてください。以前のエントリを参考に Ubuntu 入れちゃうのもアリです。
写経できたら、Ctrl+X を押して、Ctrl+S を押す(保存)。Ctrl+X を押して、Ctrl+C を押す(終了)。

画像の一覧を取得する

emacs が終了してシェル画面に戻ってきますので、次のコマンドを入力します。

$ php crawler.php

すると、画像の URL っぽいもの(正確に言うと img タグ)がたくさん表示されます!

これが実は、
http://matome.naver.jp/odai/2135350364969742801
に収められている画像の一覧なのです。

ブラウザに表示する

それでは、この画像群をブラウザで表示させます。もう一度ターミナルで、次のコマンドを入力します。

$ php crawler.php > photos.html
$ open photos.html

すると、既定設定のブラウザが起動して、画像の一覧が表示されます。

おおおおー!

もちろん、URL を変えればこんなかわいい猫画像も!

みんな大好きワンピースも!

こんなかんじで色々な画像が集められます。

リンクをたどって、すべてのページから画像を収集する

先ほどのコードでは、1ページ目の画像しか収集することができなかったので、今回は2ページ目以降も収集してみたいと思います。

<?php
$url = "http://matome.naver.jp/odai/2135350364969742801"; // NAVER まとめページ URL
$res = @file_get_contents($url);

while ($res) {
    $data = getData($res);
    foreach ($data["image"] as $image) {
        echo "<img src='".$image["src"]."'>\n";
    }
    if ($data["nextPage"]) { // 次のページがあるか?
        $res = @file_get_contents($url."?page=".$data["nextPage"]);  // URL の末尾に ?page= をつけると、ページを指定することができる。
        sleep(1); // サーバへの負荷を減らすため 1 秒間遅延処理
    } else {
        break; // 次のページがなければ終了
    }
}

function getData ($html) {
    $dom = @DOMDocument::loadHTML($html);
    $xml = simplexml_import_dom($dom);
    $result["image"] = $xml->xpath("//img[@class='MTMItemThumb']");
    $pager = $xml->xpath("//div[@class='MdPagination03']"); // ページ送り部分を取得
    $current_page = $pager[0]->strong; // 太字のページ番号の値
    $last_anchor = $pager[0]->a[count($pager[0]->a)-1]; // 太字でないページ番号の末尾の値
    if ($last_anchor + 1 != $current_page) { // 太字のページ番号が最後のページを指していなければ...
        $result["nextPage"] = $current_page + 1; // 次のページを設定する。
    } else {
        $result["nextPage"] = null; // 次のページは無い
    }
    return $result;
}

同じようにブラウザで表示すると・・・!

大漁!!

ポイント

  • URL の末尾に ?page= をつけると、ページを指定することができる。
  • 実在するページ数より大きい値を指定した場合でも 404 エラー (Not Found) とならず、最終ページを表示する。
  • そのため、?page= の指定を「404 エラーになるまでインクリメントする」戦略は使えない。
  • したがって、ページ送りで、太字で強調されているページ番号が、太字じゃないページ番号の末尾の次ならば、最終ページと判断する。

まとめ

というわけで、今回は NAVER まとめのアイドル水着画像を題材に、データを収集する方法を紹介しました。
もちろんこの技術を応用すれば、ウェブサイトの構築や研究にも役立てることができます。もっと詳しく勉強したい人は、ぜひ XPath、クローリング、スクレイピングなどのキーワードでググってみてください。さらに詳しく知りたい人のために、講義資料はSlideShareでも公開しています。本格的にウェブサービスの構築について学びたい方は UT Startup Gym でお待ちしております。
それではまた!

ちなみに

Twitter API と file_get_contents でかんたん Twitter クライアント

こんにちは、飯塚です。
今回は第2回初心者勉強会で少し取り上げた、twitter API を使った情報の取得方法について説明します。
勉強会の最後に、下記のようなコードを取り上げました。

<?php
$arr = json_decode(file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_rts=true&screen_name=tushuhei"));
foreach ($arr as $element) {
    var_dump($element->text);
}

このコードで、[twitter:@tushuhei] のつぶやき最新20件を取得して、つぶやきの内容だけを取得することができます。
取得するものを public_timeline (世界中の人の最新のつぶやき)に変えたり、
if 文を加えて特定の文字列が含まれるつぶやきだけを抜き出したり、
つぶやきだけでなくその日付や場所に注目したりするだけで、一気にバリエーションが拡がります。

Twitter API の一覧はここです。

API の URL ってどうやってみるの?

URL を以下のように分解して考えるとわかりやすいです。

https://api.twitter.com/1/ <- 何のAPI?
statuses/user_timeline       <- Twitter API の statuses/user_timeline を使う
json                                    <- json 形式で取得
?                                         <- ここからパラメータを追記します
include_rts=true                 <- RT を含む
&                                        <- さらにパラメータを記す
screen_name=tushuhei       <- @tushuhei のタイムライン

と考えるわけです。
この URL で取得した json 形式のデータを json_decode で PHP で扱える形に直して扱います。

パラメータの詳細はその API の仕様ページに書いてあります。

これをブラウザに出力するには

とっても簡単で、このファイルを DocumentRoot に置けば、ブラウザから見ることができます。

※ DocumentRoot がどこか分からない![mac 向け]
そのときは、Apache の設定ファイルを見ます。

sudo vim /etc/apache2/httpd.conf 

とした後、DocumentRoot で検索をかけて、どこに DocumentRoot が設定されているか確認しましょう。
設定を変更したら、必ず

sudo apachectl configtest

で Syntax OK (文法チェックOK)を確認した後、

sudo apachectl restart

apache を再起動して変更を反映させましょう。
(「システム環境設定」から「Web共有」を一度オフにして再度オンにすることでも同様の操作ができます。)

年末年始にちょっとしたアプリを作ってみては如何でしょうか?
よいお年を!(^_^)/

追記(2012年1月11日)

ただ var_dump で出力するだけじゃ汚くてやだ!という方のために。
このように書けば、HTML で出力結果を自在に表現できます。
あとは style 属性や CSS を駆使してデザインを仕上げましょう!

<?php
$arr = json_decode(file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_rts=true&screen_name=tushuhei"));
?>
<html>
    <head>
        <title>かんたん Twitter</title>
        <meta charset="utf-8">
    </head>
    <body>
        <? foreach ($arr as $element){ ?>
        <? echo $element->text ?>
        <br>
        <? } ?>
    </body>
</html>

UT Startup Gym 発サービス、お花サプライズ!ついにリリース。

いよいよ,UT StartUp Gymから生まれたサービス「お花サプライズ」がリリースです!

「お花サプライズ」って?

facebook 上の友だち同士で花束をつくり、誕生日を迎える友だちに贈り届けるソーシャルギフトサービスです。
どなたでも,facebookのアカウントさえあればご利用可能なので,まずはこちらからどうぞ!

お花サプライズ!の開発&アドバイザーで、UT Startup Gym でも毎回講師をしていただいている amachang さんにも熱く語ってもらいました。
ソーシャルギフトサービス「お花サプライズ!」をリリースしました! -IT戦記
この中にもあるように、簡単なものでもいいから動くものを作ったことが、花屋さんや決済代行会社との交渉の上で大きかったです。
Google の徳生健太郎氏も仰っていますが、まさに「百聞は一デモに如かず」です!

勉強会発のサービス

お花サプライズ!はUT Startup Gym 第1期生によって作られたサービスです。
開発メンバーのほとんどは、勉強会が始まった 4 月の時点ではウェブサービスはおろかプログラミング自体が素人同然でした。
この勉強会で少しずつではありますが,着実にスキルアップを重ね、ようやくリリースにこぎつけることが出来ました。

UT Startup Gym で得るものはウェブサービスを開発するプログラミング能力だけでがありません。
実際にビジネスとして成り立つものにするために、パートナーと交渉する行動力や、人にサービスのことを伝えるプレゼンテーション能力などもプロジェクトを通して育んできました。
開発だけはなく、企画からプレゼンまで一貫してできる人材になる。そうして自分でビジネスのサイクルを回すことができる人になる。これが UT Startup Gym が目指すところです。

第二期へ向けて

ようやく第一期のプロジェクトは一応すべてリリースが完了しました。

国会.in http://kokkai.in
お花サプライズ!https://hanasup.jp

次は第二期のみなさんの番です!
第二期は、規模を大きく拡大したこのUT StartUp Gymの今後を占う非常に大事なタームです。
是非成功させましょう!

macでubuntu環境をつくる

この章では、mac ユーザのみなさんに向けて、ウェブサービス開発の環境を整える第1歩を説明します。

OS ってなに?

macwindows などはみなさん聞いたことがあると思いますが、それが OS と呼ばれるものです。
パソコンとみなさんの間を取り持っていものだと考えてい良いでしょう。
そして、この UT Startup Gym では、Linux という OS を用いてウェブサービス開発を行っていきます。

「なぜいつも使ってる mac を使えないの?」
「なんでわざわざ新しい OS を使うの?」

など様々な疑問が起こると思いますが、ウェブサービスにおいて Linux は非常に一般的に使われている OS なのです。

macLinux を入れる??

「ということは、新しい Linux が入ったパソコンを買う必要があるの?」

と思われるかもしれませんが、その必要はありません。VirtualBox というソフトを使えば、mac の上で Linux を立ちあげ、ウェブサービス開発に取り組むことができるのです!

環境設定をはじめよう

VirtualBox をインストールする。

https://www.virtualbox.org/wiki/Downloads
にアクセスし、VirtualBox for OS X hosts をクリック、ダウンロードします。

ダウンロードされた .dmg ファイルをダブルクリックし、
インストーラをダブルクリックしてインストールします。

インストーラが終了すれば、インストールは完了です。

Linux Ubuntu をインストールしよう。

mac 上で別の OS を動かす準備が整ったので、次はその OS 自身、Linux仮想マシンにインストールします。
mac にも OSX というバージョンがあるように、Linux にも様々なディストリビューションというものがあります。
今回は Ubuntuウブンツ、ウブントゥ)というディストリビューションを用います。

Ubuntu をダウンロード

まず、Ubuntu の CD イメージをダウンロードします。
Ubuntu Desktop 日本語 Remix CDのダウンロード
の(CDイメージ)と書かれたファイルをダウンロードしてください。(複数ありますが、どれでも大丈夫です。)

仮想マシンを作成

次にインストールした VirtualBox を起動し、新規仮想マシンを作成します。

その後、仮想マシンに適当な名前(「Ubuntu1」など)を設定し、オペレーティングシステムLinux、バージョン:Ubuntu と設定します。

メインメモリの大きさを指定します。1024 MB ぐらいが適当です。

以下スクリーンショットのように進めます。





仮想マシンを起動すると、初回起動ウィザードが立ちあがります。

以上で仮想マシンの作成は完了です。

参考

http://inforati.jp/apple/mac-tips-techniques/windows-hints/how-to-install-linux-ubuntu-to-mac-virtualbox.html
こちらに詳しいインストール方法が載っているので、こちらも参考にしてください。

Ubuntu がインストールできたら


アプリケーション→アクセサリ→端末
と開いて、
http://d.hatena.ne.jp/utgym/20111112/1321110738
に移りましょう。はじめは「黒い画面こわい」となるかもしれませんが、あともう少しです!頑張ってください!

もし分からないところがあれば

facebook UT Startup Gym の ウォールで随時質問を受け付けています!そちらに遠慮無くコメントを残してください。
(飯塚)

ubuntuへようこそ

linuxシステムにログインするとマシンの名前が左の方に書かれた画面が表示されます。
linuxではこの名前の横に命令を入力することで様々な処理を行います。
WindowsMacのようにアイコンがありそれをクリックすることで処理をするものをGUIとよびますが、このように文字で処理を行うものをCUIといいます。

このCUI上で操作を行うために基本的なコマンドを覚えてもらいます。
出て来たコマンドは必ず手を動かして実行してください。

全般

今自分がどこにいるのか?

ログインすると、ホームディレクトリと呼ばれる場所にいます。
ディレクトリとはフォルダのことです。pwdというコマンドを打つと今自分がいる場所がわかります。

ここにあるファイルが見たい

finderを選択して書類フォルダをクリックすると
そこにはwordファイルなどのいくつかのファイルが入っているはずです。
CUIにおいてこのようにディレクトリの中に含まれるファイルを調べるためのコマンドがlsです。
lsはlistの略です。
使用法

ls 

また他にもlsの後ろに-(オプション)をつけて

ls -l

ls -a

などのコマンドもあります。
ls -lはlong形式と呼ばれる、ファイルの詳細な情報が表示されます。この表記の意味は後々。
ls -aは.から始まる隠しファイルも表示します。隠しファイルは設定ファイルなど普段いじられないようにしてあるファイルです。

ファイル関係

ファイルの作成

ファイルを作成する際には後述するエディタの使い方で説明するようにファイル内に何かを書いて保存するのが普通ですが,ここではまずファイルを作ることだけを考えて別の方法でファイルを作ってみます。

echo  hoge

と入力してみてください。
そうすると
hoge
という返事が返ってくるはずです。
では次に

echo hoge > test.txt

と入力してlsをしてみてください。
するとtest.txtというファイルができているはずです。

cat test.txt

と入力すると中身を確認できます。

ファイル名の変更

ファイル名を変更するにはmvを使います。
またこのコマンドはファイルを移動するときにも使います。

mv test.txt test_new.txt

と入力しlsするとtest.txtが消えてtest_new.txtができています。
catで中身を確認してみてください。

ファイルのコピー

ファイルをコピーするにはcpを使います。

cp test_new.txt test_new.txt.bak

と入力しlsするとtest_new.txt.bakというファイルができます。

ファイルの消去

ファイルを消去するにはrmを使います。
rmで削除したファイルは復元できないので注意してください。

rm test_new.txt

と入力してlsするとtest_new.txtが消えています。
バックアップファイルよりtest_new.txtをもう一度作ります。

cp test_new.txt.bak test_new.txt

と入力してください。

ディレクトリ関係

ディレクトリの作成

作成するファイルをホームディレクトリ内にすべて配置するとディレクトリ内がどんどん汚くなってしまいます。
そこで新しいディレクトリを使ってファイルを整理しましょう。

mkdir work

と入力しlsしてください。するとworkディレクトリができています。

では今まで作成したファイルをこのworkディレクトリに移動してください。

mv test_new.txt work
mv test_new.txt.bak work
ディレクトリの移動

今作ったworkディレクトリの中で作業をしましょう。
ディレクトリの移動にはcdを使います。
Change Directoryの略です。

cd work

と入力しpwdすると、確かにworkディレクトリの中にいることがわかります。
workに対するホームディレクトリのように上位のディレクトリのことを親ディレクトリとよび、コマンドでは ..(ピリオド2つ)で表されます。
現在いるディレクトリのことをカレントディレクトリとよび、コマンドでは .(ピリオド)で表されます。
またディレクトリ階層の一番上のことをルートディレクトリとよび、コマンドでは / で表されます。

cd <ディレクトリ名> が基本的な使い方ですが以下のようなものもよく使います。

cd .. ディレクトリへ移動
cd ~ ホームディレクトリへ移動
cd ホームディレクトリへ移動
cd / ルートディレクトリへ移動
cdは講義中でも頻繁に使うのですぐに使えるようにしましょう。

ディレクトリのコピーと消去

ディレクトリのコピーにはファイルと同様にcpを使いますが、

cp -r <ディレクトリ名1> <ディレクトリ名2>

というように-rオプションをつけます。

-rはrecursive(再帰的に)を意味します。

ディレクトリの消去はrmdirを用いますが、rmdirは空のディレクトリにしか使えません。
中にファイルの入っているディレクトリを中身ごと削除したい時は

rm -r <ディレクトリ名>

のようにここでも-rをつけます。

一連の流れで使ってみましょう。

mkdir child1 <= child1ディレクトリを作成
cp -r child1 child2 <= child1ディレクトリをコピーしてchild2を作成
rmdir child2 <= child2を消去
cp test_new.txt child1 <= test_new.txtをchild1にコピー
rm -r child1 <= child1を消去

お疲れさまです。

以上で基本的なlinuxコマンドはおしまいです。
どれも開発していく上で必要不可欠なので必ず手を動かして覚えましょう。

ubuntuへようこそ

linuxシステムにログインするとマシンの名前が左の方に書かれた画面が表示されます。
linuxではこの名前の横に命令を入力することで様々な処理を行います。
WindowsMacのようにアイコンがありそれをクリックすることで処理をするものをGUIとよびますが、このように文字で処理を行うものをCUIといいます。

このCUI上で操作を行うために基本的なコマンドを覚えてもらいます。
出て来たコマンドは必ず手を動かして実行してください。

全般

今自分がどこにいるのか?

ログインすると、ホームディレクトリと呼ばれる場所にいます。
ディレクトリとはフォルダのことです。pwdというコマンドを打つと今自分がいる場所がわかります。

ここにあるファイルが見たい

windowsボタンを押し、ドキュメントフォルダをクリックすると
そこにはwordファイルなどのいくつかのファイルが入っているはずです。
CUIにおいてはこのようにディレクトリの中に含まれるファイルを調べるためにlsというコマンドを用います。
lsはlistの略です。
使用法

ls 

また他にもlsの後ろに-(オプション)をつけて

ls -l

ls -a

などのコマンドもあります。
ls -lはlong形式と呼ばれる、ファイルの詳細な情報が表示されます。この表記の意味は後々。
ls -aは.から始まる隠しファイルも表示します。隠しファイルは設定ファイルなど普段いじられないようにしてあるファイルです。

ファイル関係

ファイルの作成

ファイルを作成する際には後述するエディタの使い方で説明するようにファイル内に何かを書いて保存するのが普通ですが,ここではまずファイルを作ることだけを考えて別の方法でファイルを作ってみます。

echo  hoge

と入力してみてください。
そうすると
hoge
という返事が返ってくるはずです。
では次に

echo hoge > test.txt

と入力してlsをしてみてください。
するとtest.txtというファイルができているはずです。

cat test.txt

と入力すると中身を確認できます。

ファイル名の変更

ファイル名を変更するにはmvを使います。
またこのコマンドはファイルを移動するときにも使います。

mv test.txt test_new.txt

と入力しlsするとtest.txtが消えてtest_new.txtができています。
catで中身を確認してみてください。

ファイルのコピー

ファイルをコピーするにはcpを使います。

cp test_new.txt test_new.txt.bak

と入力しlsするとtest_new.txt.bakというファイルができます。

ファイルの消去

ファイルを消去するにはrmを使います。
rmで削除したファイルは復元できないので注意してください。

rm test_new.txt

と入力してlsするとtest_new.txtが消えています。
バックアップファイルよりtest_new.txtをもう一度作ります。

cp test_new.txt.bak test_new.txt

と入力してください。

ディレクトリ関係

ディレクトリの作成

作成するファイルをホームディレクトリ内にすべて配置するとディレクトリ内がどんどん汚くなってしまいます。
そこで新しいディレクトリを使ってファイルを整理しましょう。

mkdir work

と入力しlsしてください。するとworkディレクトリができています。

では今まで作成したファイルをこのworkディレクトリに移動してください。

mv test_new.txt work
mv test_new.txt.bak work
ディレクトリの移動

今作ったworkディレクトリの中で作業をしましょう。
ディレクトリの移動にはcdを使います。
Change Directoryの略です。

cd work

と入力しpwdすると、確かにworkディレクトリの中にいることがわかります。
workに対するホームディレクトリのように上位のディレクトリのことを親ディレクトリとよび、コマンドでは ..(ピリオド2つ)で表されます。
現在いるディレクトリのことをカレントディレクトリとよび、コマンドでは .(ピリオド)で表されます。
またディレクトリ階層の一番上のことをルートディレクトリとよび、コマンドでは / で表されます。

cd <ディレクトリ名> が基本的な使い方ですが以下のようなものもよく使います。

cd .. ディレクトリへ移動
cd ~ ホームディレクトリへ移動
cd ホームディレクトリへ移動
cd / ルートディレクトリへ移動
cdは講義中でも頻繁に使うのですぐに使えるようにしましょう。

ディレクトリのコピーと消去

ディレクトリのコピーにはファイルと同様にcpを使いますが、

cp -r <ディレクトリ名1> <ディレクトリ名2>

というように-rオプションをつけます。

-rはrecursive(再帰的に)を意味します。

ディレクトリの消去はrmdirを用いますが、rmdirは空のディレクトリにしか使えません。
中にファイルの入っているディレクトリを中身ごと削除したい時は

rm -r <ディレクトリ名>

のようにここでも-rをつけます。

一連の流れで使ってみましょう。

mkdir child1 <= child1ディレクトリを作成
cp -r child1 child2 <= child1ディレクトリをコピーしてchild2を作成
rmdir child2 <= child2を消去
cp test_new.txt child1 <= test_new.txtをchild1にコピー
rm -r child1 <= child1を消去

お疲れさまです。

以上で基本的なlinuxコマンドはおしまいです。
どれも開発していく上で必要不可欠なので必ず手を動かして覚えましょう。