データサイエンティストのお仕事は大体データクレンジング(だと思う)

4月からデータサイエンティストとしてアサインされました。
逃げ回っていた統計、機械学習と対面する時が来ました(数字苦手マン)

上の謎の流れと圧力により
「こいつらデータ分析できるよ」ってノリで放り込まれた感じがします。
Pythonできるからデータ分析もできるってわけじゃあない。

・・・とそんな流れは置いておいて。
今回は時系列データに対して行ったクレンジングについて、
備忘録として記録していこうと思います。

内容については100%これがベストプラクティス!というわけでもないので、
こっちのやり方のほうがいいのでは?
というのがあればコメントなりTwitterなりで教えてください。
未熟な私の脳を皆さんの知識で補完していただけると大変助かります。

目次です

データが…きた…

今日からデータ分析チームに配属です。
まだこのチームにはお客さんからもらうはずのデータが来ていません。
配属から3ヶ月くらい、どんなデータがくるか予想に予想を重ねて準備をし続けていました。

さぁ、ようやくデータが来ました。
さっそく見てみましょう。

import関連はこちら(環境はJupyterNotebook Python3.6.10)

import datetime
import matplotlib.pyplot as plt
%matplotlib inline
import pandas as pd

エクセルで開こう

どんなデータでもまず中身を見てみないことには始まらないですね。
エクセルでもなんでもいいのでまずはデータを見てみましょう。

重いですね。数百MBあるcsvなので開くだけでもPCが発熱することでしょう。

無事に開けました。
文字化けせずにカラムもみれましたね。
きっとこの子はShift_JIS

Pythonで開こう

データ分析ということで頭の中にはPythonのPandasとNumpyしか浮かびません。
知ってる知識のままにとりあえずPythoncsvを読み込んでみましょう。

df = pd.read_csv("data.csv", encoding="shift-jis")

エンコーディングの指定を忘れずに。

クレンジングとやらをやってみた

今度は読み込んだcsvに対してデータクレンジングというものをやってみましょう。

Unnamedカラムに別れを告げる

どうやらデータを出力するシステムの都合上、不必要なUnnamedカラムが生まれてしまっている様子。
全てのデータに共通して不要箇所なので、この時点でお別れしちゃいましょう

unnamed_columns = [column for column in df.columns if "Unnamed" in column]
df.drop(columns=unnamed_columns, inplace=True)

日付の罠

このデータ、なんと年月月日がそれぞれ別のカラムになっています。

時間を扱うためには年月月日のカラムはdatetime64型であることが望ましいです。
なのでこのカラムを全部くっつけて、YYYY-MM-DD hh:mm:ss の形式にしていきましょう。

……っと、その前に一つ罠がありました。
実はこのデータ、24時が存在しているんです。

N月N日 24時0分
Pythonでは0時から23時59分までしか時間として有効ではないようです。

仕方ないので変換用の関数を一つ作ってしまいましょう

def str2datetime(year, month, day, hour, minute):
    try:
        result = datetime.datetime(int(year), int(month), int(day)) + datetime.timedelta(hours=int(hour), minutes=int(minute))
        return result
    except:
        return np.nan

ソースはこちらの回答を参考にさせていただきました。 teratail.com

一応これで24時0分時は翌日の0時0分として扱われます。
では全てのカラムをくっつけてdatetime64型にしていきましょう。

date = df.apply(lambda row:str2datetime(*row[["年", "月", "日", "時", "分"]]), axis=1)
df.insert(0, '日時', date)

これで安心ですね。
この24時の扱いで3日くらい悩んだ気がします。

抜けている期間をどうするか

今回のデータには抜けている期間がありました。
例えば、2020年1月から12月のデータがあるとして、そのうち3月だけデータが存在しない、という場合。

中身はなくとも日付が埋まっていればグラフ化した際にその部分だけ空白になり、 この期間はデータがないんだな、というのが見てわかります。

機械学習する際はNanの箇所を学習しても意味がないので
学習データに使う場合はNanは除外する必要があります。

今回は、日付を埋める方向で進めていきましょう。 まず全期間の日付でテンプレートとなるデータフレームを作成します

template = pd.DataFrame(
    pd.date_range(start='2020-01-01 01:00:00', end='2021-01-01 00:00:00', freq='H'),
    columns=["日時"]
)

あとはクレンジング途中のデータフレームをマージすれば完成です。

df = pd.merge(template, df, how="right" ,on="日時")

アスタリスクとかハイフンの扱い

データの中には、機器の故障により計測値が入っていない部分があることがあります。
システムによってどのような値が入るかは異なりますが、
今回は計測値のカラムに文字列のハイフンが混ざってますので、これをNanに置き換えていきましょう。

ハイフンをNanにするより、
計測値をfloat64にして変換できなかったものをNanにすればいいんだ、
という閃きの元こちら。

df[df.columns] = df[df.columns].apply(pd.to_numeric, errors='coerce', axis=1) 

文字コードUTF-8にして出力

df.to_csv("cleansing_data.csv", index=False)

pythonはデフォルトがUTF-8での出力らしいのでエンコーディングの指定は不要です。
これでまずは綺麗になりました、お疲れ様でした。

おわり

データクレンジングは意外と時間を奪われました。
本当はまだこの後ろにデータの加工(カラム追加して新しい数値を入れ込んだりとか)が入ってきますが、
それについてはまた今度書くかもしれないし書かないかもしれない。

今現在はデータの相関を見たり、閾値を設定したりとちゃんと分析チックなことをしています。
わからないことはまだまだありますが、勉強しつつ頑張っていきたいと思います。

ではまた。

DjangoCongress JP 2021 感想レポート

みなさんこんばんは、もひんごです。

コロナによる自粛が始まって早1年、この1年で多くのオフラインイベントがオンラインへ移行していきました。

その結果、
今まで地方で参加できなかった方が参加できるようになり、
自分のペースでお酒やおやつを食べながら発表を聞くことができるようになり、
見逃したイベントはアーカイブで閲覧できるようになる、などと多くの恩恵を受けることができました。

しかーーーーーーーし!!

オフライン恋しくないですか!?

直接会場で発表を聞く!
発表者と懇親会で話をする!! 普段Twitterでしか会話しない知り合いと直接話をする!!!

恋しいですよね、オフライン!!!!

※オフラインイベント大好きだったのでうるさいですがもうすぐ大人しくなるのでちょっと我慢してください。

そんな中、今回、久しぶりの、オフラインイベントが、なんと・・・・・!!!!

開催されましたーーーーーー!(どんどんぱふぱふ

さて、ようやく本題です。

今回もひんごが参加してきたのはこちらのイベント

f:id:ohitoyoshilab:20210704224043p:plain
DjangoCongress JP 2021

djangocongress.jp

オフラインとオンラインのハイブリッドでの開催にチャレンジしたイベントです。
去年、長野での開催を予定していたこのイベントですが、コロナで開催が厳しい状態となり断念。
なんとか今年開催することができたようです。

開催まで漕ぎ着けてくださったスタッフのみなさん、本当にありがとうございます。

では早速発表の紹介と簡単な感想を述べていきたいと思います。
残念ながらもひさんはDjangoは初心者レベルですので、
深いところには触れないように慎重に感想を述べて行こうと思います(笑)

Django 3.2 ASGI対応 - こわくない asyncio 基礎とasync viewの使い所

speakerdeck.com

怖くないと言われると怖いですよね。
題材がASGIとasyncioです。みんな怖い非同期です。

asyncioとは何か?

並行処理のコードを書くためのライブラリ

ここで優しい展開がきます。
順次処理(逐次処理)、並列処理、並行処理の解説が入ります。

イラストを駆使した説明のおかげで初めてasyncioについて学ぶ人でもすんなり聞くことができました。
ネタバレは避けますがおすすめはxxを手のひらで転がす女性です。

RLSを用いたマルチテナント実装 for Django

www.slideshare.net

これは私にはわからないだろうなーってタイトル見て思いました。
が、なんと発表を最後まで聞くと わかる、わかるぞ! となるのです。

完全初見のRLS(Row Level Security)も説明を聞くとあ〜なるほど、となります。
行レベルのアクセス制御、最後まで聞くとわかりますよ〜。

ちなみにテナントごとにDBを共有するか分離または準分離するか、というお話の最中、
登壇者さんVS同社社員さんの熱いバトルがありました。

バトルの模様は動画をご覧ください。
(バトル直前)
https://youtu.be/BLfO79jJO2c?t=4012

Djangoでのプロジェクトだって型ヒントを運用出来る!

speakerdeck.com

この日、私と同い年であることが判明したみずきさんです。

実際に行われているプロジェクトを題材に、
Djangoに型ヒントを組み込んでいった経緯などを説明してくださり、
より応用に近い内容として聞くことができました!

そんなに社内の事情出して大丈夫なの!?と聞きながら思いましたが、
ちゃんとサンプルコードを用意したりして社外秘なものはでないように配慮されてました(そりゃそうだ)

元のコードを改善していく過程も詳しく説明されていたので、
あぁ〜わかるわかる、と共感しやすい内容でとても楽しめましたね。

途中の休憩タイムもクスッときます。

Django管理サイトをカスタマイズする前に教えてほしかったこと

speakerdeck.com

意図せずして私の推しです(akiyokoさん著書の本コンプ ※実はコンプしたのはこのイベントの最後)

多分初心者は絶対に触れないであろう管理サイトのカスタマイズに関する発表です。

見やすい資料とわかりやすい説明が印象的です。
私はまだこの技術は使わないだろうなと感じましたが、
管理サイトのカスタマイズのためのメソッドや説明が簡潔に記載されている資料は永久保存版ですね。

未経験者のDjangoでの個人開発

speakerdeck.com

期待の新人、可能性の塊、天才、やばい、すごい

本当に高校生ですか?と疑いたくなるような素晴らしい発表でした。

自分自身を的確に振り返り、次に何をすべきか分析し、それを繰り返していく。 一般の人でもなかなか難しいことを17歳でやってのける姿には脱帽です。

未来を感じる発表をぜひ見ましょう。

Securing Django Web Applications

speakerdeck.com

追記 スライドを翻訳したので少し書きます。
OWASP(Open Web Application Security Project)の脆弱性トップ10が説明されています。
SQLインジェクションについてや、今後MFAが必須になっていくことや、
XMLのデータを送るよりもJsonなど複雑でない形式を利用べきなどが書いてありました。
セキュリティ対策を行う際、参考にみると良い資料だと思います!

Django & Celery in production

speakerdeck.com

celery?セロリ?
f:id:ohitoyoshilab:20210705000915p:plain

怒られそうですが、もひさんcelery聞いたことないんです…( ;∀;)
今度こそ本当わからない話でぼーっとすることになるかなって思ったんですが…

わかるんです!

非同期するやつらしいです!(序盤のasyncioとどう違うんだろ)
メッセージ送信とかメール送信につかうらしい。

わかりやすい図と説明でceleryの仕組みの説明から、
リトライ設計の大切さ、そしてそれを実現するためのceleryメソッドなどが説明されました。

celeryを雰囲気で使ってる方には是非見ていただきたい発表ですね。

理解して使いこなすDjangoのForm機能

www.slideshare.net

あ、私にもわかる!Formだ!
とウキウキしました。  

ラストの発表なのでお腹が空いております。
最後までしっかり聞くために気合入れました。

Fromの構成要素を触って理解する、という初心者にも大変優しいスタートです。
Django shellを使いこなし、Formの中身がどうなっているかを紐解いていきます。

全92ページの超大作資料です。
30分ではおさまりきらなかったため一部割愛となりましたが、資料だけはあとでしっかりと読ませていただこうと思いました。

validationのerrorはただのdictではない!?

じゃんけん大会

清水川さんから「独学プログラマー」と「自走プログラマー」、
akiyokoさんから「Django管理サイトのつくり方」が3冊寄贈されました。

オフラインです。

やることは、一つ!

じゃんけん大会!!!!!

ネタバレするともひさん「Django管理サイトのつくり方」をゲットしております!!

ここでakiyoko本を全コンプリートになるわけですね。

じゃんけん大会の模様も動画に残っておりますので、ぜひ最後まで見てみてください!

まとめ

オフラインイベントはいいぞ。

お疲れ様でした!

【感想】カイゼン・ジャーニーを読んでみた

お久しぶりです、もひんごです。
近況ですが、「とりあえず元気」です。

今回紹介する本はこちら

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで | 市谷 聡啓, 新井 剛 | コンピュータ・IT | Kindleストア | Amazon

この本は、ソフトウェア開発の現場を変えていく方法を物語形式で書いた本です。

プロジェクトの掛け持ち、抜け漏れの多いタスク、意味のない振り返り、など
どこかで経験したことあるような問題を少しずつ改善していこうと歩み続ける主人公の物語です。

個人的にこの本のいいところは、
「一人から始める」 がスタートなところです。

感想

あまり感想を述べるのが得意じゃないですが頑張って書いていきますね!

先ほども言いましたが一人から始める、というスタートがこの本に惹かれたきっかけかもしれません。
最初はやっぱり一人なんです。
でも一人では何もできない、と痛感することもありました。


少し私の現場の話をします。

私の現場は某大手企業のグループ会社で、
開発手法のメインはウォーターフォール

私が参画したプロジェクトはまだ立ち上がって間もないものでした。
メンバーは、チームの要の先輩、新卒、そして開発未経験の私、プロジェクトリーダーの4人。

そして半年が過ぎた頃「アジャイル」の導入が始まりました。

今となっては誰がアジャイルを組み込もうとしたのか覚えていません…
ただ、始まったアジャイルは「いつ要件を変更してもいい」「ドキュメントは不要」 という典型的な間違ったアジャイルをしていました。

途中、スクラム研修などを挟み、みんなでアジャイルとは、に向き合ったことはよかったと思います。
ですが「正しいやり方を知ってる人」が誰もいなかったために、
プロダクトオーナーが役割を果たさないなどトラブルが起きて最終的には先輩が会社を辞めていきました。

先輩が辞めた後、プロジェクトは少しずつ人数が増えていきました。
私が実質的なリーダーを担当するバックエンドチームには、
スクラムのやり方やタスクの管理、振り返りの知識を可能な限り伝えていきました。

ですがそこまででした。
知識も深くないですし、途中で知識の吸収を辞めてしまった私にはそれ以上広げることはできませんでした。
今その現場はメテオショートウォータフォール(スクラムのつもり)をやっているそうです。


…と、長くなりましたが、私の経験です。
当時もっと知識があれば、そして動きを止めている自分に言葉をくれる誰かがが一人でもいれば、と思うことがあります。

この物語の主人公は、知識がないけど現状を変えたいという意思を持ち、
とある人物に「君は何をしている人?」と問われ何も答えられなかった自分を恥じます。

そこから彼の行動が始まり、一人から二人へ、二人からチームへと改善の動きを広げていきます。
現実はここまで簡単にはいかないと思いますが、それでも一歩ずつ着実に進めていく主人公の姿は好きです。

ちなみにこの物語は、ただのタスク見える化やコミュニケーションの工夫から始まり、
徐々にスクラムのやり方にシフトしていきます。
最初からスクラムが〜アジャイルが〜と語られているわけでもないので、初心者向けとしても読みやすいですね。

あと振り返りの大切さがよくわかります。
リアルな要件ちゃぶ台返しが何度も起こり、その度に主人公らはそれぞれ場面に応じた振り返りや、
「向き直り」というやり方を実施していきます。

後半は問題が複雑化する場面が多く、コラムも難しくなっていきますが
まずはさらっと読むのがいいかと。私も1週目終わったのでもう一度読み直す予定です。

感想、以上です!

このプロジェクトはこういうプロジェクトだから…
と諦めないで、この本読んで自分だけでも快適な仕事をしていきましょう!

Docker buildが始まらなくてちょっと困った話

こんにちは、もひんごです。
結論から言うとこちらの記事を参考に.dockerignoreを設定して解消しました。

qiita.com

事象

今回ご紹介するコマンドはこちら!

docker build -t xxx .

皆様よくご存知かと思います、そうdockerのbuildコマンド!

こちらを実行してみるとあら不思議、いつもはすぐはじまっていたビルドが始まらない!
なんのエラーもなし、本当に何も映らないので困り果て、調べてすぐ冒頭の記事を見つけました(すぐでよかった〜)

原因

記事を読んですぐピンときたんですが、
Kubernetes上で使うコンテナを生成するために、色々試行錯誤してデータをインストールしてたんですよ。
で、DockefileがあるディレクトリにAnacondaをインストールしたわけです。
(このディレクトリは永続ボリュームとして使ってたので、必要なものは全部ここにインストールしてました)
頭のいい人はもうわかるかと思います。


そう、Anacondaはめっちゃ重い。



Dockerは、ビルド時に指定したディレクトリのデータを一度全部読み込むらしいです。
私はディレクトリを指定してなかったので、Dockefileが置いてあるディレクトリのデータが全て読み込まれていたようです。
Anacondaは4GB近いサイズなのでそれを全て読み込んでいたとしたら、ビルドが進まないのは納得です。

対応

冒頭でさらっと書いてしまいましたが、.dockerignoreを利用しました。
gitの.gitignoreを使ったことがある方はすんなり馴染めるかと思いますが、ビルド時に読み込まないデータの指定をこのファイルで行います。

私は無視したいディレクトリが2つだけだったので書き方に悩むことなく終わりましたが、
階層も考慮して記載する場合など、少し.gitignoreと異なる点があるので以下の記事を参考にしてください。

qiita.com


個人的な備忘録でした。
困ったら焦らずネットの海に助けを求めましょう。(情報の取捨選択は大事)

初めてのkubernetes 学習振り返り


もひんごです。
初めてKubernetesのAdvent Calenderに参加してみました!

(ギリギリ投稿です、誠に申し訳ございません)


本記事は
Kubernetes2 Advent Calendar 2020 の23日目の記事になります。

初心者がKubernetesの勉強法を振り返る

初めてK8sの存在を知ったのは昨年12月頃。
現在所属するプロジェクトにリリース見込みが立ったのが始まりでした。

このプロジェクトは開発者が全員Macを貸し出されており、開発環境にはDockerを利用していました。
そのためDockerコンテナを最大限に生かす、今後予定されている大規模トラフィックに耐えられる運用をする、という状況からKubernetesが選ばれるのは必然だったのかもしれません。

実装をしたのは当時プロジェクトにいた凄腕エンジニアの先輩です。
この頃はまだ私もそこまでインフラ側に首を突っ込むことなく、細々とAWSを触っていたぐらいでした。

---

そして翌年2月頃。
ド修羅場ミーティングを得て先輩はプロジェクトから、そして会社からドロップアウト

残されたのは同僚と私の2人だけでした(プロジェクトが小さくてそもそもエンジニアは3人しかいなかった)

 

「よし、いっちょKubernetes学んじゃいますか!」

 

①そしてggった


というわけで以下のページが最初でした。

kubernetes.io


Kubernetesとは何か、から始まりチュートリアルも軽くこちらのページで実施しました。
しかし、そこは業務、チュートリアルの内容が全く生かせない!


次は本にしよう!ということで職場にあった本をお借りしてきました。

②本を読んだ


(実際に借りたのは第1版の方です。後に発売された2版のちゃんと買いましたw)

初学者にも読みやすい図解の多い一冊です!
多分初めてKubernetesをやるのであれば持っていた方が無難かもです笑

 

ただ現在もですが、本はページが多すぎて読み切ってません…

たまにリファレンスとして使ってます。

 

ここまでやって得たスキル

・kubectlのコマンドが少々使える

・リソースのyamlが少し読める

Kubernetesの構造がわかる

 

…あんまり多くないですね、はい笑

1年つきっきりでやってたらもうちょっと変わったかもしれないです。

 

Kubernetes完全ガイドは全部読み切る&理解すればKubernetesマスターになるそうです。

学習の指標として理解できているorできていない、を見るといいかなと思います。

 

今後もKubernetesの学習は続けていきます!

来年はもっと技術的なAdvent書けるように頑張ります!

 

pythonのドキュメント検索botをdiscord版からslack版にしてみた

こんにちは、もひんごです。
今年もPython Advent Calenderに参加です。

本記事は Python Advent Calendar 2020 の18日目の記事になります。


発端は同僚の一言でした。

PythonのドキュメントをSlackで検索できるBotが欲しい」

私はこのBotに見覚えがありました、そうこれです。

f:id:ohitoyoshilab:20201218002525p:plain
pythonのdiscordサーバで試したもの

discord.bots.gg

そしてここから深夜のチャレンジが始まったのです。

開始 0時〜

まずはよく覗いてるPythonのコミュニティで呟いてみて、誰か拾ってくれないかと待ってました。 結局Dannyをオススメされたので頑張ってみることに。

github.com

PythonのドキュメントはSphinxというドキュメント生成ライブラリによって生成されているらしいです。
なのでDannyがSphinxのデータを読み込んでるっぽいところを読み解いて探せばいいのだと理解。

読んでも理解できない\\\٩( 'ω' )و ////

他人のソースを読み解くのは得意ではない私です。
見慣れないcogとかと戦いつつソースを読んでいきます、時々コミュニティの参加者からヒントをもらいながら進んでいきます。

まず当たりを付けてみました。
呼び出しコマンドが「rtfm」なので、それらしきコマンドの関数とかがあるのではないかと踏みました。

ありました、async def rtfm(self, ......)

と思ったらどうやら違う様子。 インベントリファイルとやらを読んでるのはSphinxObjectFileReaderだと教わり、その辺を探してみることに。

この時点でインベントリファイルってなんだ、SphinxObjectFileReaderってなんだ関数か?と色々頭をよぎりましたが、「まずは探そう」の精神でソースから当該の箇所を見つけてみる。

1時間30分、それっぽいところを探すのに費やしましたorz

1時30分〜

見つけました。
async def build_rtfm_lookup_table(self, ......) という関数。

試しに、URLを指定してるっぽいところとかを書き換えて、まずは動かしてみようと思って部分的にソースコードをローカルに持ってきました。

if __name__ == "__main__":
    resp = requests.get("https://docs.python.org/ja/3/objects.inv")
    if resp.status_code != 200:
        print("失敗", resp.status_code)

    stream = SphinxObjectFileReader(resp.read())
    result = parse_object_inv(stream, "https://docs.python.org/ja/3")

そして突きつけられるエラー。

Traceback (most recent call last):
  File "example.py", line 114, in <module>
    stream = SphinxObjectFileReader(resp.read())
AttributeError: 'Response' object has no attribute 'read'

一応エラーの意味だけ書いておくと、
このエラーはResponseオブジェクトの属性に「read」が存在しないと言っています。

実は元のソースのgetではこのように記述されていました。

async with self.bot.session.get(page + '/objects.inv') as resp:
                if resp.status != 200:
                    raise RuntimeError('Cannot build rtfm lookup table, try again later.')

私は全然使い方を知らなかったのですが、ここではaync、aiohttpと呼ばれる非同期処理でなんやかんやするものが使われていました。
しかし私はこれを、getを使っているしrequestsと同じようなものではないか、と勘違いしたのです。

深追いはしてないですがおそらく、

async with self.bot.session.get(page + '/objects.inv') as resp

で得られるオブジェクトはresponseとは違う型のものなのでしょう。
そしてそれだからこそread属性が使える、と。 (私はattributeの直訳で属性と言いますが、属性の種別的にはメソッドなのでそちらの方がわかりやすいかもしれないです)

とまぁちょいちょい勘違いを重ね、aiohttpをなんとなく調べてソースを書き直してみました。

そして寝落ち

コミュニティへ投げていたチャットは1時50分くらいで途切れていました。

果たしてbotは完成するのでしょうか…!


続きを読む

会社員からフリーランスになるために

こんにちは、もひんごです。

フリーランスになってから1年経ちました。
周りでも転職を考える人や、フリーランスを勧められた人などを見かけるようになったので、
自分が会社員からフリーランスになった際にやったことをまとめてみようと思います。

(私はやってなかったけどやっておくといいよ、も書いてます)

目次

前提

・会社在籍期間:2年
社会保険加入:有り
・業務形態:SES
・退職連絡:退職日の2ヶ月前

退職前の準備

フリーランスになる・ならない関係なく、まずは退職について準備を進めていきましょう。

会社の就労規則から、以下の2点を確認してください。
・退職の申し出の期限
・有給の利用期限

まず、退職の申し出の期限
法的には2週間前に会社に申し出ることで退職が可能となりますが、会社によっては1ヶ月前と記載されていることもあるようです。
自身の退職日から逆算して、いつまでに伝えるべきかは確認しておきましょう。

次に、有給の利用期限です。
私の実体験ですが、私が所属していた会社では退職日から遡って14日間は実勤務が必要という規則がありました。
自分の有給がきちんと使い切れるように、この辺も確認しておきましょう。

退職時に貰う書類の確認
退職時に貰うもの、それは「離職票」です。
基本的に離職票の利用用途は失業手当を貰う時に提出するもの。
すぐにフリーランスになる人には不要では?

と、思っていた時期もありました。


私は以前、別の会社を退職した際に給料が一気に減り、年金が払えない状態でした。
その時勧められたのが離職票を使っての「免除申請」です。

退職日から最大で2年間の年金を減免または免除の申請を行うことができます。
ただし、未婚だけど同棲中など、
住所を共にしていて且つ収入がある人がいる場合は通らないので注意が必要です。

離職票は、必ず送付してくれる企業もいれば、くださいと言わないと送ってくれないパターンもあります。
退職時に離職票が必要な旨を伝えておくといいでしょう。

※きちんと年金を支払いたい方、支払う余裕がある方はこの申請は不要です。
 ちなみに免除してしまっても追納ができます。

開業準備

フリーランス個人事業主)として開業するために
以下のものを用意をしておきましょう

✅ 開業届
✅ 事業用クレカ
✅ 事業用口座
✅ 事業用名刺

実はここ、私は苦労した点がありました。
事業用のクレカと口座を用意できないままフリーランスとなってしまったのです。
一応、事業用のクレカも口座もなくてもフリーランスとしてお仕事は可能です。

ただ困ることが1点、お金の管理がとてもめんどくさいです。
後述しますが、私はフリーランスになる上で開業届と一緒に青色申告の申請も出しました。

確定申告には、白色・青色と種類があり、白色よりメリットが多いのが青色申告です。
ただし青色申告を行うためには、開業届提出時に一緒に申請すること+確定申告には複式簿記での帳簿(金銭の管理簿)を提出する必要があります。

現在は会計ソフトに金額を入力していくだけで帳簿が出来上がるので、
開業する際は一緒に青色申告も申請しておくことをおすすめします。

クレカが個人用のクレカの場合、 個人で利用した分のどれが経費でどれが個人なのか、と自分で仕分けを行わないといけません。
簡単な会計はこれでいいのですが、毎月の会計で個人or事業を分けながら帳簿に記述していく作業は、月日が経てば経つほど面倒になっていきます。

事業用クレカなら、会計ソフトと連携して一括取り込みなどができるのでとても便利です。
口座も同様の理由です、入出金の記録をするのに個人と事業を分ける手間を省くためにも
事業用と個人用はきちんとわけておきましょう。

事業用の「クレカ」「口座」についてもう少し

事業用、というのは個人名で別口座、別クレカ、
「屋号」で作った口座、「屋号」のクレカ、とここでは定義します。

個人の会計と分けることが大事なので、 無理に法人クレカや法人口座を作ろうとしなくても大丈夫です。

屋号名義のクレカや口座を作成したい場合は以下に注意です。

三菱UFJなどメガバンクでは、屋号名義の口座作成に対し、取引した証拠書類が必要になります。
 例えば、お人好しLab宛ての請求書など、その屋号で事業を行ってることがわかる書類です。

・クレカの場合、信用問題の都合で会社在籍期間中に取るのが一番安全です。

メガバンクでの口座開設は、私はチャレンジして失敗してます。
今はジャパンネット銀行というネットバンクを経費用口座とし、それのデビットカードを経費用クレカとして利用しています。

ただし所得入金口座はまだ個人用です。(ここは仕方ないと割り切って仕分けやってます)

開業届

開業届、私は完全におサボりしまして・・・。
元いた会社の社長から、税理士さんを紹介していただいたのでそこらへんの処理は全部税理士さんにお任せしました。

こちらも開業届をオンラインで作成、申請できる!みたいなソフトなどがあるので
そちらを使うと税理士さんに頼まなくても済みます。

ただ初回なので、ちゃんとやりたい場合は税理士さんにお願いするのがいいと思います。

開業前の経費

開業前に、事業用に使ったお金は経費にできるのできちんと記録しておきましょう。

名刺など、作成が開業前であっても事業用の経費という扱いで計上できます。
デザイナーへの依頼や、印刷所への発注、その他打ち合わせの費用なども経費です。

あらかじめ名刺を用意しておくと、フリーランスとして活動していく中で大変便利です。

ちなみに、
私は勢いで名刺を作りましたがデザインが適当すぎたのと事業内容を盛り過ぎたので
反省して今は作り直ししてます。

最後に、これからフリーランスになる人へ

フリーランスは、会社のしがらみから離れられ、自由に働くことができる仕事の形です。
しかし、その自由さの代わりに不自由さも背負うことになります。

・自由でいるために契約内容はきちんと交渉する必要がある
・人脈を作っていかないと仕事を定期的にもらえない
・年金など、将来もらえるお金がフリーランスだと安くなる

などなど、挙げればキリがないくらいフリーランスは自分でやることが多く、面倒な職種です。

ですが今フリーランスとして働いている方々は、これを受け入れた上で自由を手にしています。
目先の欲にかられず、今自分が本当にしたいことを優先に考えて、
正社員のままがいいか、フリーになるかを検討してもらえればと思います。

老後のことも考えると正社員をオススメしておきます。
わざわざ茨の道に進む必要もないと思いますので、ここまで読ませておいてなんですが考え直してください。


それでもなりたい人だけ、このページで上げた退職前の準備などなどこなして、ようこそフリーランスの世界へ