mozyのかきおき

mozyの読書感想文や思考置き場

バカにされるのを恐れるな!

タイトルは、僕が最近何度も読んでいる本

SOFT SKILLS ソフトウェア開発者の人生マニュアル の26章からとりました。

 

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

 
あらゆることが最初は気まずい

初めて、C# + MVCのコードをみて実装をしなくてはならなくなったとき、私は汗をかく「黒い点」だった。

最高の仕事はできていなかっただろう。自分のバリューを出して人を魅了することもおそらくなかった。しかし、時間は過ぎ、最終的にその実装は終わったのである。次に、C# + MVC と対峙したときも、私はまだ落ち着かなかったが、前回ほどピリピリはしていなかった。

要するに、物事は変わるのだ。時間とともに、最初は落ち着かない気持ちにさせられていたものが、第二の天性になる。

 

バカみたいに見えてもかまわない

おそらくあなたも、物事は時間とともに簡単になっていくと考えるようになっているだろう。

その考えからブレずに前進し続け、ブログポストを書き続け、ステージで話し続ければ、いずれそういったことに居心地の悪さを感じなくなり、自然にさえ感じられるようになってくる。しかし、両手が制御不能な感じで震えが止まらず、マウスを持つことさえできないときに、どうすればそう考えることができるだろうか。

簡単なことだ。気にしなければいい。バカみたいに見えているのではないかと思わなければいい。誰かがあなたのブログを読んで、こいつ完全に間違ってる、バカなんじゃないかと思っていても気にしなければいい。あなたがいつでも彼らのことを笑おうと身構えているから、彼らも自分のことを笑うだろうなどと考えなければいい。

 

あなたが成功したいなら、プライドを飲み込み、外に出て行って、自分がバカに見えるのを恐れないようにしなければならない。有名な俳優、ミュージシャン、プロスポーツプレイヤー、講演者でも、かつてはうまくやれていなかったのだ。それでも、ベストを尽くし続けることで、とてもうまくできるようになった。結果はいずれやってくる。何かをずっとやり続けていれば、うまくならないではいられないものである。そうなるまで、長く生き残らなければならないだけのことだ。

そして生き残るための方法は、気にしないことである。バカのように見えることを恐れてはならない。

 

ハンドスピナーと瞑想

最近 猫とハンドスピナーの動画などをみていて

瞑想とハンドスピナーの相性がいいんじゃないかと思って試してみた

 

通常瞑想は お線香が一本消えるまで座禅をやったりするんだけど、5分ほどかかるし、灰も出るので意外と手間です。

しかし安いハンドスピナーなら2分ほど止まるので、止まるまで瞑想するとか手軽にできるなぁと思って試してみたところ、

しゃりしゃりベアリングが擦る音に集中をしているとなかなかに集中できるぞ。

大変よい。

Pandasを使って時刻表をスクレイピングしてみる

やること

つくばエクスプレス(TX)の快速のみ、次の発車時刻までカウントダウンするAppleWatchアプリが作りたいなと思っている。

必要なこと

AppleWatchを買う*1

TXの時刻表をスクレイピングしてくる。

AppleWatchアプリを作る。

やったこと

AppleWatchは届いていないのでデータの準備をしておく。

データがなければ始まらない。とりあえずは、TXの時刻表をスクレイピングしてみた。

スクレイピングをするには、BeautifulSoupやScrapyなど、色々なツールを使うと良いようだ。以下のページに詳しくまとまっているので参考にすると良さそう。

orangain.hatenablog.com

今回は、pythonのライブラリ、Pandasを使う。

なぜPandasかというと、もともとデータ操作が色々できるライブラリなのだけど、URLを指定したらwebサイトから直接データ入力も可能らしいということを知ったので使ってみたいと思う。すごいな、Pandas。知らなかったよ。

Pandasについてはここら辺を参照

10分でPandasを学ぶは大変良い。最高にわかりやすい。

qiita.com

Python Data Analysis Library — pandas: Python Data Analysis Library 

コード例

今回は以下のページを対象にスクレイピングしてcsvファイルに固めてみる。

列車別時刻表(平日上り) | 列車別時刻表 | 時刻表・運賃 | つくばエクスプレス

import pandas



url = "http://www.mir.co.jp/timetable/weekday_up.html" # TX平日上り

fetched_df = pandas.io.html.read_html(url)

print(fetched_df[0])
fetched_df[0].to_csv('output.csv'

これで同じディレクトリ内にoutput.csvが生成されていると思う。結構簡単にできました。データを見てみると、多少ずれているけれども、使えるデータがサクッと取得できたかなと思う。

f:id:mozy_ok:20170623205052p:plain

けつろん

webページにtable要素がある場合、PandasでURLを指定すればスクレイピングは容易にできるってことがわかりました。

みんなもサクッとスクレイピングでよしなにデータをつくりましょう。

*1:一番難しい

Tethne を使って web of science の引用ネットワークを可視化してみる

やること

python ライブラリ Tethne を使って引用のネットワーク構造を可視化してみる。(ほとんどチュートリアル通り)

f:id:mozy_ok:20170621022517p:plain

やってみた結果こんな感じになった。

Tethneとは

Tethneは、書誌のメタデータを解析して解析するためのPythonソフトウェアパッケージです。このプロジェクトの最も重要な目標は、学者が共著者や共引用グラフなどのメタデータベースのネットワークモデルを簡単に作成できるようにすることです。

Tethneを使用して、ISI Web of Science、JSTOR Data-for-Research、さらにはZoteroコレクションの書誌メタデータを解析することができます。

Tethneは人文科学や社会科学の技術に精通した学者、特に科学的変化に関心のある人たちを念頭に置いて開発されました。

とな。以下の参考サイトより引用

Tethne 0.8 Documentation — tethne 0.8 documentation

https://pythonhosted.org/tethne/index.html

という訳でとりあえず、インストールしてみる。(※注 Tethneは python2系で動くので環境に注意。pyenvなどで環境を作ると良いと思う。)

pip install tethne

インストールはそこまで時間がかからないが、pipでのインストールを待っている間に、可視化のために使う、Cytoscapeというソフトウェアをダウンロードしてインストールしておく。*1

www.cytoscape.org

Cytoscapeとは

オープンソースのネットワーク可視化ソフトウェアです。

とりあえずは、この記事を読むと良さそう。というかめちゃわかりやすくて詳しい。

qiita.com

Web of Scienceとは

Web of Science(ウェブ・オブ・サイエンス)は、トムソン・ロイター(旧トムソン)の科学部門であるサイエンティフィック(Scientific)により提供されているオンラインの学術データベースである。

Web of Science - Wikipedia

Web of Science 略してWoSがすごいのは、あらゆる分野を網羅していて、論文の分析データなども充実しているところ。論文のインパクトファクターなども調べることができたり、全ての論文の引用、被引用情報が索引付けされているところです。また、評価の高い論文のみを収録していて、情報の信頼性が高いんだってさ。

世界の論文Top100とかって記事の元データになっていたりもするとな。

という訳で、WoSの特徴である引用、被引用情報が索引付けしてある特徴を活かして、注目した論文の引用ネットワークを作ってみようと思う。 

 WoSからデータをダウンロードしてくる

---追記予定

実際にコードをかく

まずは、WoSのデータを解析するために、ライブラリのインポートと、ファイルを読み込む。

from tethne.readers import wos
corpus = wos.read('/path/to/my/data.txt') # /path/to/my/data.txt にはDLしてきたWoSのファイルのパスを指定する。

コーパスの長さを確かめる

len(corpus) 

---追記予定

from tethne.networks import coauthors
coauthor_graph = coauthors(corpus)
from tethne.networks import cocitation
cocitation_graph = cocitation(corpus, min_weight=3)
from tethne import GraphCollection
coauthor_collection = GraphCollection(corpus, coauthors)
coauthor_collection.node_distribution()

from tethne.writers.graph import to_graphml
to_graphml(coauthor_graph, '/path/to/my/graph.graphml')

可視化してみる。

先ほど生成した、graph.graphmlをCytoscapeにて開くとこういう画面が出てくると思う。*2

f:id:mozy_ok:20170621034019p:plain

ここで、from Network File... を選んで少し待つとネットワークが作成される。やったね。

レイアウトは、上側のカラムで変更できるので、色々変更して眺めてみると面白いかもしれません。

f:id:mozy_ok:20170621035016p:plain

円形

f:id:mozy_ok:20170621035143p:plain

わちゃわちゃ

f:id:mozy_ok:20170621035640p:plain

 

*1:Javaも使うので、それも環境に合わせてよしなにダウンロードなどしてください。 

*2:起動時に、アプリケーション“Cytoscape.app”へのネットワーク受信接続を許可しますか? などとでることがあるかもしれない。

じぶん銀行 スマホATM は最高なんじゃなかろうか

ここ数年、お財布を持ち歩かずに、カード入れだけで生活をしていたのですが、レシートを貰ったらパンパンになって意外とかさばるし、

結局、鍵、スマホ、サイフ(カード入れ)と、現代の三種の神器を持ち歩くことからは逃れられなかったのですよ。

そんな時に、iPhone7&Apple Payが登場してクレジットカードとSuicaすら持ち歩かなくてもいい時代が来た。やったー。とか思っていたけれど、現金しか使えないお店に行った時困っていたんですよね。そして仕方なく、銀行のキャッシュカードを持ち歩くと…。便利だけどあと一歩足りてなかったのよね…。

しかし、先ほどこの記事を見てもうキャッシュカードを持つ必要がなくなるなと思ってじぶん銀行の口座開設をしてみた。

真の意味で「iPhoneがあれば財布なしで生きられる」ように。キャッシュカードすらもiPhoneに入る「スマホATM」の威力|ギズモード・ジャパン

 

スマホアプリでATMの画面に表示されるQRを読み取るだけでお金がおろせる。しかもセブンイレブンで使えるとな。便利そうだ。

私はSoftBankユーザだけど、じぶん銀行を使って行くのかね。笑

口座開設が終わったら追記しよう。

Swift iPhoneアプリ制作入門中

最近Swiftを使ってiPhoneアプリを制作している。

その際に気がついたことをまとめてみる。順次追加していこう。

いわゆる忘備録ってやつ。☺︎ 

 

エラーコード

> Select a development team in the project editor.

これは、プロジェクトの一般設定から チームIDをきちんと指定すれば直る。

あとはiOSのバージョンなども確認しておこう。

 

アプリを実機で動かしたいとき。

Xcode側から転送できないときなどがある。その時は、接続を確認しないといけない。

その場合、Xcode->Preferences->General->Dialog Warnings の部分をリセット。

転送はできたけど、署名うんぬんと言われて起動できない時がある。

その場合、iPhone側で設定->一般->プロファイルとデバイス管理->デベロッパAPP の部分の署名を認証しないといけないようだ。

 

自分のための Tips

View Controller とコードとの接続などでごちゃごちゃになるので

一旦ボタンなどを配置してからコードと繋いだ方が良さそうな感じがある。

あと、ストーリーボードとコードとがうまく繋がっていない場合は、ビルドエラーなどが出るわけではなく、実際に動かす際に、落ちたり固まったりするので注意かもしれない。

 

 

Braava jet を買ったぞ! Hackにトライ編

前回、Braava jetを買った記事を書いたが、

そこで、iPhoneのアプリとBluetoothで接続して操作できるということがわかった。
mozy-ok.hatenablog.com

 じゃあブラーバと何らかの方法で通信できれば、スケジュール機能だったり、

コントロールして遊べるんじゃないかなと思って調査を開始した。

調査編

ソフトウェアから追っていく

以前ルンバ500シリーズをHackして遊んでいた時は、ルンバの外装を外せば、IOポートがあったので超簡単にHackが可能だった。

(そもそも、500時代は公式でリファレンスが出ていた。PDF注意http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf)

しかし今回は、ざっと探した限りそうでもなさそう。接続方式がBluetoothというのもちょっと厄介かもしれないなぁ。

ブラーバジェットと同様にルンバ980も、iPhoneのアプリで操作できるのだけれども、そちらの接続はWiFiとなっていて接続できるようだ。

参考: 

ルンバハック – しくみ製作所ブログ

「Hey Siri 掃除をして」で、Roomba(ルンバ)に掃除をしてもらう | マルチクラウドインテグレーター データホテルのテックブログ

 

また、pyirobotと言うpyhtonライブラリがあって、

そちらには

This ia a python module for controlling the iRobot Roomba 980 (and possibly Roomba 960 and Braava Jet, but those are untested)

とある。もしかしたら未踏峰

pypi.python.org

 

ハードウェアから追っていく

ブラーバジェットの内部構造とはどうなっているのかというと、外装を外すと以下のように基盤が入っているようだ。

f:id:mozy_ok:20170601183047j:plain

http://www.robotreviews.com/chat/viewtopic.php?f=21&t=19186 から引用。

これを見るとCPUはARMのものが使われているのがわかる。先ほどのサイトの議論にもあったが、Cortex-M3 だと思う。

 

一旦ここまで。☺︎