歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【Python】networkx + PyGraphvizで有向非巡回グラフ(Directed acyclic graph)をプロットする

昨日書いたコードで、「有向非巡回グラフ(Directed acyclic graph)をきれいにプロットする」ということが課題として残っていました。 ところが、よく考えたらDAGはワークフローエンジン等でよく使われている概念で、ワークフローエンジンで、タスクの順番…

【Python】仕事の依存関係を有向非巡回グラフ(Directed acyclic graph)として整理するツールを作りました

特にデータ分析周りの仕事で、 「プログラムを書く」前に「設計」と「プログラミング言語の選定」が必要 「プログラミング言語の選定」の前に「設計」が必要 「設計」の前に「稟議を出す」「個人情報についての取扱を調べる」が必要 … といったような、タス…

【Python】urllibでマルチバイト文字のURLのhttps通信が失敗する

サラリーマンたるもの、日々の情報収集は欠かせません。 そのため、気になる業界ニュースをチャットに通知するクローラーを実装して使っているのですが、度々未知のエラーが出てしまいます。 叩いたら粉まみれ。PCデポ決算修正の内容とは https://t.co/9HEJy…

【情報検索】文章スコアのTF-IDFとBM25についてポインタを残しておく

OSSの検索エンジンであるSolr/Luceneの勉強会に行っていました。 solr.doorkeeper.jp この中の発表『Solrで多様なランキングモデルを活用するためのプラグイン開発』で、 SimilarityにはTF-IDFとBM25の二種類あり、Solr6からはBM25がデフォルトになっている …

【本】最近読んでいる本(特に不動産関連)

最近はあまり本を読んでいませんが、一応何冊かは読んだので。 テキストマイニングを使う技術/作る技術(那須川哲哉) 最近、業務でテキストマイニングで業務支援を行う案件にアサインされており、ゴリゴリコードを書くことになりそうだったので読んでいま…

【Python】辞書のキーにデフォルト値をセットする

最近Pythonで自然言語処理をしていて、複数のライブラリを利用していると、どうしてもリストや辞書のややこしい変換が増えてきます。 categories = ['サーバル', 'かばん', 'サーバル'] lines = [ ['ここ', 'は', 'さばんな', 'ちほー'], ['食べ', 'ない', '…

【Haskell】optparse-genericを使ってコマンドラインツールを作るまで

Haskellは優れた型システムによって見通しの良いプログラミングができるものの、アプリケーションを作る際にはどうしても敷居が高く感じてしまっていました。 というのも、PythonやRubyなどのスクリプト言語では豊富なパッケージの組み合わせで小さなプログ…

【Haskell】vim上でHaskellの構文チェックを行う

今まで完全に教養としてHaskellを勉強していた(Pythonの型注釈に必要な感覚を養いたい、内部状態の少ないコードを書きたい)のですが、「この問題はHaskellなら上手く解けるんじゃないか」というものを思いついたので、初めて自分の頭で考えたコードをHaske…

【アルゴリズム】検索エンジンで重要なトップnソートについてまとめておく

検索エンジンやレコメンドエンジンを昔実装していた先輩から、飲み会で レコメンドエンジンって、要するに検索エンジンの特殊なもの 検索エンジンに重要なアルゴリズムはトップnソート 実際に利用した性能評価も重要 という話を聞きました。 ところが、私は…

【Python3.6】はてなブログに投稿するためのライブラリをPyPIに公開しました

以前書いたスクリプトを書き直して、PyPIからインストールできるようにしました。 github.com pypi.python.org

【Python3.6】AWS Lambdaでツイッターを検索して自動リツイートする

先程の記事に引き続き、AWS LambdaでPython3.6が使えるようになったので、過去にPython2.7で書いたバッチ処理のレガシーコードをLambdaに移行しています。 まずは、下の記事で書いた「ツイッターを検索した結果を自動リツイートする」コードを移行します。今…

【Python3.6】AWS Lambdaを再現するDocker Imageのdocker-lambdaを使ってみた

この間AWS LambdaでPython 3.6がサポートされたので、レンタルサーバーで動かしているTwitterの自動投稿やクローラーを移行しようと画策しています。 AWS LambdaがPython3.6に対応したので使ってみた | Developers.IO 外部ライブラリ(twitterライブラリやB…

【本】プログラマーは『ものづくりの数学のすすめ』を読んで、のんびり数学を勉強しよう

『ものづくりの数学のすすめ 技術革新をリードする現代数学活用法』を読んでみたところ、とても面白かったのでおすすめしますという記事です。 そもそも私がこの本を読んだのは、 著者の方のツイートを見かけて「面白い立場の方だな」と思ったこと 最近私が…

【ニュース】「ブロックチェーン技術と不動産」について、有識者に質問してきてほしい

最近、「bitFlyerと積水ハウスがブロックチェーン技術を利用した不動産情報管理システムの構築を開始する」といったニュースが話題になっています。 jp.techcrunch.com 「ブロックチェーンを不動産に適用するとイケるんじゃないか」ということは以前から言わ…

【R】「20代のエンジニアの間で本当にPHPは廃れたのか?」を集計する

前回の記事で、転職ドラフトのデータをスクレイピングし、簡単な分析を行いました。 kiito.hatenablog.com ただし、こちらの記事の時点では、転職ドラフトは終わっておらず、中途半端なデータの状態のまま集計していました。 特に最終日に多くの指名が入って…

【R】転職ドラフトのデータをスクレイピングして分析(集計)する

お久しぶりです。 最近上司と「機械学習とかその辺の技術が発展したら、真っ先に自動化されて仕事なくなるのはハンパなエンジニアと中間管理職だよね〜」という話をして危機感を募らせている @takeshi0406 です。 WEBエンジニアにはご存じの方も多いと思いま…

【雑記】Haskell(で|と)数学を割と真面目に勉強しようと思います

Python3の型注釈が目指す世界をきちんと理解したいと思い、 2年越しくらいですごいHaskellたのしく学ぼう!をようやく読み終わりました。 型クラスの話あたりから、動的型言語(まともに書ける言語がPython, Ruby, R)にとっては感覚をつかみにくかったのです…

【R】Yコンビネータ(不動点コンビネータ)をRで写経する

R

最近関数型言語(主にHaskell)で遊んでいます。 その中「ラムダ式の中で再帰を行うことができる」Yコンビネータという概念が出てきたのですが、ちょっと理解できなかったので、Rで実装してみたという記事です。 Pythonによる実装は以下の記事に詳しく解説さ…

【雑記】データエンジニア・サバイバルガイド

この間、久しぶりにある優秀な先輩に会い、いろいろと話をする機会がありました。 以前短い期間でしたが一緒に仕事をする機会があり、その際に基本的な統計プログラミングや仕事で気をつけるべき点(闇)についていろいろ教えていただいた方です。「お前はも…

【雑記】なぜ「人工知能」という言葉が使われてしまうのか

というバズりそうなタイトルですが、「人工知能」とか「機械学習」のことはあまり書きません。 私も詳しくないので。 そういうのを期待している人は、こっちを読みましょう。 bohemia.hatenablog.com ある会のとき、上司が同僚2人の成果について「人工知能」…

【R/Python】rChatworkとpychatworkをチャットワークAPIのバージョンアップに対応させました

RとPythonのチャットワーク用ライブラリを、APIのバージョンアップに早めに対応しました。 ライブラリの実装練習に作った割に、なんだかんだ自分でいろいろと利用しているのでビックリです。 help.chatwork.com v1からv2への移行期間として、下記の停止日ま…

【雑記】『フリーカルチャーをつくるためのガイドブック』で色々勉強になったけど結論はない

先日、市役所に書類を取りに行くついでに寄ったブックオフで、気になるタイトルの本を買いました。 それが『フリーカルチャーをつくるためのガイドブック』です。 フリーカルチャーをつくるためのガイドブック クリエイティブ・コモンズによる創造の循環作者…

【Python】Web集客や、データ処理の最新ニュースを自動投稿するブログを作りました

実際には、ここ1年くらいSlackに通知していたものを、「ログ残んないしざっと見るとき不便だな」と思ってたので、はてなブログに自動投稿するように作りました。 TumblrやBloggerとか、JekillとかPelicanとかでS3に静的ページを作ることも考えたのですが、既…

【本】プログラマーのための『贈与論』

最近、面白い本をいくつか見つけて読んでいました。 特にモースの『贈与論』に関係あるところで。とはいえ、まだまとまった文章は書けるほど消化できていないので、簡単に紹介していくだけにします。 本書『贈与論』Essais sur le donは、フランスの文化人類…

【自動要約】海外のニュースを自動で要約して翻訳して、自動でまとめてくれるプログラムを書ければいいなあ

海外のニュースを簡単に通知できないか試そう(試したい)という記事です。 国内の業界ニュースは当然追っているにせよ、海外に面白い動きがあるのに、全然把握できていないことは多々あります。 とはいえ、私は英語が得意ではないため、自分の興味のあるニ…

【R Advent Calendar】Rプログラマーのための関数型プログラミングの学び方

R Advent Calendar 2016の5日目です。よろしくお願いします。 最近、R界隈ではHadley Wickham氏が中心となって開発しているtidyverseと呼ばれるライブラリ群が流行っています。 彼がWelcome to the Tidyverseという記事の中で、次のような宣言を行っています…

【Python】はてなブログのOAuth認証でブログを自動投稿するスクリプトを書いた

不動産関連のニュースを自動でスクレイピングで集めていたのですが、 Python2から3に移行する際にOAuth認証に移行しようとして、ずっと面倒でサボっていました。 Rubyでは、既にgemの形で実装している方がいました。記事の内容も素晴らしかったし、コードも…

【Python】PyPIに『pychatwork』を公開しました

以前練習で作ったライブラリを、仕事でも後輩のタスクで使うようになった(らしい)ので、PyPIに公開してインストールできるようにしました。 pypi.python.org 登録手順など、こちらのページを本当に助けられました。ありがとうございます。 qiita.com テス…

【Python】データサイエンティストのためのPython開発記事紹介

後輩が数値計算を使う、簡単なバッチ処理をPythonで書き始めました。 一応私もPythonの知識ならそれなりにあるのでいろいろ教えられることは(まだ)あります。 そのための予行練習としていろいろまとめておきます。 正直、自分よりもっと数値計算やプログラ…

【Python】pip installで突如UnicodeDecodeErrorが出始めたので対処した

Github上にアップした自作のPythonモジュールをインストールしようとしたところ、UnicodeDecodeErrorが出てしまいました。 $ pip install --upgrade git+https://github.com/takeshi0406/twlist_to_urllist Exception: Traceback (most recent call last): F…

【Python】Rubyの配列やハッシュのメソッドをPythonで再現する

友だちが「Rubyはいろいろなメソッドがあって柔軟だから、 そっちに慣れちゃうとPython書くときちょっと困るんだよね」と言っていました。 たしかに、Rubyは「配列やハッシュに対してこんな機能があればいいな」と感じたとき、 そのデータ型のリファレンスを…

【Elixir】ElixirのWebフレームワーク、Phoenixをインストールだけしてみた

Elixirという関数型言語が流行り始めているような雰囲気を感じています。 ErlangのVM上で動く並列処理に強い言語で、(詳しく知らないのですが)Prologの影響が強くいまいち使いづらいErlangに対して、 Rubyっぽい見た目で使いやすくした言語と聞いています…

【Ruby】open-uriでhttp=>httpsのリダイレクトを行う

Rubyでスクレイピングしていたところ、PCサイトからスマホサイトにリダイレクトするところで次のようなエラーが出てしまいました。 どうやらRubyのopen-uriではhttpからhttpsへのリダイレクトが禁止されているようです。 kiito.hatenablog.com open-uri.rb:2…

【Ruby】HTMLをYAMLに変換して他サイトの改修をチェックする (ver2)

「スクレイピングで他サイトの改修をチェックして自社サイトの参考にしよう」という上司の無茶振り要望に応えてあげようキャンペーン第二弾です。 kiito.hatenablog.com 前回のコードを回して、一応改修箇所は検知できていたようですが、正直全然使い物にな…

【メモ】自分だけが仕様を理解してコーディングしているのがつらすぎる

最近、会社でプログラミングをしていてつらさしか感じません。 1人1人が独立してタスクを進めているため、仕様や実装の詳細を自分しかきちんと把握してません。 そのため、周囲と比べてスキルや経験に乏しい自分にとっては荷が重いと感じることがあります。 …

【Python】Selenium + PhantomJSでPythonからブラウザ画面のスクリーンショットを撮る

WEBサイトの改修を検知するプログラムがそれなりにうまくいきそうなのですが、改修があったときにyamlの文字列を見てもピンと来ません。 kiito.hatenablog.com というわけで、PythonからSeleniumを介してPhantomJSを動作させ、 スクリーンショットを撮ること…

【R】weblioの住宅用語辞典をスクレイピングして住宅関連の単語のcsvを作る

自然言語処理をやっている人はよく辞書の整備が大変だと言います。 そんな話をしていたところ、「自分が詳しくない分野の言葉を知るときはweblio辞書が便利だよ」という知見を教えてもらいました。 www.weblio.jp しかし、私は怠惰なプログラマーなので、ス…

【PyCon】『メタプログラミングPython』を復習して言語の理解を深めよう

PythonのカンファレンスであるPyConJP2016に一般参加してきました。 様々な発表や催しがあったのですが、特に素晴らしかったのが@tell_kさんの『メタプログラミングPython』という発表です。その名の通りオライリーの「メタプログラミングRuby」の内容に沿っ…

【Python】他サイトの改修頻度をチェックするためにHTMLをYAML(っぽい何か)に変換するためのコマンドラインツールを書きました

上司から「サイトがマメに更新されてると、Googleの検索エンジンからの評価が上がるらしいんだけどさぁ、 他サイトの更新頻度をチェックしたり簡単に比較する方法ない?」というふんわりした話題がありました。 単純に考えると、サイトのHTMLを定期的にスク…

【Ruby】PythonプログラマーがRubyを触って感じたこと

Pythonプログラマーというか、元々Python(ときどきR、C言語)で数値シミュレーションをしていた学生が、就職してRubyでWeb開発を行うにあたって勉強したことを書き連ねていくだけの記事です。 もし自分と同じような立場の人(これから後輩としてもどんどん…

【本】『ウェブマーケティングという茶番』『やりなおし!地理の教科書』など読みました

技術書っぽくないやつですが、昨日2冊読みました。 ウェブマーケティングという茶番 タイトルに惹かれて買いました。リスティング広告やSEOなどの広告代理店の話です。 胡散臭いと思われているこの業界を変えるため、同業者を敵に回す覚悟で、業界の実態を暴…

【本】仕様化やレビューについて勉強しています

最近、2つ理由からレビューの仕方や、仕様化のプロセスについて勉強しています。 自分自身がプログラムを書いている間、ドメイン知識が足りず、手が止まっている時間や周囲に確認することが多い。 (半ば非公式に)分析用のRプログラムのコードをレビューす…

【MySQL】DBに入れた検索クエリテーブルから、キーワードの順序に関係なく抽出する

MySQLのデータベースに検索クエリが保存されており、その中から検索クエリを取得したいとします。 具体的には「検索連動広告にガンガン新規キーワードの組み合わせを登録したい」「葉隠れ構造を崩したくないから、同じキーワードの組み合わせを別のキャンペ…

【シェルスクリプト】git管理下のファイルの行末のスペースを消す

あまりに「末尾に空白がある」ってレビューで返されてしまうので、今のディレクトリ配下の行末のスペースを消すようにした。 vimでファイル閉じるときにできるのかもしれんけどまあいいや。 git ls-files | xargs sed -i -e 's/ *$//'

【雑記】メンター業務をがんばってたら最強の後輩が産まれてしまった

今年、いわゆるデータサイエンティスト的なスキルの後輩が入ってきて、私がメンターの役割を任されました(正確にはメンターになるはずのメンバーが抜けてしまい、早いタイミングで私が引き継ぎました)。 彼は、今時珍しく(?)、数学的な能力と、その手法を…

【本】『人』も『プログラム』も両方動かさなくっちゃあならないってのがエンジニアのつらいところだな

最近いろいろ読みました。 人を動かす 有名なやつですね。SOFT SKILLSで薦められていたのと、同期の優秀なマーケッター(仕事の進め方がうまい)がコレ系の本が好きなので読みました。 「相手に重要感をもたせることが大事」「相手の自尊心を傷つけると、反…

【雑記】就職してからプログラミングが楽しくない

完全に糞みたいな記事です。自分の考えをまとめるために書いてるだけです。 若手向けの社内のちょっとした技術研修で、「自分の苦手分野の目標を立てて好きなもの作っていいよ」というふわっとしたお題を出されて、チーム組んで設計してAWS上に実装している…

【AWS】AWSの構築・ネットワークで学んだこと

AWS

いろいろあって、AWSでEC2のインスタンス立てて、APIサーバーはプライベートのサブネットに立てて…という設定作業をしています。 多分知っている人からすると一瞬で終わるような作業ばかりなのですが、私は始めてやる作業なので詰まってばかりで困っています…

【雑記】会社に入ってわからんかったこと

社内のゆるふわ技術勉強会で発表することになったので、 最初は「入社2年目の新卒エンジニアが困ったこと」という内容にするつもりだったのですが、 愚痴っぽい内容になりすぎたのでやめました。 といってももったいないので、(一応)匿名ブログに書いてお…

【本】なぜエンジニアは生きづらいのか

最近のお仕事がグダグダで、「あ、今おれ上司に信用されてないな」って思うことが多いのでいろいろ読みました。 うまくいかないときは、自分の考え方や進む方向が間違っていて、どこかから別の考え方を取り入れる必要があるというのが持論です。あと、Mac Bo…