タクマ松下のブログ

情報科学科の学生が書く記録。フロントエンドとサーバサイド練習中!です!

pythonでスクレイピングしたらめちゃ簡単だった

こんばんは.

僕はスクレイピングとかしたことがありませんで,
今日初めてスクレイピングをしました.

とは言っても,
Wikipediaからデータを引っこ抜きたいだけだったので
なるべく簡単に済ませようと思いました.

やってみる

Go編

最初は書き慣れたもので行こうと思って,
Goで書いてみようと思ったんですが意外とめんどう...
3分で理解できなかったらポイしてました.
go getなんちゃらしてみたんですが,やめました.

Python

結論からいうと3秒でできました.

qiita.com

参考ページです.

Pythonは書いたことなかったのですが,
とりあえず brew install python3 をして,
pip3 pandaとかいうのを入れて...
コードを書きました.

import pandas
url = 'https://en.wikipedia.org/wiki/Timeline_of_programming_languages'
fetched_dataframes = pandas.io.html.read_html(url)

count = 0

for data in fetched_dataframes:
    data.to_csv('./datas/' + str(count) + '.csv')
    count += 1

あとは python3 hoge.py

こうすると./datas/ に0.csvとかができます.
HTMLでテーブルになっているとこが全部抜けました.

まとめ

簡単すぎるのでおすすめ

本棚が崩れてきたので本棚を探す

技術書を買い始めて5年ほど経ちますが、
いよいよ本棚が限界を迎えてきました。

f:id:t-matsushita:20170501224127p:plain

というのもこいつは本棚ではありません…
無理をさせてすまぬ。

現状

本棚は上のような状態です。
技術書以外も交じっているんですが、
技術書と雑誌のみの山がこんなにあったりします。

f:id:t-matsushita:20170501224131p:plain

山が3つか4つくらいでしょうか…
あとはソファの上にも本がちらほら…というか一杯ありました。

探さなきゃ

やっぱり部屋でかなりの広さを取ってしまうので、
できればおしゃれなやつがいいですよね。
でも僕はお金がないので出来るだけ安く済ませたいです。
一万円くらいでなんとかなってほしい。

条件

  • 斜めになってない
  • 奥と手前の2重構造になってない
  • つまり変化球は狙わない
  • とは言ってもおしゃれなほうがいい
  • 技術書の重さに耐えられる。
  • 奥行は雑誌くらい。
  • 予算1万!ハリボテでもこの際構わん。

というわけで探します。

探した

候補1

あっ!これ安くていいんじゃない?
って思ったんですが5kgまでしか耐えれないそうです。

というかこれ飾り棚じゃん。
ちょっと厳しそうです。
僕はウイスキーのボトルを何本かストックしているので
そいつらと一緒に置いたらオシャレかもしれません。
候補として残しましょう。

候補2

普通です。
安いですね。

候補3

少し高いですが良さそうです。
ハリボテじゃなさそうだし。
条件の変化球は狙わないってとこに少しひっかかりますが、
これの参考写真の2枚目は、これと普通の本棚を組み合わせて二段構成にしてます。
そんな感じにしたらよさそうですね。
これを2つ買うと3万くらいかかっちゃうけど安い割には良さそう。

どうしよう

これ以上ほっとくと本にダメージがいきそうなので早く買います。
更に吟味してまた報告します…

Lispで就職先を探すとかいう奇行

小話です。

皆さんLispは好きですか。
僕は嫌いではないです。
プロが書いたLispは本当にきれいだし、
自分のコードと比べると、これ本当にLispか?ってなります。

でも就職には使いたくないですよね。
え?使いたい?
派生なら可能性はあるかもですね。

探してみる

研究室の先輩と小一時間探してみました。
clojureとかOCamlとかも一応。
確かにあるはあるんですが、
これ本当にLispでやる意味あんのか?って思いました。
まぁそんなもんですよね。

企業の目的はなにか

Lispは枯れた言語…というと失礼ですが、
所謂よく使われるアプリケーションの開発には向いていませんよね。
言語的にとかではなくその周り的に。

未だに言語処理系では強いのはわかりますが、
無理に他の分野を頑張ろうとする意味はなさそうです。

実行速度が早い関数型言語もありますが、
あえてLispでってことはないと思いますよね。

まぁできないことはないけども…
みたいなことを1時間ほど考えた結論は。

Lispで釣ってウィザード級ハッカーを雇おうとしている。」

でした。

ウィザード級ハッカーの人は海外で活躍していただきたいです。

clojureをはじめた

clojureってご存知ですか。

 

ご存知でない

ですよね。

clojureJVMで動くlispです。

関数型言語とか言われるタイプのやつです。

いわゆるフツーの言語は手続き型とか言われるんですが、関数型言語はまた違う性質や思想を色々含んでいます。

関数型言語の定義は何かと言われると少し困ります!

 

なぜclojure

今まで僕はhaskelllispなどの関数型言語に触れてきました。

racketっていうのも少し触った気がします。

理由はサーバクライアント間をS式でやりとりできると聞いたからです。

まだ触りしかしていないので、本当か?って思ってたんですが、

https://www.4clojure.com

こんなサイトがあるんで多分本当です。

 

S式ってなに

lispを触りだけでもやってみてください!

たぶん楽しいです。

 

なにがいいの?

ここではlispの話になります。

なにがと言われると困りますが、lispは上手く書けると本当に美しいです。

他にも良いところはありますが、プロが書いたlispは本当に美しいです。

githubなどで適当に漁ってて、うわ綺麗なコードだなーと思ったら、emacs lispのエリートだったりします。

初心者でもはっきりわかります。

 

へーどうやって練習すんの?

https://www.4clojure.com

英語が少し読める人はここで。

研究室の先輩に教えてもらいました。

 

読めない人はlispの問題を解くと良いです。

無限に転がってます!

また進展したらサーバでも立ててみようと思います…

ぼくの開発環境 Mac版

こんばんは.
開発環境という大層なものではないですが,
僕が気に入っているツール郡の紹介です.
Mac版です!
Windows版は後日書きます.

環境

ターミナル

iTerm2

デフォルトのターミナルがイマイチなのでこいつを使ってます.
普通のターミナルですが,キーコンフィグとか色とかいじるのが便利です.
PS1はこんな感じです.

PS1="\[\e[32m\]\u\$\[\e[m\] "

PS1とはbashの機能で,プロンプトの設定です.
ユーザー名がcs14095だとすると,

f:id:t-matsushita:20170421014509p:plain

こんな感じで見えます!
PS1の設定で色も付けています.

ちなみにテーマの色はmonokaiを少し自分でカスタムしてます.
あとは,lsのデフォルトが見にくいので'ls -G'をaliasしてます.

alias ls='ls -G'
alias ll='ls -hl'

他は大したことないです!

テキストエディタ

Emacs

みなさんご存知(?)Emacsです.
基本的にターミナルだけで作業が完成する場合はこれです.
こちらもカラーテーマとしてmonokaiのカスタムです.
設定ファイルの説明をすると1日が終わってしまうので,簡単な見た目だけ.

f:id:t-matsushita:20170421014935p:plain

WebStorm

IntelliJ様のWebStormです.
学生という身分を活かしてタダで使わせていただいてます.
本当にありがとうございますm(_ _)m
フロントエンドをいじるときはだいたいこれです.

理由は...LiveEdit!

f:id:t-matsushita:20170421015319p:plain

こんな設定をするとCSSでもHTMLでも変更した瞬間にブラウザに見た目を反映してくれます!
便利!
あ,キーバインドEmacsにしてます.

Xcode

Swift書くならこれ.
真っ黒にできないのは嫌いです!
IntelliJ製品っぽくできればいいのに...

MacDown

マークダウンを書けるアプリです.
プレビュー機能がついています!
普通のMarkDownエディタですが,見た目とアイコンが綺麗で気に入ってます.

CotEditor

サッと開いて見るときに使ってます.
軽いし文字コードの設定もすぐに変えられるし,
シンタックスハイライトがしっかりしてます.

SublimeText

最後に開いたのはいつか忘れましたが,
Cmd+Dを押すと幸せになれるし,カラースキーマが最初から綺麗です.
こいつのせいで僕の開発環境はMonokai色になりました.

ブラウザ

Chrome

LiveEditのデバッガーがこいつでしか動かない?
Chrome拡張機能としてLiveEditをいれてやるとWebStormと連携してくれます!
詳しくは書きませんが便利です.

その他

SnippetsLab

コードスニペットを保存しとくとこです.
デザインがいいです.
有料です...

Slack

なんか伝えたくなったら開いてます.

Evernote

なんか思いついたら開いてます.

おわりに

他にもいろいろありますが,疲れてきたのでこれくらいにします.
また追加版を書くかもしれません!
おやすみなさい...

Go言語でサーバサイドを練習する

Go言語でサーバサイド

僕はGo言語が割と好きで,Swiftが苦手とする分野はGoで代用してきました.
特にサーバサイドで何かするっていうときはGoを使用していたんですが,
いよいよウェブサービスを作りたいっていうときに何を参考にしようか迷っていたときに買った本の紹介です.

本!

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

何が載っている?

この本には,チャットアプリケーション,REST APIの作り方が載っています.
ライブラリの使用をしていたり,Goでのノウハウを紹介しながらも,車輪の再発明をしていないところに好感が持てます.
ゴルーチンやチャネルの実用的な使用法もありがたいです.

要求レベル

レベルとしてはGoの基本構文がわかったくらいで読めると思います.
チャットアプリケーションの開発では,WebSocketを使用しているので,
予備知識として簡単なネットワークの知識があるといいですね.
それでも書籍内である程度説明してくれているので困ることは少ないと思います.

ここがよかった

ライブラリ

$ go get ~
でライブラリを使おう,とかいうこともちゃんと紹介してくれているので,
モダンな開発ができそうですね.

コード

コードは簡潔でかなり読みやすいです.
コードを読んでいて,ん?ってなったところはだいたい注意書きをしてくれてます.

その他

あとはレベルがいきなり上がらないところもいいです.
とりあえずコンパイルできたらOKだよ!みたいなことも言ってくれて,
わからないけど先に進みたいときに,ポジティブな一言がありがたいですね.

まとめ

Goの基本構文がわかった後,
サーバサイドをやりたいなら割とオススメ.

ツールの探し方、比較、良し悪しを決める

こんばんは。
新しい分野に挑戦するときのツール、迷いますよね。
最近フロントエンドに触れてみて、本当に日進月歩の世界なんだなと感じたので、
色々とツールを探したんですが、色々と困りました。
その時にどのツールを使うか決める際にしたことをまとめます。

グーグルトレンド

例えば、vue.jsとreact.js、どちらが人気なんでしょう?
ここでは、優れている、優れていないに関わらず、将来性がある方を選択したいものとします。

「vue.js」と「react.js」の比較

なんだかvueのほうが伸びてきていますね。
ここで注意がひとつ。
以下のようにすると結果が変わってしまいます。

「vue」と「react」の比較

なんかもうvue最強に見えますよね。
これでは正しい結果がとれたとは言えません。
正式名称でググトレるように気を付けましょう。

注意事項

人気のあるもの、将来性のあるものが自分にとって常に最善だとは限りません。
もっとも、Webの分野に関しては、ブラウザという環境そのものが変化してしまうのでその通りなのですが…
ツールというものが生き続けそうなものなら、自分に合ったものを探しましょう。
例えば、僕はこんな結果が出ていてもEmacsを使い続けます。
だってVimでしか出来ないことがあるなら、できるようにelispを書けばいいだけだし…

ちなみにEmacsを作ったゴスリング氏はこんなことを言っているそうです。

Known in the development world as the father of Java, Sun Microsystems' vice president and fellow James Gosling has urged coders to stop using the antiquated Emacs text editor and move to a more modern IDE like Sun's own open source NetBeans.

http://www.computerworld.com.au/article/207799/don_t_use_emacs_says_java_father/

要約すると、
Emacs使うのやめてモダンなIDE使えよw NetBeansとかさw
だそうです。
なんかこう、何も言えないですよね。
EmacsUNIXで動く最初のバージョンで実現したのは彼だそうですが、その後のすべてをつくったのが彼というわけではありません。
僕はIDEを使うこともありますが、Emacsをやめることはできなさそうですね。キーバインドEmacsライクにしてるし。
あと、NetBeansとか絶対使いたくないです。

グーグル検索

hoge vs fuga」でググる

「vs」を比較したいものでググります。
こんな日本語英語っぽいのでちゃんと結果でんの?って思いますよね。
stackoverflowなどで普通にネイティブの人が質問したり答えたりしているので大丈夫だと思います。(?)

まとめ

簡単なtipsでした。

  • ググトレ(グーグルトレンド)ろう。
  • フルネームでググトレろう。
  • 適当な英語でググろう。
  • NetBeansは使うな。