in my 雑記

プログラミング bump 日々のことなど

客先常駐SEは絶対フリーランスの方が儲かる

随分、久しぶりの記事になってしまった。
最近何をしていたかというと、会社を退職した。
記事のタイトルの通り、フリーランスになりたかったからだ。
フリーランスになった理由は単純で、

儲かるからだ

日記も兼ねて、会社員時代と比べるとどの程度変わったかを書いておく。

どの程度儲かるの?

私の会社は初任給こそ、まずまずだが全く昇級しないという会社だった。
私は入社4年目で退職したが、会社員時代のスペックはこんな感じ。

勤続年数:4年
業務:基本設計〜受入テスト
言語:Java,VB.net,javascript,html,css
年収:330万ぐらい

入ってから昇給したのが1万円に満たない。
また、ボーナスが20万以下。
パワハラもないし残業もそんなにない会社だったけど、
給料が上がらないとモチベーションも上がらないってことで退職を決意した。

で、フリーになっていくらになったかっていうと、月単価65万円に上がった。

仕事が途切れなければ年収が、

780万円

まで上がったことになる。
450万円のアップだ。
しかし、年収の単純比較なんて意味がない。
フリーは税金が色々かかるのだ。

税金等を考える

フリーになると社員時代より税金がかかる。
今まで会社が半分出してくれていた、健康保険、厚生年金は全額負担になるし。
しかも厚生年金はもらえなくなって、国民年金になる。
厚生年金は平均月15万円ぐらいだが、国民年金は平均月6万年ぐらいだ。
ボーナスも退職金も交通費も出なくなる。

そこで私は厚生年金と退職金を下のものに置き換えることにした。
厚生年金⇨個人型確定拠出年金 7万(誰でもできる年金積立制度)
退職金⇨小規模共済年金 7万(個人事業主向けの退職金積立制度)

毎月もらえる金額からこれらの金額を引いて考えてみる。
65(月額)-7万(確定拠出年金)-7万(小規模共済)-2万(交通費)-5万(ボーナスを月額換算)-2万円(有給を月額換算)-5万(年金、保険、税金)=37万

大体会社員で37万ぐらいの手取りで考えたら良さそう。

メリットとデメリット

上ではお金にまつわる話をしたが、
ざっくりとフリーになるメリットデメリットをまとめてみた。

メリット

・収入が増える 。
・好きな仕事が選べる 。
・嫌なら会社員より辞めやすい 。

デメリット

・ローンが組みにくい。
・仕事が入らなければ無収入。
・高齢だと働きにくい。

私の場合は、ローン組むつもりもないし、今ITは人で不足で仕事が空くのは
ここ数年で考えずらいし、そもそも私のいた会社でも高齢者は働いていなかったので、 フリーになることを決めました。

まとめ

フリーになるか悩んでる客先常駐で働いているSEがいて、給料が欲しいなら、フリーランスになることをおすすめしたい。

自分に技術力が自分にはないから、と敬遠しているなら、現在自分がいくらで契約されているか聞いてみるといい。その金額はフリーになってももらえるはずだ。

私は65万円だった。

毎月約30万円も会社にお金を入れていたのだ。

そして私は自分の会社が今後、急成長するとも考えずらかった。
入社して色々、勉強させてもらったが、先がないものに対して、こんなにお金をつぎ込むのは勿体無いなと思ったからフリーになった次第だ。

pythonで簡単にguiアプリが作れるeelを試してみた

eelはelectronのサーバサイドの処理をpythonで書けるようにしたものです。
前からpythonのguiアプリは何がいいかと思っていましたがこれはかなりいいです。

html + css + jsで書けるのでwebの人も簡単に使えるし、パッケージ化もすごく簡単でした。
ちょっとしたpythonの処理をgui化して人に配布したい場合はこれ一択な気がします。
とりあえず、以前気になっていた「画像をミニチュアっぽくする処理」をguiアプリ化したいと思います。

www.uosansatox.biz

やりたいこと

・eelみたいなものを待ち望んでいた。
・仮想DOM的なJSフレームワークを触ってみたい。(vueがgoogleトレンドで強かったのでこれにした)。
・bootstrap4リリースされたから触ってみる。
・配布できる形までもっていく。

eelの使い方(サンプル)

ファルダ構成は以下のように配置します。
以下のサンプルはjs-python間でデータの受け渡しの例です。

web-hello.html
hello.py

hello.py

# pip install ellでインストールしたellをインポート
import eel

# フォルダ構成で作ったwebファイルを読み込みます
eel.init('web')

# @eel.exposeを関数の前につけるとこの関数がjsでも呼べるようになります。
@eel.expose
def say_hello_py(x):
    print('Hello from %s' % x)

# 上で宣言した関数はpythonでも呼べます
say_hello_py('Python World!')

# eel.xxxでjsで宣言した関数も呼び出すことができます。
eel.say_hello_js('Python World!')

# hello.htmlを読み込んでellをスタートします
eel.start('hello.html', size=(300, 200))

hello.html

<!DOCTYPE html>
<html>
    <head>
        <title>Hello, World!</title>
        
        <!-- ell.jsインクルード -->
        <script type="text/javascript" src="/eel.js"></script>
        <script type="text/javascript">
        
        // eel.expose(XXX)でこの関数をpythonから呼べるようにします。
        eel.expose(say_hello_js);
        function say_hello_js(x) {
            console.log("Hello from " + x);
        }
        
        // pythonで宣言した関数をjsで呼びます。
        eel.say_hello_py("Javascript World!");
        
        </script>
    </head>
    
    <body>
        Hello, World!
    </body>
</html>

作ったもの

github.com

pythonがインストールされている環境なら

python run.py

で実行できます。
画像を選択して、convertで変換する簡単なアプリですがとても簡単にできました。
以下のコマンドでパッケージ化もできます。

python -m eel run.py web -noconsole

感想

web言語を使ってpythonでguiアプリを作れるのは素晴らしい。
以前はelectron&flask等でもできたけどこっちのほうが圧倒的に簡単。

pyhtonを入れたらとりあえず入れるライブラリ

PCをクリーンインストールしたので、よく使うライブラリをまとめた。
anacondaとかでまとめて入れてもいいけど、いちから入れたほうが最小限で済むので好き。
個人的なメモ。

sqlite3

slite(DB)に接続、操作する用のライブラリ。
ちょっとした、スタンドアロンのアプリとか、軽いスクレイピングデータ保存するときとかに使う。 sqliteは並列処理に弱いため、スクレイピング処理が遅くて並列処理にしようと思ってsqliteを使っていると、
DBごと変更せざるおえなくなる。
あくまで、ちょっとしたものを作るときに使う。
sqliteはデータを単一ファイルで持っているのでいろいろ手軽。

pip install sqlite3

psycopg2

postgresql(DB)に接続、操作するようのライブラリ。
sqliteで物足りないときに使う。
使い方はsqlite3とほぼ同じなので、移行しやすい。

pip install psycopg2

tqdm

プログラムの進捗をプログレスバーで表示してくれる。
超手軽にプログレスバーをつけてくれる、開発時にとりあえずfor文につけておくと便利。

pip install tqdm

line_profiler

プログラムの時間がかかる個所を分析するライブラリ。
関数にアノテーションをつけるだけで使える。

pip install line_profiler

joblib

並列化用ライブラリ。
高速化のために色々試みたけど、どうにもならんってときは並列化が手っ取り速い。
並列化ライブラリの中ではとても簡単にかける。

pip install joblib

requests

HTTPリクエストを返してくれるライブラリ。
スクレイピング、クローリングには必須。
デフォで入ってるurllibより簡単に短く書ける。
セッション管理もできるので、ログインするサイトとかにも使える超万能。

pip install requests

beautifulsoup4

HTTPリクエストからほしい要素だけを抜け出してくれる。
requestsとセットで使う。
スクレイピング、クローリングには必須。

pip install beautifulsoup4

selenium

requestsだとjavascriptのレンダリングまでしてくれないのでその時に使う。
後webブラウザの自動化をしたいときに使用。
自動化するブラウザはchroniumが良い。
ただし、javascriptのレンダリングだけならSplash使うとよさそうだと思う。

pip install selenium

tensorflow

機械学習用のライブラリ。 windowsだとpython3.5の64bitじゃないと動かないので注意。
googleが開発しているので今後も伸びていくだろう。

pip install tensorflow

keras

tensorflowを簡単に使えるラッパーライブラリ。
kerasはjavascriptやらjavaやらでも使える。
機械学習=pythonだと思っていたけど、今はどんな言語でも簡単にできるようになった。

pip install keras

pandas

データ構造という形式で配列の操作ができるライブラリ。
私はmatplotlibでデータを可視化するときぐらいしか使ってない。

pip install pandas

matplotlib

データをグラフ表示するライブラリ。
pandasと一緒に使う。

pip install matplotlib

codecs

txt、csvファイル操作用ライブラリ。
デフォでも入っているが、こっちのほうが文字コードに強い。
UnicodeErrorにあいたくないならこっちを使ったほうがいい。

pip install codecs

flask

ウェブアプリのフレームワークライブラリ。
1分でローカル環境でハローワールドできる手軽さが最高。
あとラインのapi使うときとかに重宝する。

pip install flask

line-bot-sdk

ラインのapiを使うためのライブラリ。
flaskと一緒に使うと手軽。
ラインボット作るときに使った。

pip install line-bot-sdk

twitter

作ったシステムのログをtwitterで吐くのに使ってる。

pip install twitter

google-api-python-client

googleapiは多岐にわたるgoogleの様々な機能をapiを介して使用できる。
ただ、googleapiはほとんどの機能が有料でしかも高い。
無料で使うなら機能は結構制限される。

pip install google-api-python-client

PyDrive

googleapiのgoogledriveを操作するラッパー。
サーバー間のデータのやり取りならftpを使うよりこっちのほうが手軽にできるし、
同時にバックアップも取れるし、一石二鳥。

pip install PyDrive

AIR 夏影 ソロギター

youtu.be

KEYのゲーム「AIR」の観鈴のテーマ「夏影」を弾きました。
音量の緩急をつけることを意識して弾きました。
テレビを見ながら、ギターを弾くのは好きだけど、録音するとなると
途端にめんどくさくなるのから、録音していない曲が溜まっていく、、、

次はテンポの速い曲を弾いてみようかなぁ。

pythonでgoogle driveを操作する

pythonでクラウドストレージを色々いじってみたらgoogledriveが一番簡単に操作できたので、紹介します。

準備

・google apiに登録して「クライアントID」、「クライアントシークレット」を取得する。(以下参考) qiita.com ・google apiのライブラリ「google-api-python-client」とそれを使いやすくしてくれるラッパー「PyDrive」をインストール。

pip install google-api-python-client
pip install PyDrive

・google apiに認証する情報を記載した「settings.yaml」を作成。api登録時に取得した。「クライアントID」「クライアントシークレット」を記載。

client_config_backend: settings
client_config:
  client_id: <クライアントID>
  client_secret: <クライアントシークレット>

save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json

get_refresh_token: True

oauth_scope:
  - https://www.googleapis.com/auth/drive.file
  - https://www.googleapis.com/auth/drive.install

プログラム

settings.yamlと同階層でイカプログを実行してください。

# -*- coding: utf-8 -*-
################################################################
# メインプログラム
################################################################
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

################################################################
# 承認
################################################################
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)


################################################################
# サンプル1
################################################################

# Hello.txtテキストを作成し中身に「Hello」と記載。
file1 = drive.CreateFile({'title': 'Hello.txt'})
file1.SetContentString('Hello')
# アップロード
file1.Upload()



################################################################
# サンプル2
################################################################

# 一覧を取得し表示
file_list = drive.ListFile({'q': "'root' in parents"}).GetList()
for file1 in file_list:
  print('title: %s, id: %s' % (file1['title'], file1['id']))



################################################################
# サンプル3
################################################################

# 指定したIDのデータを削除
file3 = drive.CreateFile({'id': "1WvL7H71lI-cdeAA0wYUtk7T_K-LytRWZ"})
file3.Delete()



################################################################
# サンプル4
################################################################

# 指定したIDのデータをダウンロード
file3 = drive.CreateFile({'id': "1WvL7H71lI-cdeAA0wYUtk7T_K-LytRWZ"})
file3.GetContentFile('hoge1.txt')


################################################################
# サンプル5
################################################################

# ローカルにあるdata.txtをアップロード
file2 = drive.CreateFile()
file2.SetContentFile('data.txt')
file2.Upload()

終わり

データのアップ、リスト取得、ダウンロード、デリートのやり方を紹介。
ひとまずこれだけできれば、ファイル操作はなんでもできそう。

はてなブログの新着記事を500件表示するサイトを作った

www.jeta.work

久々にはてなブログを更新して、
サイト巡りでもしようかなと思ったら、

新着記事を表示するページが消えていた、、、

調べてみると、こんな記事が、、、

staff.hatenablog.com

はてなブログは横のつながりが大きいことがメリットだったのに、新着サイトが消えてしまうのはとても残念。
あと、新着サイト眺めてると思いがけない情報を知ることができたりして、面白いんだけどなぁ。

と言うことで、
新着記事(新着エントリー)を500件表示してくれるサイトを作りました。

このサイト

すごくシンプル。
新着サイトを昇順で表示します。
以前よく見ていた、新着記事500件表示してくれるサイトが見れなくなっていたので、それに倣って作りました。

技術セットは
pyThon(flask) + postgresql + nginx + CentOS7
uiにgoogleさんの提供してる「Material Design Lite」を使ってみた。
デザインセンスがまるでないので、こう言うのは本当にありがたいですね。

ぜひ、ご活用ください。

ブログを開始して17日でgoogleアドセンスに合格した方法

お久しぶりです。
じぇーたです。

ブログをやっている人なら、
アドセンスでお金儲けできたらと思うだろう。

私はなんとなくブログを始めたクチだが、
はやり、やるからにはお金が稼げたらと思った。

なので今年の9月ぐらいからアドセンスに承認されるために奮闘した。
まずは手っ取りばやく、このブログが承認されればいいんだけど、だめだった。

このブログは計6回審査してもらった。

このブログでやったことは以下。
・プライバシーポリシー設置
・お問い合わせ設置
・ポリシーに準拠していない記事の削除
・文字数を増やす
・記事の中に見出しを設定する
・少ないカテゴリを削除
・文字数の少ない記事の削除

コンテンツ不足ではなかったため、何かしら引っかかる要因があったのだろうけど、
試行錯誤してもわからなかったので、新しくサイトを始めることにした。

審査用ブログを作る

そこで、私のとった行動は審査用ブログを作ることだ。
ブログを修正するより新しく作り直したほうが速いと思ったのだ。
はてなproならブログを10個まで作れるし、ドメインなんて1個1円で買えるしね。

とりあえず40記事作って、1日2記事予約投稿することにした。
30記事を超えた日に申請を出して、審査期間2日(計17日)で合格した。
承認したブログはこれだ。

www.maxim-word.work

このブログは承認のためだけに作ったので、承認されてから全くいじってない。
どの程度で承認されるのか、気になる方はこのサイトを見るといいと思う。

承認されるポイントは以下のことだと思う。
・1記事あたりの1000文字は嘘。(平均1記事500文字で承認された)
・アクセス数は皆無でもいいと思う。(平均アクセス数は5人で承認された)
・記事に画像は必要ない。
・多少コピペしてもOK(審査用サイトを見てわかるように名言部分はコピペしている)
・酒、死、宗教等の言葉は使ってもOK(審査用サイトは使っていても承認された。良識の範囲ならOKなのだろう)
・カテゴリ分けはしたほうが良い。
・記事の見出しは設定したほうが良い。
・お問い合わせ、プライバシーポリシーはあったほうが良い。

結論は地道にテキストを書いていけば17500文字ぐらいで合格できるという話です。
このブログが承認されなかったのは、youtubeを貼っていたり(著作権的にセーフなやつ)、
プログラムで文章を加工したりしたので、機械的な文章と判断されたのかもしれない。

とにかく、やっと審査用ブログから解放されたから、
こっちのブログの更新を始めよう。