ひな人形 × Engineering

技術系の話を書いていくつもりです

スクリプトで残念なシステムを補完した話

はじめに

弊社では、ひな人形の卸販売を行っています。当然、販売する商品の名前、価格をデータベースに保存しています。 私が入社する何年も前からその仕組はありますが、ものすごくレガシーなシステムです。かつて事務コンと呼ばれていた機械を改造して作られたシステムです。これが今回お話する、残念なシステムです。

まずは、仕入れ管理システムに登録する現在のフローを簡単に。

  1. 表計算ソフトを使用し、仕入れ値や原価調整を行う
  2. 商品の価格設定ができたら、仕入れ管理システムに1件ずつ登録していく

では次に、仕入れ管理システムの何が残念かを次に並べてみました

  • プライマリキーの登録をDB側ではなく、システム側で登録できないようにしている
    • DBに直接INSERTすれば入るらしい
  • 事務コン独自のDBを使っている
  • 基本的にDBに直接書き込めない
  • 外部ファイルをインポートできない
  • 文字のコピペができない
  • 1件ずつしか商品を登録できない

問題点

仕入れ管理システムが入っているPCの前に行き、そのPCの入力画面で入力しないといけないという点が一番恐ろしいです。 せっかく、仕入れ管理登録前に、Excelでデータを入力したのにまるで活用ができていないのです。百歩譲って手入力で良いとしましょう。コピペができないので、絶対にミスをします。 Excelファイルを目で見て、その商品名と価格を入れる作業を200件以上行います。確実にヒューマンエラーが起きるし、価格に関するデータなので、ミスをすると会計や売上に影響があります。

理想の解決策

これは一言で表せます。このシステムを捨てて新しく作り直します。 そもそも表計算ソフトを使って価格調整を行っている理由は、このシステムが非常に使いづらいからです。本来であればこのシステム上で価格調整をしたいのですが、ここには書ききれない位スーパー不便なのです…… しかし、今年の仕入れは登録しないといけないし、仕入れ管理システムを作り変える時間はないので、とりあえず…

ではどうするか

一応、CSVファイルを使ってDBに登録することはできなくはないようです。(このツールを作成した人談) CSVをツールを作成した人に渡せば出来るとのことですが、プライマリキーの問題があると言われました。DBに直接書き込めば商品名重複登録ができるが、システム上ありえないのでトラブルが起こるらしいのです。 なので、読み込むCSV重複チェックをする必要があります。

スクリプトの作成

Pythonのライブラリのひとつであるpandasを用いてCSVのプライマリキーの重複チェック、修正、出力するスクリプトを作成しました。 しかしこれはあくまでも突貫対応。早急にシステムの見直しが必要です。明らかに現在の仕組みは外部の一名に属人化しており、使いづらくもあるので危険です。

(大したスクリプトではないが、一応後日公開する予定)

最後に

社内にコードを書ける人が一名しかいなく(本職は別なので属人化すると終わる)、今後増える予定もない弊社のような環境では、根幹の仕組み作成を行わず、作業の補完や現存システムでの効率化を行うのがベストなのでは?と思いました。 もちろん社内システムを見直すのが理想ですが、これは外注したほうが属人化せずに良いのでは?と思っています。 次の記事ではどこまでエンジニアリングすべきかについて考えた話を書いてみようと思います。

Perl入学式から広がったコミュニティ

この記事は「Perl入学式 Advent Calendar 2015」の18日目の記事です。


こんにちは。Perl入学式2015年の参加者の@umaaaaa_chanです。
昨日は@note103さんのPerl初心者を卒業したらでした。今まさにPerl初心者を卒業したい!と思っている私には非常に参考になる記事でした。

私は今M2の学生で、来年度から正社員としてPerlを使った会社に就職します。現在は内定者インターンとして週2くらいのペースでPerlとにらめっこしています。そんなPerl初心者の目線ならPerl入学式について書きたいと思います。

充実したサポート

私は、2015年Perl入学式の第一回から参加しています。第一回の内容は、環境構築や、基本的なLinuxのコマンド操作でした。環境構築や、Linuxの操作はある程度できるので、正直参加しなくてもいいかなと思ったのですが、万が一のことを考えて参加しました。
実際に参加してみると、ものすごく丁寧なサポートがありました。「これからプログラミングを始めたいけど、何をやったらいいかわからない!」という方も安心して参加でき、とても敷居が低かったです。

Perl入学式→懇親会→別のコミュニティ

第2回から懇親会に参加しました。そこで@htk291さんに吉祥寺pmに誘われました。当然参加しない選択肢はなく、吉祥寺.pmにも参加しました。Perlの知識が全く無い自分でも触れやすいトークが多く、単純に楽しかったです。そんなこんなでつい先日、吉祥寺.pmで人生初LTを行いました。Perlあんまり関係ないトークしました

umaaaaa-chan.hatenablog.com

さらにPerl入学式がきっかけでYAPC::Asia2015にも参加しました。正直まだわかるトークは少なかったですが、Perl以外のトークもあったので自分なりに楽しむことができました。また、多くの方とお話できたので楽しかったです。

様々な勉強会やコミュニティに参加することで広がる輪は単純に楽しいです。「Perl入学式は懇親会が楽しい」と@htk291さんもよく言っていますが本当にそうだと思います。人と人の距離がとても近いです。

サポーター入学したい

来年度からは正社員としてPerlに携わっていくわけですが、そんな中Perl入学式にこれからはサポーターとして携わりたいと思っています。人に教えることは経験から「楽しい」「自分のためにもなる」ということは実感しています。
15日目の記事で@gomaaburamaxさんがサポーター入学式について書いています。自分も入学したいと感じられる記事だったので、来年はPerl入学式にサポーターとして携わっていけたらなと思っています。

まとめ

Perl入学式は、Perl言語を教えるだけの勉強会ではなく、コミュニティも広がる勉強会だと思っています。実際に、Perl入学式がきっかけでLTもさせていただいたりしました。
なので、言語問わずプログラミングを学びたいと思っている人には自信をもってオススメできる勉強会だと思います。

明日は@ytnobodyさんの「Perl入学式を社内に持ってきた話」です。何度もお世話になっているの方なので楽しみです。

辰巳PA検問通知bot作りました

今更Twitterbotかよって感じですが、Twitterbot作りました!

背景

首都高速道路、辰巳第一PAでは週末の深夜このような光景になります。

f:id:umaaaaa_chan:20151029164950j:plain

おわかりいただけたであろうか……?
週末の深夜、辰巳PAには、 違法改造車 スポーツカー等の車で溢れかえります。

車好きの方々が辰巳PAで集会を行うことで、当然PA枠内に停めることができない車が多く存在します。そんな車たちは路肩に駐車するといった事態も起きています。

これらを受け、警察は週末の深夜、事前告知無しの検問を行っています。忌々しいですね……
検問の内容としては、違法改造車取締である。通称「無料車検」と言われています。なぜ無料車検と言われているかというと、陸運局の人を呼んでの取締りなのです!!!検査内容として、

  • 基準外部品の装着
  • 排気ガス検査
  • 排気音量検査

といったような、車検で行う内容の検査をするからです。

また、厄介なのが、違法改造車でなくても、そのようなルックスをした車であれば、この検問に参加させられ、およそ30分ほどの時間を持っていかれます。これは非常に迷惑ですね。何もしていないのに疑いをかけられるのは不愉快です!!!

f:id:umaaaaa_chan:20151029164130j:plain

Twitterbot

無料車検が開催されると、Twitterに情報が出まわることは経験からわかっています。いつもは辰巳PAで無料車検やってないかなーーーって検索してから辰巳に向かいます。
しかし、運転中にTwitterの検索画面を開くことはとても危険な行為ですね。
よって、自動でツイートを収集して「無料車検やってるっぽいな?」となったらbotに通知させよう!という考えです。

なぜTwitterかというと、IFTTTと連携すればプッシュ通知も行えるし、自分の好きな形態で通知を行うことができるからです。あとは作るのが簡単だったから……(小声

まとめ

本当は、ツイート内容を形態素解析にかけたり、係り受け解析にかけたりしたいんですが、とりあえず「辰巳 無料車検」のツイートがある程度引っかかったらbotが通知っていう形にしています。どれくらいの精度になるかはわかりませんが、とりあえずはこれで行きます。もし、ダメダメだったら係り受け解析とかにかけてみます。

ソースコードgithubに上げてあります github.com

PyConJP2015に初参加してポスターセッションしてみた

初参加のPyConJP

今年の4月?くらいにPydata.Tokyoのチュートリアルに参加したことを機に、PyConJPに参加してみようという気になっていました。Pythonを始めたのがちょうど1年程前で、本格的にさわり出したのが今年の3月位からです。
スピーカーとして登録する気は全く無く、8月位までは普通に聞きに行く予定でした。学生は5000円だし学生のうちにこういうのに行っておこうかなって思ってたので!

ポスターセッションでスピーカーとして参加

IoTに特化した機械学習利用ツールの作成
ポスターのリンクはこちら

IoTをこれから行おう!と思っている人に向けたツールを作っています。複数のセンサを用いてIoTデバイスを作りたいと思うと、閾値の設定やアルゴリズムを考えるのが難しくなります。そこで、センサ値を機械学習にかけて閾値を算出しようという試みがあります。しかし、これからIoTを始めようと思っている人に、機械学習を使用させるにはやや敷居が高くなってしまいます。そこで、オンライン機械学習の一つである、Jubatusを利用した機械学習をサポートするツールを作っています。

やってみて

うまー「こんな技術力のない自分が発表なんて……ましてやPyConJPだぞ……」

とか言っていたんですが、ポスターなら緊張もしないし、得られるものも多くて勉強になるかなって意味で、本当に軽い気持ちでポスターセッションに応募しました。
実際にポスターセッションをやってみると、Python歴、エンジニア歴が長い方からのアドバイスや、質問を多く受けることになり、自分なりに得るものが多かったです。現在、作成しているツールはβ版として、あまり人にお見せできるものではないので、今回はデモは行わなかったのですが、今年度中にはちゃんとしたものをリリースしたいと思っています。

全体の感想

大きなカンファレンスは、2015/08/22~25に行われた、YAPC::Asia Tokyo 2015 が初参加だったのですが、

  • 正直自分はPerlの知識はない
  • 参加費も無料
  • 来年からPerlの会社で働く

という理由で参加してました。正直なところ、何を言ってるかわからないことが多かったですwwwでもきっといずれわかる日が……って感じでした。
でも今回は、自分の好きな言語であるPythonのカンファレンスということもあって、色々やりたいこと、これから趣味で作ってみたいものというのが多く出てきました。

トークのメモは結構量が多くなってしまったのでまとめて後で備忘録的な目的で上げたい

吉祥寺.pm5で人生初LT

吉祥寺.pm5でLTしてきました!

吉祥寺.pmの存在を知ったのは、今年の第二回Perl入学式の懇親会で、@htk291さんに声をかけられて知りました。そして、吉祥寺.pm4へ参加し、YAPCにも参加し、って感じでPerlのコミュニティに徐々に参加しています。

YAPCが終わり、YAPCリジェクトコンで@magnolia_k_さんに
「LTやんなよ」
と言われ、なんやかんやで
「LTやります!」
と言ってしまったことから始まりました。

とにかくPerlのネタどころか全然ネタが無かったので、自分がよくやっているIoT関連の物でもやろうかなって思ってそっち系の発表してきました。
実際、色々なところで、Perlを使ってPerlを勉強していきたいと思っているので、これからもっと勉強していかなければ!!!ってなっています。

LTスライド

スライドは、使ってみたかったrevealupを使ってマークダウンで書いてみました。でもpowerpointとかkeynoteのほうが作るの早そうってなりましたwww