2017-10-30

HTC VIVE The Last Sniperがやばい臨場感

HTC VIVE The Last Sniperがやばい臨場感



最近、Steam VRストアにて、The Last Sniperという戦争ゲームを購入しました。Vive買ったからには、シューティングやりたいなーとはずっと思っていて、見つけたのがこの作品でした。


舞台は第二次世界大戦のドイツで、ナチ軍と戦う設定になっています。5つのステージから選べるようになっていますね。


ひとつめのステージは、ノルマンディ上陸作戦で、連合軍側として参加します。パラシュートでヘリから飛び降り、敵陣の防空壕に忍び込み、スナイパーライフルで狙撃します。


右手で構えて、撃ったら左手でリロードするのですが、臨場感がすごいです。たまに敵が半径2mくらいのところにしてしまう時は、もうパニクってリロードを忘れてしまうくらい臨場感があります。


2つめのステージは、ベルリンのビルの上からスナイパーをするステージですが、これもかなり緊張します。うまく壁を使わないと敵に撃たれてしまうので、壁に隠れて狙撃を繰り返します。


3つめのステージは、今度はナチ側に立ってノルマンディ上陸作戦で、海から上陸してくる連合軍を固定機銃で掃討します。これはかなり快感です。景色が浜辺のうみで非常に美しいですね。


4つめのステージが、ぼくの一番のオススメです。建物に一人で引きこもって、次々にやってくる敵をサブマシンガンとショットガンで撃退します。そのステージのみ、武器を二つ持つことができるので、サブマシンガン2丁持って敵を撃退できます。



左手と右手のバランスがすごく難しいのですが、気持ち良さと臨場感マックスです。


最後のステージは、メタルギアっぽい潜入ゲーになっています。サイレンサーがついたハンドガンを持って、敵陣に潜入するという感じです。


ストーリーモードはこんな感じなのですが、他にもスナイパー合戦ができるモード、サバイバルモードがあるのでやり込み要素が強いです。


やってきたゲームの中ではこちらがピカイチなので、ぜひやってみてくださいね。

2017-10-21

【Python】JSON形式のデータをXML形式のデータに変換する

目的


PythonでJSON形式のデータを扱うのが難しいので、XML形式に変換して操作をしたい。
そのため、今回はJSONからXMLに変換する方法をまとめる。

方法


ネットで調べたところ、JSONから直接XMLに変換する方法が見つからなかったため、(1)JSON → DICT、(2)DICT → XMLという順番で変換していく。

JSONからDICT型への変換


そもそもJSONとDICTの違いについては、こちらの記事を参照。ほとんど一緒のようだ。

PythonにおいてのJSONファイルの取扱いあれこれ - Qiita

Pythonで作成した出力結果をまとめるのに便利なJSONファイルの紹介です. 後ほど説明しますが,Pythonのリストや辞書形式をそのまま保存できるため, 入出力用の変換がほとんど必要ありません. また,入出力用のimport jsonが入っているので,別ライブラリのインストールは不要です. まず,リストと辞書のことを知っていないと辛いので,書いておきます. ...


jsonファイルを別に保存しておき、jsonファイルを読み込んだ後に、DICT型に変換するという手順をとる。以下実行コード。


#data.json

{
    "honoka": {
        "BWH": [
            78,
            58,
            82
        ],
        "height": 157
    },
    "eri": {
        "BWH": [
            88,
            60,
            84
        ],
        "height": 162
    },
    "kotori": {
        "BWH": [
            80,
            58,
            80
        ],
        "height": 159
    },
    "umi": {
        "BWH": [
            76,
            58,
            80
        ],
        "height": 159
    },
    "rin": {
        "BWH": [
            75,
            59,
            80
        ],
        "height": 155
    },
    "maki": {
        "BWH": [
            78,
            56,
            83
        ],
        "height": 161
    },
    "nozomi": {
        "BWH": [
            90,
            60,
            82
        ],
        "height": 159
    },
    "hanayo": {
        "BWH": [
            82,
            60,
            83
        ],
        "height": 156
    },
    "niko": {
        "BWH": [
            74,
            57,
            79
        ],
        "height": 154
    }
}

#JSONからDICT型への変換

with open('data.json', 'r') as f:
    json_dict = json.load(f) #json -> dict
    print(json_dict)


DICTからXMLへの変換


DICT型からXMLに変換する場合には、dicttoxmlというパッケージを利用する。pipしてパッケージをインストールする。

dicttoxml 1.7.4 : Python Package Index

Converts a Python dictionary or other native data type into a valid XML string.

$ sudo pip install dicttoxml
Collecting dicttoxml
Installing collected packages: dicttoxml
Successfully installed dicttoxml-1.7.4


それで、DICT型のデータを、XMLに出力する


import json
import dicttoxml

with open('data.json', 'r') as f:
    json_dict = json.load(f) #json -> dict
    print(json_dict)
    xml = dicttoxml.dicttoxml(json_dict)
    print(xml)
 

$ python hoge.py

<?xml version="1.0" encoding="UTF-8" ?><root><niko type="dict"><height type="int">154</height><BWH type="list"><item type="int">74</item><item type="int">57</item><item type="int">79</item></BWH></niko><nozomi type="dict"><height type="int">159</height><BWH type="list"><item type="int">90</item><item type="int">60</item><item type="int">82</item></BWH></nozomi><eri type="dict"><height type="int">162</height>


おまけ Beautiful Soupで見やすくしよう


これだけだとみにくいので、見やすくしたい。xml形式のデータを、beautifulsoupにかませて、soup.prettifyメソッドで整列させる。


#
import json
import dicttoxml
from bs4 import BeautifulSoup

with open('data.json', 'r') as f:
    json_dict = json.load(f) #json -> dict
    #print(json_dict)
    xml = dicttoxml.dicttoxml(json_dict)
    #print(xml)
    soup = BeautifulSoup(xml, "xml")
    print(soup.prettify())

$ python hoge.py

<?xml version="1.0" encoding="utf-8"?>
<root>
 <eri type="dict">
  <height type="int">
   162
  </height>
  <BWH type="list">
   <item type="int">
    88
   </item>
   <item type="int">
    60
   </item>
   <item type="int">
    84
   </item>
  </BWH>
 </eri>
 <kotori type="dict">
  <height type="int">
   159
  </height>
  <BWH type="list">
   <item type="int">
    80
   </item>
   <item type="int">
    58
   </item>
   <item type="int">
    80
   </item>
  </BWH>
 </kotori>
 <umi type="dict">
  <height type="int">
   159
  </height>
  <BWH type="list">
   <item type="int">
    76
   </item>
   <item type="int">
    58
   </item>
   <item type="int">
    80
   </item>
  </BWH>
 </umi>
 <rin type="dict">
  <height type="int">
   155
  </height>
  <BWH type="list">
   <item type="int">
    75

なお、それぞれのデータの取得方法に関しては、こちらを参照。

PythonとBeautiful Soupでスクレイピング - Qiita

Pythonでスクレイピングというネタはすでに世の中にもQiitaにもたくさん溢れていますが、なんとなくpyqueryが使いやすいという情報が多い気がします。個人的にはBeautiful Soupの良さも知ってもらいたいと思うのでここではBeautiful Soupを使っていきたいと思います。 ちなみにこのエントリーはほとんどの部分がBeautiful ...

10年後、障害者が健常者に、健常者が障害者になると思う

なんとなくの直感なんだけど
10年後、障害者が健常者に、健常者が障害者になると思う。


障害は、個人ではなく、社会によって生まれるから、障害者が障害たる理由はきっと社会に起因する。


今の時代は、当たり前のことが当たり前にできる人が、社会的には健常者で、逆に当たり前のことは当たり前にできないけど、ものすごく何かに熱中してしまう人は社会的には障害者だ。


でも、この10年で、その社会がきっとこれからガラッと変わりつつあるのが見えてきた。そして、これからはさらに、当たり前に時間通り会社に定時でついて、当たり前にミスをしない健常者が機械に置き替わり、障害者に変わると思う。機械の方が、当たり前のことを当たり前にやることは長けているから。


逆に、当たり前のことを当たり前にできないけど、異常な執着心や、意味不明なモチベーションを持ってる、今まで障害者と言われる人が、健常者になると思う。


社会が大きく変わると、社会不適合者と、適合者の定義もきっと大きく変わるし、それに応じて「障害」の定義もがらりと変わるのではないかという予想。

2017-10-19

【Python】Google Vision APIで、スクショした表形式の画像データから文字を抽出してみたよん

目的とやりたいこと


PDFとかならいいんですけど、画像データのテーブルを手動で写すのは尋常もなく面倒くさいのでなんとかできないかと考えていました。ほら、例えば雑誌でしか手に入らないテーブルって、切り抜きを手動でエクセルにまとめるぐらいしか方法がないじゃないですか。


だから最終的には、スクショした画像がそのままCSVになるってのがいいんですけど、それがどうやったらできそうかなぁと考えたときに


・画像ファイルから文字を抽出してくれるようなアルゴリズムを書く
・抽出した文字をCSV形式に変換して、保存できるアルゴリズムを書く


という流れが必要だと考えたわけです。そこで、画像ファイルを文字に抽出してくれるのでいい方法がないかなと考えたときに、機械学習で精度を極限まで高めたGoogleのVision APIなんてよさそうだ!と思い、試してみました。ちなみに画像から文字を検知するのはTEXT DETECTIONというらしいです。


今回やりたいこととしては、Pythonを利用して、Google Vision APIで、スクショしたテーブルイメージのテキストを取得するところまでです。校舎の抽出した文字をCSV形式に変換して、保存できるアルゴリズムは今回のスコープ対象外とします。今回はできなかったけど、Python コーディングでCSVにいい感じに変換ってところまでをやりたいです。


Google Vision APIを取得と、実装



とりあえず、下記サイトで、APIの登録方法に従い、無料体験プランに登録してください。そして下記サイトのコードを参考にコードをコピペしました

凄すぎ!Google Cloud Vision APIをつかって簡単高精度にOCR

今回は、Google Cloud Vision APIのOCRを試してみたら精度が良すぎてビビったので、やり方と結果を紹介してみます。 上のリンクにアクセスし、 プロジェクトを作成した上で、


しかし上記サイトのコードがPython2に対応だったので、Python3の場合は以下のページを参考に、適当に修正してください。下記のソースコードを利用して、いい感じにコピペしてください。

[Google Cloud Vision] python 3.5 でリクエストした時のエラー対処 (is not JSON serializable)

以前こちら↓の記事でGoogle Cloud Visionの記事を紹介したのですが、掲載したコードはpython2.7での挙動を確認したものでした。 今回ちょっとした用でpython3.5で動かしてみたところエラーがでて動かなくなってい



実行結果


今回は、こういう短い数字の画像をスクショしてみたところ、いい感じにデータをJSON形式で取得できました。




$ python OCRProject.py
begin request
end request
{
  "responses": [
    {
      "textAnnotations": [
        {
          "locale": "en",
          "description": "o 1 4 6 7 9\n",
          "boundingPoly": {
            "vertices": [
              {
                "x": 12,
                "y": 2
              },
              {
                "x": 160,
                "y": 2
              },
              {
                "x": 160,
                "y": 34
              },
              {
                "x": 12,
                "y": 34
              }
            ]
          }
        },
        {
          "description": "o",
          "boundingPoly": {
            "vertices": [
              {
                "x": 12,
                "y": 2
              },
              {
                "x": 21,
                "y": 2
              },
              {
                "x": 21,
                "y": 34
              },
              {
                "x": 12,
                "y": 34
              }
            ]
          }
        },
        {
          "description": "1",
          "boundingPoly": {
            "vertices": [
              {
                "x": 34,
                "y": 2
              },
              {
                "x": 43,
                "y": 2
              },
              {
                "x": 43,
                "y": 34
              },
              {
                "x": 34,
                "y": 34
              }
            ]
          }
        },

以下、取得したJSONデータの公式リファレンスです。

Text detection samples | Google Cloud Vision API Documentation | Google Cloud Platform

For your convenience, the Cloud Vision API can perform Text detection directly on an image file located in Google Cloud Storage or on the Web without the need to send the contents of the image file in the body of your request.


し、しかし・・・・文字の座標とかいらねんだよ!!
ほしいのはJSONのresponses > textAnnotations > descriptionsの文字列データのみをなんじゃ!さて、困ったものだ!そこで、PythonでDictionary型に変換して、必要なとこだけ取得できるのがよさそうだなぁと考えました。


ということで、


・JSON形式のAPIレスポンスを、Python用に処理しやすいようDictionary型に変換
・Dictionary型から、responses > textAnnotations > descriptionsの文字列データをプリントする


ってことを、適当にググって修正したコードがこちらです。(べたうちビンビン丸)
(image.jpgは、下記の画像です。pythonファイルが存在する同一階層上に存在する適当なファイルでございます。)

http://tmaita77.blogspot.jp/2017/10/blog-post_9.html


#!/usr/bin/python
#coding:utf-8
import base64
import json
from requests import Request, Session
from bs4 import BeautifulSoup

path = "image.JPG"

def recognize_captcha(str_image_path):
        bin_captcha = open(str_image_path, 'rb').read()

        #str_encode_file = base64.b64encode(bin_captcha)
        str_encode_file = base64.b64encode(bin_captcha).decode("utf-8")
       

        str_url = "https://vision.googleapis.com/v1/images:annotate?key="

        str_api_key = "ここにAPI KEYをいれてね!"

        str_headers = {'Content-Type': 'application/json'}

        str_json_data = {
            'requests': [
                {
                    'image': {
                        'content': str_encode_file
                    },
                    'features': [
                        {
                            'type': "TEXT_DETECTION",
                            'maxResults': 10
                        }
                    ]
                }
            ]
        }
       
        print("begin request")
        obj_session = Session()
        obj_request = Request("POST",
                              str_url + str_api_key,
                              data=json.dumps(str_json_data),
                              headers=str_headers
                              )
        obj_prepped = obj_session.prepare_request(obj_request)
        obj_response = obj_session.send(obj_prepped,
                                        verify=True,
                                        timeout=60
                                        )
        print("end request")

        if obj_response.status_code == 200:
            #print (obj_response.text)
            with open('data.json', 'w') as outfile:
                json.dump(obj_response.text, outfile)
            return obj_response.text
        else:
            return "error"

if __name__ == '__main__':
    data = json.loads(recognize_captcha(path))
    data = data["responses"]
    print(data)
    for i in data:
        print(i["fullTextAnnotation"]["text"])


ちょこっと頭を使ったところに関しては、ここの下り。


data = json.loads(recognize_captcha(path))
    data = data["responses"]
    print(data)
    for i in data:
        print(i["fullTextAnnotation"]["text"])


json形式をdictionary形式に変換してdateにぶち込みます。そんで、なんか外側に余計なかっこが存在するので、for分で取っ払います。あとは、先ほどのresponses > fullTextAnnotation>textにアクセスできるように実装しましたんご


で、出力結果がこちら

$python OCRproject.py
>
首都圏の公務員就職率の上位20位
設置




















大学·学部名
日本文化大学·法学部
創価大学·看護学部
東京大学法学部
千葉大学法経学部
千葉大学·園芸学部
首都大学東京·都市環境学部
北里大学·獣医学部生物環境科学科
千葉科学大学危機管理学部
慶應義塾大学·理工学部
お茶の水女子大学·生活科学部
千葉大学·文学部
埼玉大学·工学部
中央大学·法学部
埼玉大学·経済学部(昼間)
日本社会事業大学·社会福祉学部
お茶の水女子大学文教育学部
国際武道大学·体育学部
東京大学·教養学部
東京大学·農学部(獣医学課程以外)
専修大学·法学部(一部)
母数
229
75
294
352
110
95
82
210
573
98
172
160
1188
297
193
170
460
129
74
697
48.9
41.3
31.0
28.1
26.4
26.3
25.6
23.8
23.6
23.5
23.3
22.5
21.5
20.9
19.7
18.2
18.0
17.8
17.6
17.5



いいねぇ、画像にテキストが埋め込まれているわけじゃないのに、きれいに出ました!
文字の出力の精度高すぎ!!さっすが独裁グローバル企業!

課題


出たは出たんだけど、たぶんOCRは縦に列を見て、今度は横の列を見てって処理を行っているみたいなので、へんなふうに改行されてしまいます。これだとちょっとなぁ、確かにいちいちマニュアルでデータを入力する作業コピーしなくても済むけど、エクセルでコピペして列ずらすとかの作業は必要になってしまうなぁと思いました。


解決された領域はこんな感じです。

・データを手動で入力 →〇
・ファイルの整理 → △
・CSV出力 → ×


今度は、この取得したデータをもとに、いい感じにデータを整理して、CSVファイルに落とし込む方法を模索してみたいと思います。おそらくやり方は二つあって、


・Google Vision APIで行で処理してくれる方法を探す
・全要素数と列数から、一列あたりの要素数を特定し、その値をどんどん列に追加していく


前者は、ここの要素に座標が付随されているので、同一列のものをグルーピングしていく方法が考えられます。


後者は、全要素数を3でわって、その列の最後の数まで列に値を追加、次にその次の列に値を追加、というのをfor文回してあげればできるんじゃないかなぁと考えていますが、それだと引数に列数を指定したり、ユーザビリティが落ちそうですね。


とりあえず、いろいろ考えてみます。うんこ!

2017-10-14

ヨッピーの「明日クビになっても大丈夫」って本が死ぬほど面白かったのでまとめてみた



こんにちは、DAIです。最近は2chのひろゆき氏や、哲学者の中島義道氏、Webライターのヨッピー氏など、ちょっと社会的に不適合そうだけど、めっちゃくちゃ面白い人の書籍を読み漁っています笑



今回は、Webライターのヨッピーさんが9月12日に出版した本をネットで見つけ、「あ!市長とシムシティやってたおっさんだ!面白そうw」と思い、この書籍をKindleでポチりました。タイトルは「明日クビになっても大丈夫!」という、相変わらずふざけたタイトルですが、面白そうなので買ってしまいました笑



明日クビになっても大丈夫!
ヨッピー
幻冬舎 (2017-09-21)
売り上げランキング: 933

普段ヨッピーさんが書いている記事は死ぬほど面白いです。例えば、

>市長って本当にシムシティが上手いの? 千葉市長とガチンコ勝負してみた
とか、
> エロいとはげるって本当?実際に調査してみた

とか。今回書いていることは結構まじめなことが多くて、普通にビジネス書としてもかなり面白かったので、特に面白かったところをまとめてみます。ちなみに広告とか、ライターの人とか、フリーランスやりたい人にはぜひおすすめの書籍です!


目次


・生産する趣味と消費する趣味の違い
・大事なのは世の中にアウトプットし続けること
・情報は発信する場所に集まる
・会社を辞めてもいい三つの条件  
・儲かりそうな椅子の探し方:プラスワン戦略の勧め
・広さ×深さ×距離感の法則


>スポンサーリンク


2017-10-12

【News Picks集客】いつ記事を投稿したらより読んでもらえるのか計測してみた

News Picksで自分が選んだ記事を投稿することができます。「この記事について多くの人の意見を聞いてみたい!」という方も多いのではないでしょうか。


そこで、今回はNews Picksにいつ投稿したら、その記事がより読んでもらえるのか検証してみました


2017-10-10

教育が好きな人におすすめの本16選!教育 × 心理学・社会学・経済学・テクノロジー・思想系

教育に興味がある人におすすめの書籍を紹介するよ!


こにゃにゃちは、Daiです。私実は大の教育オタクでして、大学生の時は塾講師やったり、教育ITベンチャーで働いたり、放課後支援ボランティア、卒論は教育社会学やってたりと、本当に教育しかやってこなかったんですよね。まあそうなりゃ教育系の本を100冊以上読んできた訳です。


で、今回は特に面白かった教育関係のおすすめな本を紹介してみます。一応読者の想定は教育学関係のことに興味ある大学生や社会人向けですね!


目次


  • 教育 X 社会学・経済学
    • 1. 教室内(スクール)カースト (光文社新書) 【Kindle版あり】
    • 2. 保育園義務教育化 【Kindle版あり】
    • 3. 学力と階層 【Kindle版あり】
    • 4. データで読む 教育の論点
    • 5. 教育の社会学 新版- 〈常識〉の問い方,見直し方 (有斐閣アルマ)
    • 6. 「学力」の経済学 【Kindle版あり】
    • 7. 幼児教育の経済学 【Kindle版あり】
  • 教育 X 心理学
    • 8. やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける 【Kindle版あり】
    • 9. モチベーション3.0 【Kindle版あり】
    • 10. やさしい教育心理学 第4版 (有斐閣アルマ)
  • 教育 X テクノロジー
    • 11. 世界はひとつの教室 「学び×テクノロジー」が起こすイノベーション 【Kindle版あり】
    • 12. 予備校なんてぶっ潰そうぜ 【Kindle版あり】
    • 13. 教育×破壊的イノベーション~教育現場を抜本的に変革する
  • 教育 X 思想
    • 14. 学校と社会 (岩波文庫)
    • 15. グーグル、ディズニーよりも働きたい「教室」
    • 16. 下流志向
  • 個人的におすすめな教育書籍トップ3

大学生におすすめ!一人で引きこもってできるお金がかからない趣味5選



大学生になると、相当フリーな時間ができて、暇になりなりますよね。僕は大学1年生の夏休み、あまりにも暇すぎて一人でドラクエをやっていたら夏休みが終わっていました。「もったいねぇな時間」と思いながら、趣味を見つけられなくて困った記憶があります。


大学生活の4年間で一人でできる最高に楽しい趣味を見つけてしまい、完全に引きこもり型になった私ですが、僕が心からおすすめできるお金のかからない趣味を5つ紹介したいと思います。


2017-10-09

Googleの検索結果が上位になると、クリック率が何パーセント上がるのか調べてみた

題名の通り。SEO対策では、検索ボリュームの大きいページのページ順位を上げて、クリック率(CTR)を上げていく。今回気になったのは、「ページ順位が1あがると、クリック率がいくつ上がるか」という疑問だ。






そこで、今回は僕が運営するReview of My Lifeというブログの検索データを、Google Consoleから取得し、ページ連載順位から、CTRを予測する統計分析してみた。


データセットは、僕の過去の1カ月分の検索履歴データだ。そして、その中で以下の処理を行った。

  • 月間の検索数が100未満のものを削除
  • ページランクが10位以上のものは削除

もととなるデータセットは、469個のデータが存在したが、上記2通りの処理を行い、49個のデータになってしまったが、今回はこのデータで分析してみる。


【Python】Pandasチュートリアル - CSVの読み書き:データの表示・追加・編集・削除を行う -

PythonのPandasを利用して、CSVの読み込みや、データの追加・削除・編集などを行い、CSVの書き込みまでできる方法を解説します。また、特に頻出のメソッドと、そのメソッドの説明についてもやっていきたいと思います。


目次



  • Pandasが扱うオブジェクトとは? Dataframe型とSeries型の違い
  • データフレームを作成する
  • データシリーズを作成する
  • データフレームにデータシリーズを代入する
  • CSVデータを読み込む
  • データを眺める
  • 条件が合致するデータを取得データを消去する
  • 列を並び替える
  • データをコピーする(バックアップ用)
  • 特定の行の値を含む行を検索する
  • 特定の列の順番をつける
  • データのクリーニング




Amazonプライムも、Kindle Unlimitedも、無料で1カ月体験できるらしい!

Amazon Prime Readingとは何ぞや?



Amazonがつい最近、電子書籍読み放題サービス「Prime Reading」をリリースしました。

アマゾンジャパン(Amazon.co.jp)は10月5日、「Amazonプライム」会員が利用できる電子書籍の読み放題サービス「Prime Reading」を開始した。追加料金なしでマンガ、小説、ビジネス書、雑誌などが閲覧可能になる。

Amazon、電子書籍読み放題「Prime Reading」開始 (ITmedia ビジネスオンライン)

アマゾンジャパンが、「Amazonプライム」会員向けの電子書籍読み放題サービス「Prime Reading」を開始した。


あれ?Amazonって以前にKindle Unlimitedという同様の電子書籍読み放題サービスもやってたよね?」と思いまして、そうするとPrime Readingとはなんぞや?という話になります。そこで今回は、Prime ReadingとKindle Unlimitedの違いについて解説し、どちらのサービスがよいのかを見ていきたいと思います。


2017-10-08

【Python】Webスクレイピングチュートリアル -「次へ」ボタンが存在するページをすべて取得する場合 -

PythonのSeleniumを利用して、「次へ」ボタンが存在するページをすべて取得する方法を解説します。

目次

  • 挙動を確認する
  • 日本語でアルゴリズムを考える
  • 実装する
  • サンプルコード

2017-10-07

【Python】Webスクレイピングチュートリアル -ログインが必要なサイトの場合-



PythonのSeleniumを利用して、ログインが必要なサイトにアクセスし、データを取得する方法を解説します。

目次


  • はてなブックマークにログインしてみる
  • ログインページに移動する
  • ログインページのフォームのid, class, もしくはxpathを取得
  • データの挿入
  • フォームの送信
  • ログイン移動確認


はてなブックマークにログインしてみる

まず、はてなブックマークのログインページにアクセスしますと、このような画面になっています。



処理の流れとしては、こちらに

  • 自分のメールアドレスを入力
  • パスワードを入力
  • 送信ボタンをクリックする

というのを、Webスクレイピングで実行します。さらにログイン後自分のプロフィールアドレスに行き、自分のアカウント情報が取得できるかどうか確認します。
もしログインしていない状態で、そのページに行くと、ログインページに移動されます。ちゃんとログインできていると、プロフィールページに移動されます。それでは、実際にやってみましょう。


ログインページに移動する::browser.get(url)


まず最初に、seleniumをimportします。

from selenium import webdriver

次に、webdriverという仮想のブラウザを呼び出します。
browser = webdriver.PhantomJS()
ログイン先のURLをセットします。

loginUrl= "https://www.hatena.ne.jp/login"
 そして、そのページにWebdriverをアクセスさせます。

browser.get(loginUrl)

次に、自分のメールアドレスと、パスワードを入力します。

username = "あなたのメールアドレス"
password = "あなたのパスワード"

ログインページのフォームのid, class, もしくはxpathを取得::find_element_by_xpath()


で、今度はそのユーザー名と、パスワードを入力するところを指定する必要があるので、再度ログインページへアクセスし、F12ボタンを押します。そうするとこんな画面になると思います。




あとは、下のGIFのように、各値のclass、もしくはidを取得するか、xpathを取得してください。今回の場合は、xpathを取得します。



取得したユーザー名のXpathは、//*[@id='login-name']だったので、このように場所を指定してあげます。

userNameField = browser.find_element_by_xpath("//*[@id='login-name']")

データの挿入::send_keys()


そして、そのuserNameFieldに、usernameを入れてあげます。

userFameField.send_keys(username) 

同様にパスワードもですね。

passwordField = browser.find_element_by_xpath("//*[@id='container']/div/form/div/div[2]/div/input")
passwordField.send_keys(password)

フォームの送信::click()


これで値が入るので、「送信する」ボタンのXpathを取得します。

submitButton = browser.find_element_by_class_name("submit-button")
submitButton.click()

ログイン移動確認::browser.title


これで、ログインが完了されるはずです。ログインが完了されていれば、プロフィールページに移動すると、自分のユーザー名が表示されたページに移動するはずです。

profile = "profile.hatena.ne.jp"
browser.get(profile)
そして、このページのタイトルを表示します。
browser.title

これで自分のユーザー名が入ったページが表示されれば、成功です。おめでとうございます!最終的には、以下のようなコードとなります。

from selenium import webdriver
browser = webdriver.PhantomJS()

loginUrl= "https://www.hatena.ne.jp/login"
browser.get(loginUrl)

username = "あなたのメールアドレス"
password = "あなたのパスワード"

userNameField = browser.find_element_by_xpath("//*[@id='login-name']")
userFameField.send_keys(username)

passwordField = browser.find_element_by_xpath("//*[@id='container']/div/form/div/div[2]/div/input")
passwordField.send_keys(password)

submitButton = browser.find_element_by_class_name("submit-button")
submitButton.click()

profile = "profile.hatena.ne.jp"
browser.get(profile)

browser.title

最後に

ここまでで、よくわからなかった場合は、以下のチュートリアルにそって進めてみてくださいね!


Python データ分析入門マニュアル - 実例を使ってWebスクレイピングからデータビジュアライゼーションまでやってみよう -

Python データアナリティクス入門マニュアル Webスクレイピングを、プログラミングを学んだことのない人向けに0から解説するマニュアルです。何から学ぶべきか、環境構築はどうするかからはじまって、Webスクレイピング、データの前処理、そしてデータビジュアライゼーションまでを丁寧に解説します。 ...

また、PythonのSeleniumのドキュメンテーションには、さらに便利なメソッドが存在するので、見てみてくださいね!


Selenium with Python - Selenium Python Bindings 2 documentation

This is not an official documentation. If you would like to contribute to this documentation, you can fork this project in Github and send pull requests. You can also send your feedback to my email: baiju.m.mail AT gmail DOT com. So far around 40 community members have contributed to this project (See the closed pull requests).

Python データ分析入門マニュアルに戻る

Python データ分析入門マニュアル - 実例を使ってWebスクレイピングからデータビジュアライゼーションまでやってみよう -

Python データ分析入門マニュアル 



Webスクレイピングからデータビジュアライゼーションを、プログラミングを学んだことのない人向けに0から解説するマニュアルです。何から学ぶべきか、環境構築はどうするかからはじまって、Webスクレイピング、データの前処理、そしてデータビジュアライゼーションまでを丁寧に解説します。
すべてのカリキュラムが一カ月で終わるようにしています。過去記事にまとめてあるので、それを順に追って行ってもらう形になります。

目次

  • 基礎的な統計の知識をつけよう(0-2日)
  • プログラミングの基礎を学ぼう:HTML・CSS・Javascirpt・Python (10日)
  • Cloud9をセットアップしよう(Seleniumと定期実行環境の設定) (2日)
  • Cloud9とJupiterNotebookで、Webスクレイピングとデータ分析をしてみよう (5日)
  • PythonでAPIを利用しよう(3日)
  • Botを作ろう(3日)
  • 実際にAPIやWebスクレイピングを利用しデータ分析をやってみよう(5日)


Pandas データの前処理で使えるチートシート

Pandasでデータのクリーニングをするためのチートシートを作ってみた


PandasJupiter Notebookを使ってデータ分析をする機会が増えてきましたが、その際やっているデータの前処理がだいたい一緒だと気づきました。そこで、データのクリーニングでよく使うメソッドを、一覧形式でまとめておきたいと思います。なお、グーグル検索で英語で検索されることも多いため、英語でも記述します。

前提


  • COBOL.csvが存在
  • 列には、以下の値が入っている
    • workers:従業員数:ex 13名
    • age:従業員平均年齢:ex 31歳
    • income:年収: ex 400万 ~ 600万円
    • establishment:創立年度:ex 1998年03月32日
    • requirement:必要要件
    • title:求人のタイトル名



COBOLで転職活動したらどうなりますのん? COBOLer転職市場を分析してみた




どうも、新卒エンジニアのDAIです。ここ最近、趣味で2chのひろゆきさんの番組を見ていたのですが、COBOLという言語に興味を持ちまして。気になって調べてみたところですね、


- COBOL(コボル)は、1959年に事務処理用に開発されたプログラミング言語である。名前は「Common Business Oriented Language」(共通事務処理用言語)に由来する。(wikipedia)
- 世界で稼働しているシステムの過半数は、COBOLで構築されている」
- 現在でもライフラインを支えるような重要なシステムでは、メインフレームが使われ、主にCOBOLが使われている
- 普通は浮動小数点数になるからそこで誤差が生じるけど、COBOLは10進演算で行うことと言語仕様で決まっている(Togetter


(ほええ、おいらもCOBOLにお世話になっているのか!)


そんで、ひろゆき氏が言ってて面白かったんですけど、こんなこと言ってました。


「COBOLは昔の言語なんですけど、銀行とかお堅いシステムは現役でCOBOLが活躍していて、若手がCOBOLを書きたがらないので、市場価値が相対的に高くなるみたいです。おすすめしないけど稼げる言語って聞いたことありますね」


そこで思ったんですね。「あれ、もしかして新卒COBOLプログラマーって、実はめっちゃ稼げるんでねぇか?Pythonとかイケイケ言語書いている場合ではないのではない!転職わんちゃん!」と。そこで、今回はCOBOLの転職市場について、データ分析してみました。


2017-10-06

Python初心者が3カ月でWebスクレイピングができるようになるために必要な知識




こんにちは、Daiです。最近Pythonが人気ですが、機械学習には手を出せない、とはいえプログラミングの挨拶プログラムを作るのには飽きた!みたいな人って結構多いのでじゃないでしょうか。


最近、Qiitaという技術掲示板でも、PythonのWebスクレイピングの方法を解説する記事が人気でしたが、まったくの初心者にはどうすればいいかわからないというレベル間だったと思います。そこで、今回はプログラミング初心者の人でも、何を学べばWebスクレイピングをPythonでできるようになるか、解説したいと思います。


Pythonの環境構築でもう悩まない!初心者でも絶対にできるクラウドを使った環境構築方法!


Pythonの環境構築がだれでも簡単にできるようになる方法



Python初心者が必ずぶち当たる壁があります。環境構築です。ある言語を動かすための環境設定する作業が環境構築なのですが、これが実は初心者にとって本当に難しいです。


僕は、3年前にPHPフレームワークLaravelで環境構築の壁にぶち当たり、2年間プログラミングアレルギーになってしまいました。しかし、1年前に、ある方法を使って「環境構築せずに」RubyフレームワークのRuby on Railsに手を出したところ、かなりハマりました。


中級者でも、環境構築でつまづくことも多々あります。それなのに、せっかくのデータサイエンスブームで、Pythonを触ってみたいという人が増えているのにもかかわらず、多くの人が「環境構築の壁」を超えられないのは、勿体無いと思います。


そこで、今回は、一切環境構築せずに、完全無料でPythonを動かす方法を解説したいと思います。


ICU生なのに国連に行けなかったから負け犬どもへ


どうも、有吉の夜会にICUが特集されたらしい。どうやら、弊大学の在学生は、国連に行くらしい。あぁ、ごめんね、お母さん。僕はアンダーグラウンドに行ってしまったようだ。


そういえば、先日、大学のクラスメイトと飲み会があった。僕のクラスメイトは、何と言っても理解し難いクズが多かった。英語の授業中、外国人の先生にエッセイの添削中「君、何のために大学来てるの?」と人生の添削されるやつ。卒論のテーマが決められずに中退した奴。卒業前から音信不通になる奴( ×3)。院進学後つまらなくて2ヶ月でバックれた奴。部活史上初めて「除籍」された奴。卒論指導で卒業2ヶ月前に卒業は怪しいと言われた奴などだ。この中で、国連の才能がある人はいないだろう。


でもクズはクズなりに、不適合な奴でも、社会のどっかの片隅で、適合者とは離れたアンダーグラウンドで生きてるみたいだ。院進学バックれマンは秋葉のサブカル翻訳者、そして卒論かけないマンは自衛隊、その他訳わからんベンチャー入った奴、経営傾き系系ベンチャーにいった奴。極めつけに特にヤバいのが、哲学科のマスターに行った奴だ。


そんな畜生どもも、人生なんとかやってきている。国連だ?うるせぇ。僕らは畜生なりにアンダーグラウンドで生きているんだ。国連に行けなかったICU生は、AKBみたいにマス受けはしないけど、地下アイドルみたいに生きていこう、そう思った金曜日でした。

2017-10-05

ぶっちゃけ、日本で廃れているプログラミング言語ってなんなの?

背景


こんにちは、DAIです。ここ最近こんな記事を見かけまして、これって日本だとどうなんだろうなぁと思いました。

Pythonが2017年の覇権言語に - Rubyは12位に転落

IEEE Spectrumは18日、独自の指標によって決定した人気プログラミング言語のランキング「 The Top Programming Languages 2017」を発表しました( Neowin)。 ...

このプログラミング言語の人気ランキングは、世界規模のものが多いですが、日本の環境はどうなのでしょうか。ちなみにGoogleトレンドで、各言語の検索数を見てみるとWeb言語は、PHPが減少、Pythonが上昇しているみたいですね。







しかし、ガラパゴス日本ではそうとは限らないかもしれません。海外と日本の言語事情は異なることも予想されます。実際に日本人に注目されている言語の注目度を分析してみようと思います。


目的



  • 日本の各プログラミング言語の人気度と、最近のホットなテーマを解明
  • 時系列で人気上昇中の言語と、すたれている言語を特定


人気度の尺度


今回は、技術界隈で人気のあるはてなブックマークというサービスで、記事へのブックマーク数が高いものを取得し、言語ごとに比較することにします。ある言語で検索しているときの、はてなブックマークされている数の大きさ(平均値)を人気度として取り扱います。

比較する言語


- この記事を参考に言語を選択しました。
- 以下、言語とそのリリース日

言語 リリース
Perl 1987
Python 1991
PHP 1995
Ruby 1995
Java 1995
Javascript:1995年 1995
R 1996
Scala 2003
Go 2009
Swift 2014


プログラミング言語の人気 - Qiita

日本でプログラミング言語を勉強し,書く上でQiitaに触れる機会は多い. たくさんのご指摘を頂いたので記事を少し修正した.まず 人気=記事数 の方程式は確かに成立しないあくまでの学習の参考文献などが多く学びやすいなどの解釈で,プログラミング言語学習の参考にして欲しいと思う. 日本のトレンド言語ランキング ...


データソースと手段



  • 過去10年分のはてなブックマークの言語ごとの検索結果から取得(2007~2017)
  • Webスクレイピングを利用し、CSV変換、かつPandasでデータ操作し、データビジュアライゼーションを実施、くわしくは下記記事を参照
  • 取得したデータは、(1)記事名、(2)日付、(3)ブックマーク数
  • それぞれの年度ごとにブックマーク数の平均値を取得

データ取得にかんしては、こちらの記事をご参考に・・・

【Python】スクレイピング→データ収集→整形→分析までの流れを初心者向けにまとめておく ~Pythonに関するはてな記事を10年分スクレイピングし、Pythonトレンド分析を実際にやってみた~

この数年間、Pythonの人気が高まっています。 Googleトレンド によると、Pythonの検索流入数は、この10年間で2倍近くになりました。特にグラフから見ると、だいたい2015年ぐらいからPythonの検索数は増えている模様です。 さて、この数年間で、Pythonがどのような言語として扱われ、どう変化してきたののでしょうか。 ...


結果報告


Javascriptの人気度


フロントエンド・バックエンドフレームワークとして使われるJavascriptは、今でもかなり人気なようです。以下主な結果です

  • 過去10年間、人気は上がり続けている
  • 2017年でブックマーク数が多いのは、バックエンドよりフロントエンドよりの内容
  • 初心者向けの記事も多数


人気記事は、フロントエンドよりの初心者向け解説記事が多いようですね。

Out[15]:

title date bookmarks
2 まじな話をすると、N予備校のプログラミング入門コースやるのがオススメ... 2017/09/11 3592.0
67 2017年のフロントエンドエンジニアならこの程度は知ってて当然だよな? ... 2017/02/14 1292.0
78 Modern JavaScript概観、そしてElectronへ 2017/01/23 1285.0
23 10年遅れたJavaScriptの知識をざっくり10分でアップデートしよう - WPJ 2017/06/16 1160.0
45 JavaScript,jQueryの爆速コーディング、デバッグ方法論の勧め~実践向け... 2017/03/30 1114.0
62 JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io 2017/03/02 704.0
10 JavaScriptフレームワーク選定の議論 - Qiita 2017/08/02 693.0
16 フロントエンド開発の基本知識(2017年夏) - Qiita 2017/07/11 684.0
33 いかにしてJavaScriptを教えるか - mizchi's blog 2017/05/04 677.0
17 2017年JavaScriptのテスト概論 | プログラミング | POSTD 2017/07/11 602.0



Pythonの人気度

  • 2015年から人気が急上昇
  • 2017年でブックマーク数が多いのは、スクレイピング・機械学習等のデータサイエンスよりの分野
  • 初心者向けの記事も多数





Out[16]:

title date bookmarks
36 PythonでWebスクレイピングする時の知見をまとめておく - Stimulator 2017/06/25 1831.0
87 初心者がPythonを覚える為の本の選び方を体系化してみた(2017版) - Lean... 2017/01/15 1336.0
48 ディープラーニング実践入門 〜 Kerasライブラリで画像認識をはじめよう... 2017/04/28 1026.0
1 Pythonを書き始める前に見るべきTips - Qiita 2017/09/28 973.0
8 pythonで小さなツールを作る時のtips - Qiita 2017/09/04 931.0
29 KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素... 2017/07/15 879.0
74 Pythonをやるときに参考になりそうな情報 - のんびりSEの議事録 2017/02/16 815.0
55 Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR... 2017/03/29 749.0
33 100万倍速いプログラムを書く - Qiita 2017/07/07 546.0
73 金融データのPythonでの扱い方 - 今日も窓辺でプログラム 2017/02/19 532.0

 Rubyの人気度

  • 2011年をピークに、人気度は一定
  • 2017年度はWeb系のフレームワーク関係の記事が多い



Out[17]:

title date bookmarks
12 KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素... 2017/07/15 879.0
18 Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、... 2017/05/25 839.0
20 Ruby書いたことないけどRuby書いた人の講演に行った - みたぬメモ 2017/05/21 508.0
7 Rubyist Magazine - HanamiはRubyの救世主(メシア)となるか、愚か... 2017/08/27 404.0
10 Rubyの死?開発者はどの言語を学ぶべきか? 2017/08/10 388.0
2 Rubyのtrueとfalseの話 - Qiita 2017/09/27 387.0
23 Ruby on Railsチュートリアルを軸にしてWeb周辺技術を勉強した - drilld... 2017/05/13 282.0
11 Awesome Ruby : 素晴しい Ruby のライブラリ・ツール・フレームワーク・... 2017/07/24 276.0
33 インタビュー:Rubyコミッターの笹田氏がクックパッドへの入社を決めた... 2017/01/24 163.0
31 最近のruby-core (2017年1月) | Money Forward Enginee... 2017/02/01 134.0


R言語の人気度


  • 2010年ごろに爆発的に人気が出始める(おそらくビッグデータブームの到来?)
  • ここ最近は下火
  • 初心者向けのR入門記事が人気な模様


title date bookmarks
36 Rを使えるようになるための10のこと - Issei’s Analysis ~おとうさん... 2011/09/17 611.0
39 第1回 Rは統計解析のブッシュナイフだ - 実践! Rで学ぶ統計解析の基礎 ... 2010/07/21 579.0
10 R vs Python:データ解析を比較 | プログラミング | POSTD 2015/10/28 509.0
35 Rが使えるフリをするための14の知識: ニュースの社会科学的な裏側 2012/02/04 466.0
5 R言語徹底解説を読む (1) ようこそRプログラミング - 僕らはRを愛しすぎ... 2016/07/10 398.0
14 A/B テストで施策の効果を検証!エンジニアのための R 入門 - クックパ... 2015/05/08 319.0
13 統計を始めたい人に僕がPythonよりRを勧める理由 - 蛍光ペンの交差点[... 2015/06/11 314.0
29 はてなブックマーク記事のレコメンドシステムを作成 Pythonによるはて... 2013/07/07 309.0
28 非エンジニアにもオススメ。数学が苦手な統計初心者がR言語を触ってみる... 2013/07/19 303.0
31 R統計解析入門: 統計解析 テクニカルデータプレゼンテーション  梶山... 2013/05/02 268.0


PHPの人気度

  • 2012年をピークに、人気低下中
  • 2017年度はウェブ開発系の記事が多数
  • PHPディスリの記事が増えてきている・・・?



Out[18]:

title date bookmarks
1 休日個人開発で学ぶテストコード! 画像に“集中線”を合成するツールを... 2017/08/22 472.0
2 PHPでデータベースに接続するときのまとめ - Qiita 2017/07/15 350.0
8 PHP - 【PHP】作成したメールフォームに脆弱性がないか、アドバイスもら... 2017/04/09 282.0
3 グーペのPHPバージョンを5.2から7.1にアップグレードしました - ペパボ... 2017/06/22 196.0
5 PHPができても他言語の学習には役に立たない理由を考えてみた。 - Qiita 2017/05/08 96.0
10 Trello のクローンを PHP で作りました - Qiita 2017/01/25 90.0
6 速習PHP最速マスター、初心者に優しい実用的で本よりも濃い内容にしてみ... 2017/04/22 73.0
11 PHPの中身をgdbで観察できるようなDockerイメージを作りました - hnwの... 2017/01/14 68.0
9 PHP CS Fixer v2 でもっと快適PHPライフ - Flog Splash 2017/03/31 61.0
7 $PHP = 💩; – Fuzz – Medium 2017/04/13 58.0


 Perlの人気度

  • 2013年をピークに人気低下中
  • 2017年には、Perl関係の記事で50ブックマークを超えたのは3記事のみ



Out[19]:

title date bookmarks
2 Perlで人工知能プログラミングを行うAI::MXNetの出来が凄そうだ - Perl... 2017/07/13 106.0
1 googleのエンジニアが書いたPerlの入門記事を紹介してほしいと依頼され... 2017/07/18 94.0
3 Perlが30倍速くなるかもしれないSPVMの開発版をリリースしました。 - Pe... 2017/06/20 91.0


Javaの人気度


  • まだ比較的人気かなぁ






Scalaの人気度

  • 2011年度に初めて姿を現し、それ以降人気上昇中
  • 2017年度には5記事しか存在しない
  • 初心者向け記事が存在するので、一部のプログラミング上級者が利用している?




Out[20]:

title date bookmarks
1 Scalaに関する誤解と事実を語る - kmizuの日記 2017/05/06 344.0
4 TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記 2017/03/22 193.0
3 Scala入門としてCLIツールを作り、Scala.js, React, ScalaCSSで... 2017/04/07 86.0
2 Dottyによる変更点と使い方 - 水底 2017/04/30 55.0
5 PythonでScalaのようなlambda式を書いてみた。 - ABEJA Tech Blog 2017/01/19 50.0


Go言語の人気度

  • 2010年に現れ、2013年ごろから人気上昇中
  • 2017年の時点では、初心者向け記事はそんなにはやっていない



Out[21]:

title date bookmarks
12 Raspberry PiとGo言語でミニトマトの栽培環境を監視してLINE Botで通知... 2017/07/14 604.0
50 なぜGo言語(golang)はよい言語なのか・Goでプログラムを書くべきなのか 2017/01/16 602.0
28 Go言語のリアルタイムGC 理論と実践 | プログラミング | POSTD 2017/04/27 407.0
26 Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」 2017/06/02 371.0
10 A Tour of Goを終えたあなたにおすすめのGoを勉強するためのリソース - ... 2017/07/21 310.0
49 Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」 2017/01/25 308.0
27 GolangでSlack Interactive Messageを使ったBotを書く - M... 2017/05/23 306.0
4 PHP, Python, Golang を NGINX Unit で動かしてみた - /va... 2017/09/08 282.0
3 Go にジェネリクスがなくても構わない人たちに対する批判について - met... 2017/09/19 261.0
37 Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017... 2017/03/27 232.0


Swift

  • 2014年に言語がリリースされたので、観測されるのは2014年から
  • ブックマーク数は上昇中
  • 入門系の記事が存在する




Out[22]:

title date bookmarks
5 Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、... 2017/05/25 876.0
14 「Google丸投げ」でiOSアプリ開発が恐ろしくラクになる!Firebaseの使い... 2017/02/01 657.0
17 Swiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい - Qiita 2017/01/14 490.0
15 大規模アプリケーションのリファクタリング - Instagramのフィードを書... 2017/01/19 291.0
2 CotEditor を Swift に移行する - Qiita 2017/07/23 275.0
3 2017年の夏、Swiftをどうやって学ぶか - Hatena Developer Blog 2017/06/22 107.0
4 Swiftの開発者が、わずか6ヶ月でTeslaを去る | TechCrunch Japan 2017/06/21 102.0
8 新しいアプリを作るときによく使うSwift Extension集 - VASILY DEVE... 2017/03/07 75.0
12 Swift 3 マイグレーション - クックパッド開発者ブログ 2017/02/03 73.0
6 体系的なSwift言語学習 - Qiita 2017/05/10 72.0


まとめ


というわけで、途中は説明が面倒くさくなってしまい、はしょりましたが、ざっとこんな感じになりました。
  • 20世紀に開発された言語で、いまだ人気が上昇しているのはPython(1991)、Javascript(1995)
  • それ以外でも、Java(1995),Ruby(1995)あたりはまだ人気
  • PHP(1995)、Perl(1987)は死にかけ

これらのデータをもとに、人気度・新しさで2軸のマトリックスにわけたものがこちらです。


20世紀末に作られてからずっと人気があるのはPython・Java・Javascriptみたいです。Scala、Go,Swiftはこれからどうなるんでしょうか。気になるところです。ちなみにCobolのブックマーク記事を探したところありませんでした。


とりあえずミーハーな私は、Python、Java、Rubyあたりを勉強しておきます。

2017-10-01

【Python】スクレイピング→データ収集→整形→分析までの流れを初心者向けにまとめておく ~Pythonに関するはてな記事を10年分スクレイピングし、Pythonトレンド分析を実際にやってみた~




この数年間、Pythonの人気が高まっています。Googleトレンドによると、Pythonの検索流入数は、この10年間で2倍近くになりました。特にグラフから見ると、だいたい2015年ぐらいからPythonの検索数は増えている模様です。




さて、この数年間で、Pythonがどのような言語として扱われ、どう変化してきたののでしょうか。Webスクレイピング→データ収集→整形→分析を行い、今回は、2006年度から2017年度までのはてなブックマーク上のPython記事で、50ブックマーク以上の記事をすべて取得することによって、時代によってブックマークされやすいPython記事を分析してみようと思います。


そのためには、(1)データの取得と(2)データの分析、そして最終的に(3)結果のレポートにわけて、分析を進めていきたいと思います。


目次



  • データ分析のケース
  • 環境
  • 1. データの収集: SeleniumとPandasでスクレイピング結果をCSVに書き込もう!
  • 2. データを分析しよう: Jupiter NotebookとPandasで対話的な分析!
  • 3. データ分析結果をレポートする
  • 4. 最後に



9月のブログ運営報告 結果と記事のまとめ

今月のブログ運営結果


  • 収益:合計8164
    • Adsense収益:6614円
    • Amazon収益:1550円
  • PV数:23297PV

でした。検索流入は順調に上がってきています。先月より+2000PV近く上がっています。トレンドによる流入であれば意味がありませんが、来月には検索流入で15000PVまで行けたらうれしいです。




日本のおっさんのLBGTに対する理解度が後進国並みな件について



久しぶりにニュースみてむかついたので、書いてしまいます。保毛尾田保毛男の案件の世評見てて、日本後進国だなぁと感じてしまいました。フジテレビの謝罪文が、おっさんの本音を象徴しているような気がします。



抗議を受けたフジテレビの宮内社長は、記者会見で「これは30週年スペシャルで、30年間で作り出してきた色々なキャラクターで展開をしたわけですが、もしその時代が違っていて、不快な面をお持ちになった方がいたことは、テレビ局としては大変遺憾なこと。謝罪をしないといけない」と述べ、陳謝した。

もしその時代が違っていて、不快な面をお持ちになった方がいたことは、テレビ局としては大変遺憾なこと。謝罪をしないといけない


なんか、そうじゃないんだよなぁ感がぬぐえないです・・・・

おっさんのLBGTに対する反論が的外れすぎる件


この件に関する記事を見てて、いろいろなコメント欄を見てると、40-50代のFacebookユーザーのおっさんが多数。もう意味不明すぎます。名前が出てしまうので、出典は書きません。気になったらググって見つけてください。

保毛尾田保毛男と言うキャラクターを楽しんでいるだけ、性的マイノリティーを笑ってしまおうなんて意図じゃない。知ったようなこと勝手に言うなと思われるかな?意図は無くてもデリケートな問題をバラエティーのネタにするなと。一緒になって笑ってしまえば、とはいかない時代か。何かと叩かれ続けるフジだけど、今回ばかりは同情するわ。
「あんな時代もあったねと…」これは中島みゆきの『時代』の歌詞の一部である。今回のもソレなのではないか?今はLGBT(のGこと、ゲイ)という言い方が一般化され、この記事にあるようなドラマも多く存在するが、20年だか30年前は「ホモだホモだ」でウケた時代であった。そんな暗黒時代が終わってよかったね。と。今だけしか知らない人(若者)にとっては、昔(生まれる前・生まれた頃の話)もしないと、今がどれだけいい時代かなんてわからないんじゃないの?そういう意味ではこの放送も価値があったのでは?


フジテレビの謝罪もそうですけど、こういうコメントを読んでると、本音として

  • 昔はLGBTネタやっても傷づく人いなかったんだし、普通に面白いもんなんだかからいちいちいちゃもんつけてくる人頭わいているんじゃない?

と感じている人が多い気がします。しかし、まったくのナンセンスです



まず、LGBTネタで傷つく人がいないというのがおかしいです。そもそもその時代にLGBTが可視化されていなかったです。普通に昔から性的マイノリティはいましたし、それは各種統計資料を読めば普通にいます。周りに性的マイノリティがいて、知らず知らずに傷ついていた可能性が高いです。


さらにいじめにも普通にあっているし、そういうネタにされて困っていた人も昔からたくさんいました。


昔は自身の無知で多くの人を傷つけていたことに気づかず、マイノリティを差別したうえで成り立っていた世界なだけです。

日本のおっさんのLBGTに対する理解が後進国並み


LGBTの世代間ギャップはやばいですが、日本は特にやばいです。国際的な統計比較によると、日本のLGBTに対する理解度は全体的に低いです。特におっさんは後進国並みです。



ものすごく世代間ギャップを感じてしまいました。すべてのおっさんがそうだとは限りませんが、こういう無知による差別で傷つく人がいなくならないかな~と思います。

注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...