もう暑い...

みなさんこんにちは,こんばんは. Pyenteです.

すっかり春も終わり(?)暑い日が続くようになりました. やっと社会人になったのに全然研修が終わらなくてつまらない毎日を過ごしています.

さて,研修ではJavaEEとかGlassFishとかいうものを使っているのですが,まぁ…

なんかApacheとか使ってたのが懐かしいってのが思うところなのですが.

そんな退屈な(悪口じゃないよ)研修ですが,身についたことがあります. それはPMとしてプロジェクトの管理をする力です. これに関しては初めてだったので手探り状態でしたが,結局GitHubのProjectsだったりIssuesだったりを使って個人的に結構やれてると思ってます. 他になにかいいのないのか…

昔バイトで使っていたのはRedmineとかなんかよく覚えてないのですが,外部ツールを使ってました. あとJenkinsでビルドの自動化はやってたかなって感じです.

あんなPerlを使ってたバイトでも役に立つことがあったんだなぁ…

研修のお話

私が務めることになった会社の同期なのですが,初心者が多いにもかかわらず,ほとんどの人が意欲を持って研修に取り組んでいます. 意外と結構焦ってます. 何故かと言うと,ほとんどの人が自分の教えたノウハウをちゃんと生かしているからです. 本当にスポンジのように吸収していきます. 逆に自分が変なことを教えてないか,自分の価値観を押し付けていないか心配になるくらいです. もっと客観的に物事を見れるように努力しようと思います.

やっぱりJavaよりPython

先程も述べたとおり,研修ではJavaを使っているのですが,どうにもPythonが書きたくてしょうがないです. なので,Pythonを学びたいという人を集めてチームを組んでなにか作ることにしました. ここでもタスク管理などをしつつ,自分の勉強を進めるという自分でかなり厳しい状況に持ち込んでいますが,その中でどう対応できるのか自分の隠された力に乞うご期待って感じです. ちょうどWebサービスを研修でやっているので,FlaskやDjango,それと合わせてBeautifulSoupを使ったWebスクレイピング機械学習を使ってなんか良いシステムができないか模索中です. 自分は趣味から開発に入ることが多いですが,たまたまWebスクレイピングを勉強してただけあってモチベは上がる一方です. いつかは機械学習を取り入れてなにかしたいと思っています. そのためにもCourseraはちゃんとやらないとな…

終わりに

ということで特に技術系の話をせずに近況報告したわけですが,久しぶりにブログに書くと何も学んでいなかったなと感じます. 次はDjangoとかFlaskとかBeautifulSoupについて書ければいいなと思っています. それでは,また次回おあいしましょう.

See you next time!

自分にとってPythonとは?

こんにちは,Pyenteです.

今回は自分なりにPythonについてまとめてみたいと思います.

はじめに

私がPythonに出会ったのは3年前で,キッカケは機械学習というものを知って勉強したときでしょうか.

というか3年前(研究室所属前)まで授業以外ではほとんど勉強してなかったので,Pythonなんて素敵言語知らなかったです.

それからはPythonばっか使ってますが,たまに授業で習ってたJavaC++HaskellRuby(RoR),Goなんかに浮気してましたけど,ずっとPythonです.

Pyenteという名前も実はPython + Serpente(伊語で蛇)でそれ以前はSylphy(ヨーロッパ神話の風の精霊だったかな?)とか使ってました.

読み方は…まぁ適当にパイソンとセルテンペなんてパイエンテとかピエンテとか読んでますが,造語だしニックネームなので呼ばれることは考慮してません.

↑ここまで雑談

ここからは自分なりにPythonのいいところを説明していきたいと思います.

ちなみにPython2とPython3があり,今でもちらほらとPython2の記事を見かけますが,今から勉強する人は必ずPython3を勉強しましょう.

Python2は一部の会社などでしか使われていませんし,これからPython3に移行していくでしょう(サポートも切れるし).

Pythonの特徴

Pythonは意外と色々な種類があり,普通のPythonはCPythonというものです.

知っている方はいるかと思いますがPyPyやJythonなどがあります.

ここについてはあとで説明したいと思います.

Pythonはまずコードが読みやすい点が一番強いと思います.

Pythonは文法がシンプルなので,最低限のコードで記述でき,またブロックをインデントで表す(オフサイドルール)ので,わかりやすいと思います.

例えば,Cなんかではifforなどを{}で書きますよね?

Pythonはインデントとブロックの始まりを:で明示するんです.

それに初心者でも学びやすいと言われているので,人気もあります.

あとはライブラリが豊富で何かしらあるのでなんでもできる…という印象が強いです.

実際にWebやAI,機械学習で使われてますしね.

あとはCやJavaというコンパイルを事前に行うコンパイラ言語ではなく実行時にコンパイルと実行を行う(厳密には違う)インタプリタ言語です.

これによりコンパイラ言語より実行に時間がかかる…のですが,PythonはCで書かれているので実際はそこまで遅くないです.

それに高速で実行できるような場合も多々あります.

ライブラリが豊富と書きましたが,実際はいくつか有名なものがあるのでそれについて説明します.

機械学習ではTensorFLow,Web系ではDjangoがよく使われています.

機械学習は人によって好みが分かれると思いますが,最初はscikit-learnというものが機械学習全部を網羅しているので勉強にはうってつけだと思います.

あとは前述したTensorFlowTheanoとかChainerとかがディープラーニングでは使われていますね.

この前GA(遺伝的アルゴリズム)をやったときにはDeapにお世話になりました.

WebはFlaskとかBottleとかありますが,自分はDjangoが一番使いやすいと思います.

実際に使われているサービス

PythonではWebアプリケーション,デスクトップアプリケーション,組み込みアプリケーション,ゲーム,機械学習,データ解析などに使われていますが,大規模なサービスにも使われています.

WebアプリではYoutubeInstagramDropboxなどが有名どころでしょう.

あとは自分がよく使うEvernotePythonらしいです.

機械学習,AIではPepperというロボットにはPythonで作られた感情エンジンが搭載されています.

Pythonの基本文法

ここでは多くは語りません.

よく使うものをメモ書き程度に書いていきます.

# これがコメントです
# 変数
x = 2 # int型
x = 2.0 # float型
x = 'Hello World' # str型 "でも可
x = True # bool型 最初は大文字

# 配列
a = [] # 空の配列
b = [0, 1, 2, 3, 4, 5] # 初期化
b[0] # bの1番目
b[-1] # 配列bの最後から1番目
b[1:3] # スライスと呼ばれる.bの1番目から3番目の前までを配列で返す
b[:3] # bの最初から3番目の前までを配列で返す
b[3:] # bの3番目から最後までを配列で返す
b > 3 # bの3より大きいものをTrueで返す.このとき[False, False, False, False, True, True]となる
b.append(6) # bに6を追加
len(b) # bの要素数
b.sort() # ソートしてくれる.簡単

# for
for i in b: # bを順番にiに格納してループ
    print(i) # iを表示

# 0から9までを順番に
for i in range(10):
    print(i)

# if
if a == 1:
    print("A")
elif a == 2: # else ifではなくelif
    print("B")
else:
    print("C")

# 辞書型
d = {}
d["a"] = "A"
print(d["a"]) # A

こんなものですかね.スライスはよく使います.

あとはzip関数とかも使います.

辞書型も使いやすいです.

values()とかitems()とかで簡単にループできます.

あと書いてないのだとラムダ式とかリスト内包表記とか簡潔にかけて便利です.

Pythonでよく使うライブラリ

Pythonのインストール方は色々ありますが,自分はAnacondaをお勧めします.

これはインストールと同時に色々なライブラリも同時にインストールしてくれるためです.

またpipというパッケージインストーラからインストールも容易に行えます.

よく使うのは

  • Jupyter Notebook: プログラムを実行,実行結果を記録できる.Githubで見ることも可能
  • Numpy: 学術計算ライブラリ.ベクトル演算が容易
  • Pandas: データ解析ライブラリ
  • Scipy: 科学計算ライブラリ
  • matplotlib: グラフ描画ライブラリ

これらですかね.Jupyterは系統が違いますが…

この他にも覚えきれないほど色々ありますので,ググって見ると面白いですよ.

最後に

Macだと最初からPythonがインストールされてます.

コマンドプロンプトとかターミナルを使う自分にとって,pythonと打つとその場で実行テストできる(対話モード)のは結構好きな機能です.

モジュールがインストールできたかのチェックもできますし.

ではでは,今日はここまで!

良いPythonライフを!

Qiitaのススメ

こんばんは,Pyenteです.

今回は自分の勉強法の一つであるQiita読解についてまとめていきたいと思います.

Qiitaとは?

Qiitaとは,プログラマのための情報共有サービスです.様々な人がプログラミングに関する記事を書いています.

Qiitaはこちらからいけます.

なにがいいの?

Qiitaには本当にいろんな分野の記事があります.自分はDeepLearningやPythonなどが好きなのですが,タグがあるのでそれに関する記事が容易に検索することができます.

また,トップページにあるトレンドからは人気の記事を見ることができ,最新のサービスなどの記事もよく見かけます.

初心者向けの入門記事もたくさんあり,環境構築や基礎の基礎から書いてある記事もあり,「やってみようかなー」とか思った時に検索するといいと思います.

ユーザ登録をするとストックというものができ,読もうと思ったけど今は…ってときに後で読むことやもう一度読み返すことができます.

どうやって読めばいいの?

基本は流し読みでもいいと思いますが,自分は理解するためにMarkdownを使ってまとめています.

サンプルコードがあれば試しに使ってみるのも理解の手助けになると思います.

なんで今更?

…前回の記事でMarkdownのPDF化ができたからです…

これを使って自分はPDFで保存して見返そうと思ってます.

まとめ

今回は簡単ですがQiitaというWebサービスを紹介しました.

困った時はQiitaを見れば分かるってくらい情報がたくさんありますので,読み飽きることはないんじゃないでしょうか.

最近ストックしすぎて本当に読みたい記事がわからなくなってきました…

Evernoteと組み合わせてなんとかしたいと思ってますが,それも面倒だな…と怠惰になりつつあります.

やっぱ,こういうのをまとめるときはAtom&Markdownが一番楽!だと個人的に思います.

ではでは,今日はこの辺で!

MarkdownからPDFへ.再戦します!

こんばんは,Pyenteです.

台風のせいで家が崩れるんじゃないかとドキドキでした.

最近バンドリにハマり音ゲーばかりやってます...

さて今回は…いえ,今回もMarkdownからPDFへ挑戦したいと思います.

前回の記事では,なんとかPDFには変換できたものの全然実用性がなかったという結果に終わりました.

しかし,やったことはAtomを使ってMarkdownで管理しているため,やはりPDFに変換したいと思い,またこの記事を書くことになりました.

今回は実践しながら記事を書いていこうと思ってます.

なので,出たエラーなどもメモとして書いていって,もしできたら最後にやり方のまとめを書こうと思ってます.

何を使うか...

今回は前回も使ったPandocでリベンジしたいと思います!

ちなみにMac環境で進めていきます.

なにはなくともInstall

Pandocのインストールは簡単です.

brew install pandoc

今回,すでにインストールしてありましたが,新しいバージョンがあるらしいので,brew upgrade pandocでアップグレードしました.

Pandocを使う

pandocがちゃんと使えるかテストしてみましょう.

pandoc test.md -o test.pdf

はい,エラーです.おそらく日本語が含まれているからでしょう.

このオプションをつけて再実行してみましょう.

pandoc test.md -o test.pdf -V documentclass=ltjsarticle --latex-engine=lualatex

はいできました.

さて,中を見てみると…

あれ,できてる?

数式もちゃんと表示されてるし,表も図も完璧…

前回の苦労はなんだったんだ?

考察

前回使ったのはこのコマンドでした.

pandoc -F pandoc-crossref input.md -o output.pdf -V documentclass=ltjsarticle --latex-engine=lualatex --template=mytemplate.tex --highlight-style zenburn --toc -N

コマンド覚えるだけで大変といってましたが,今回かなり減りましたね.

多分原因はmytemplate.texでしょうか.

エラーを記録するのを忘れてましたが,templateを指定した方がうまくできると書いてあったのでその通りにやったのが裏目に出たようですね.

おそらく論文などちゃんとしたものにしたいときは必要ですが,メモ書き程度では不必要でしょう.

今回のまとめ

早いですが,今回のまとめです.

簡単に言えば,

  1. Pandocのインストール
  2. pandocを使ってMarkdownを変換.ただしオプション必要

です.

前回の記事を消したい思いが消えない…

ではでは,今日はここまで!

そろそろヤバい気配・・・

まだまだ暑い日が続きますね…

最近は天気が悪く,部屋の中は快適になってきましたが,喫煙者としてはベランダがずぶ濡れなのはけっこう辛いです.

こんにちは,Pyenteです.

近況報告ということなんとなく記事を書こうと思います.

学生生活最後の夏休みということで,何かしようと思いつつ8月が終わってしまいました.

Youtubeのとある実況を見てポケモンをやったり,モンハンをやってた記憶しかありません.

あとはトネガワさんのアニメが面白いのとなんとなく流しながら観たラブライブサンシャインが最高だったということくらいでしょうか.

μ'sじゃなくなってなんとなく敬遠してたのですが,まぁ普通に曲がよかったです.

なんで観たかというと,急に音ゲーがしたくなって,デレステ,バンドリ,スクフェスを始めたからです.

前はガチでイベントとか走ってたのですが,今はたまにやるくらいなのでスタミナとかそんな概念はないです.

サンシャインはMY舞TonightとMiracle Waveが好きです.ループしてます.

あとはSELF CONTROLとAwaken the powerも好きですね.まさか自分がAqours(メイン)以外の曲を好きになるとは思いませんでした.1期の時はA-RISE…って感じだったですw

アニメに対しては批判がたくさんあったのですが,自分は気にせずに高評価しておきます.

閑話休題

そんな話はさておき,留学先の教授と連絡が取れなくなって1ヶ月,明日までに論文を読めと言われ急いで読んだものの,その後音信不通になり放置していたNSGA-Ⅱの論文ですが,そろそろ記事にまとめたいなと思います.

NSGA-Ⅱの説明をするためにGA(遺伝的アルゴリズム)についても記事を書きたいなと思ってます.

思ってるだけで全然筆は進みません(実際は筆ではなくキーボードですが).

NSGA-Ⅱに関しては記事も少なく,自分はQiitaの記事と英語論文を読み比べながら読み解いています.

そもそも理解できないことが多く,結構苦労してます.

最近思ったのですが,理解できてもプログラムに落とし込めなきゃ理解できたことにならないんですね.

当然なのですが,今更ながら気づきました.

今まではサンプルプログラムなどを読んで,「なるほど」で終わってましたが,次からはちゃんと自分でプログラムを書こうと思います.

Gitに草も生やしたいですしね.←見栄え重視

「頑張ってる人はもっと頑張ってる」という言葉を胸に残りの夏休みは頑張って勉強しようと思います.

ではでは,今日はこの辺で.

急いで英語論文を読まなくてはいけなくなったあなたへ

こんにちは,Pyenteです.

さて,昨日のことです.教授からこんなメールが届きました.

「明日までに論文読んで発表してね」

以前からやれと言われていたのですが,まぁやってなくて…

急いでやるときにどうしたかをメモしておこうと思います.

使用するもの

前提条件

Google翻訳でドキュメントを翻訳できるのを知っていましたか?

私はこの間知りました笑

しかし,私の今回の論文は数式やら図やらでPDFをそのまま翻訳するとまぁ読めないしおかしくなる.

さて,どうしたものか…

手順

さて,どうするかと言いますと,まず論文PDFをコピーしてtxtファイルやらMarkdownやらに写します.

コピーした時にめんどくさいことに,単語中の改行で-(ハイフンスペース)がありますので,全置換で消しましょう.

あと自分は1文ごとに見やすくするために.のあとに改行を入れています.

Markdownだと図を他に保存して挿入できます.

あとは---を入れると罫線を入れられるので見やすくもなります.

それをGoogle翻訳につっこみます.

そうしたら翻訳結果が出るのでそれをもとにプリントアウトした論文に必要事項だけ書き込んでいくとあとで見返した時にわかりやすくなります.

これである程度は意味を理解できます.

自分の方法ですが,参考になれば幸いです.

MarkdownをPDFに変換したいお話

追記

こちらの記事でうまく行ったので,よかったら見てください.


こんにちは,Pyenteです.

今日はMarkdownをPDFに変換したいと思ったので,それについて書こうと思います.

前回のAtomMarkdownを書こうという内容のものにもありましたが,GitではTex形式の数式が表示されないのでならいっそPDFにしちまおうと思い,調べました.

markdown-pdf vs pandoc

とりあえず,Markdown pdf 変換で調べると,この2つがHitしたので,それらを実際に使ってみようと思いました.

環境はMacOSです.

まずはmarkdown-pdf

とにもかくにもInstallすることに.

npm install markdown-pdf → npmがない…

あれ,node.jsインストールしてなかったっけ?

npmというのはnode.jsのパッケージを管理するものです.

まずはnode.jsからインストールしていくことに…

# brewでnodebrewをインストール
$ brew install nodebrew

# インストール成功したかの確認
$ nodebrew -v

# インストールできるバージョンの確認(最新の入れるならいらなかった説)
$ nodebrew ls-remote

# エラーが出るので,ディレクトリを作っておこう
$ mkdir -p ~/.nodebrew/src

# 最新版をインストール
$ nodebrew install-binary latest

# バージョンを確認
$ nodebrew ls

# 使うバージョンを指定
$ nodebrew use v10.8.0

# PATHを通す
$ echo 'export PATH=$PATH:/Users/<ユーザ名なので各自変更>/.nodebrew/current/bin' >> ~/.bash_profile

# PATHを再読み込みするためにターミナルを再起動
# ようやくmarkdown-pdfをインストール
$ npm install markdown-pdf

markdown-pdfのインストール結構時間かかるー

実際にやってみよう! → $ markdown-pdf -o output.pdf input.md

まぁ見やす…あれ,数式がちゃんと表示できてない…

ならばPandocで!

まずはインストールから

# LuaとPandocをbrewでインストール
$ brew install lua pandoc pandoc-crossref

おぅ,node.jsをインストールしなければいけなかったmarkdown-pdfより全然簡単!

ならば,早速PDFに!

  • pandoc -F pandoc-crossref input.md -o output.pdf -V documentclass=ltjsarticle --latex-engine=lualatex --template=mytemplate.tex --highlight-style zenburn --toc -N

長いな…オプション覚えるだけで大変そうだ.

とりあえず実行…

エラー…

数時間やってみるもどうにもならない.

結論

今回は諦めることに.

そんなにPDFにしたいわけじゃないし,ちょっとできるかなーって感じでやってみただけだから.

やっぱTexで書いて普通にPDFにしたほうがいいのかも.

もしかしたらあとでMarkdownTex → PDFを書くかも…

追記

MarkdownTex → PDFをやってみたお話

まずはtemplate.texを作成

\documentclass[11pt,a4paper]{jarticle}
\usepackage{amsmath,amssymb}
\usepackage{bm}
\usepackage{graphicx}
\usepackage{ascmac}

\title {Title}
\author {Pyente}
\date{2018/08/08}

\begin {document}
\maketitle
\input {output}
\end{document}
# MarkdownからTexを作成
$ pandoc input.md -o output.tex

# Texからdviを作成
$ platex output.tex

# dviからpdfを作成
$ dvipdfmx output

一応できた…

数式は表示されたが,図とかがグチャグチャ…

実用性はない!

次からはTexで書こう…

追追記

$ markdown-pdf sample.md

で変換はできたが,PDFは作成できたが,数式は表示されなかった…なんかコレジャナイ感…


ではでは,今日はここまで!

今日の一言:Markdownで数式を書くのも慣れたなー

f:id:pyente52:20180808001905p:plain

わかってることもMemoしちゃうのは癖ですw