cojimaru BLOG

エンジニア支援のために技術情報を発信するブログ

python ftplibによるファイルのダウンロード・アップロードを行ってみた

f:id:cojimaru-chan:20210304010950p:plain

はじめに

どうも、こじまるです。

pythonFTPサーバのファイルをダウンロード、アップロードする方法』をお探しではないでしょうか?そんな方に向けて、pythonの標準ライブラリftplibを使ったファイルダウンロード・アップロードの方法を記事にまとめました。

この記事をみてわかること
  • ftplibを使ったファイルダウンロード・アップロードの方法


本記事で紹介する方法を実践すれば、pythonを使ってFTPサーバのファイルをダウンロード・アップロードすることができます。

ftplibを使ったファイルダウンロード・アップロード

ftplibとは

ftplibとは、pythonに同梱されている標準ライブラリです。なので、pipでインストールする作業は不要になります。

ファイルのダウンロード

FTPサーバ上のファイル(test.txt)をsample.txtという名前でローカルにダウンロードすることを例に説明します。

FTPサーバへのログイン

まず、FTPサーバにアクセスするためにFTPクラスのインスタンスを作成します。FTPクラスはwith構文がサポートされているため、下記のように記述できます。

host = '127.0.0.1'
with FTP(host) as ftp:
    ftp.login() # login as anonymous user

FTPサーバで匿名ユーザ(anonymous user)を許可している場合、FTP.loginメソッドは引数なしで実行できます。特定のユーザでログインしたい場合には、FTP.loginメソッドの引数にユーザ名、パスワードを追加してください。


カレントディレクトリの変更

FTPサーバ上のダウンロード対象のファイルパスに応じて、カレントディレクトリを変更する必要があります。

FTP.cwd(pathname)

FTP.cwdメソッドのpathnameにカレントディレクトリを指定することで変更できます。今回はFTPサーバでログインしたパス(物理パス)の直下にtest.txtが配置されているため、変更は不要です。


リモートからローカルへのファイルダウンロード

ローカルのsample.txtというファイルを'wb'モードでファイルオープンし、FTP.retrbinaryメソッドによりバイナリ転送モードでファイルを受信します。

cmd = 'RETR test.txt'
with open('sample.txt','wb') as local_file:
    ftp.retrbinary(cmd, local_file.write)

FTP.retrbinaryメソッドの第一引数cmdには適切な'RETR filename'という形式で指定する必要があります。FTPのcommandについてはこちらをご確認ください。


ソースコード

全体のソースコードは下記の通りです。

from ftplib import FTP, error_perm, all_errors

def copyFile(src, dest):
    host = '127.0.0.1'
    cmd = 'RETR test.txt'
    try:
        with FTP(host) as ftp:
            ftp.login() # login as anonymous user
            lists = ftp.nlst()
            print(lists)
            if src in lists:
                print('file is existed')
                with open(dest,'wb') as local_file:
                    ftp.retrbinary(cmd, local_file.write)
                    print('copy is done')
            else:
                print('file is not existed')
    except error_perm:
        print('Pemission denined')
    except all_errors:
        print('Internal server error')

if __name__ == '__main__':
    src = 'test.txt'
    dest = 'sample.txt'
    copyFile(src, dest)
実行結果

FTPサーバは下記のように物理パスを設定しました。
f:id:cojimaru-chan:20210303224604j:plain



また、FTPサーバにはtest.txtを配置しました。
f:id:cojimaru-chan:20210303223148j:plain



スクリプトの実行結果として、ローカルにsample.txtという名前でダウンロードすることができました。
f:id:cojimaru-chan:20210303223200j:plain


ファイルのアップロード

ローカルのファイル(sample.txt)をFTPサーバ上にhoge.txtという名前でアップロードすることを例に説明します。

ローカルからリモートへのファイルアップロード

ローカルのsample.txtというファイルを'rb'モードでオープンし、FTP.storbinaryメソッドによりバイナリ転送モードでファイルを転送します。

cmd = 'STOR hoge.txt'
with open('sample.txt','rb') as local_file:
    ftp.storbinary(cmd, local_file)

FTP.storbinaryメソッドの第一引数cmdには'STOR filename'という形式で指定します。FTP.storbinaryメソッドの第二引数はファイルオブジェクトになりますので、ファイルオープンで開いたファイルオブジェクト local_fileを指定します。


ソースコード

全体のソースコードは下記の通りです。

from ftplib import FTP, error_perm, all_errors
import os

def uploadFile(src, dest):
    host = '127.0.0.1'
    cmd = 'STOR ' + dest
    try:
        with FTP(host) as ftp:
            ftp.login() # login as anonymous user
            lists = os.listdir('.')
            if src in lists:
                print('file is existed')
                with open(src,'rb') as local_file:
                    ftp.storbinary(cmd, local_file)
                    print('upload is done')
            else:
                print('file is not existed')
    except error_perm:
        print('Pemission denined')
    except all_errors:
        print('Internal server error')

if __name__ == '__main__':
    src = 'sample.txt'
    dest = 'hoge.txt'
    uploadFile(src, dest)
実行結果

スクリプトの実行結果として、FTPサーバにhoge.txtという名前でアップロードすることができました。
f:id:cojimaru-chan:20210303224401j:plain

まとめ

最後に、ご紹介した内容をおさらいしていきます。


pythonで標準ライブラリftplibを使用することで、下記が実現できることを紹介いたしました。

pythonを使ってFTPサーバのファイルをダウンロード・アップロードすること

ご紹介した内容を実践すれば、初心者の方でもpythonを使ってFTPサーバのファイルをダウンロード・アップロードすることができます。


pythonを使った他の記事も書いていますので、ぜひ見てください。
cojimaru-chan.hatenablog.com

【運営報告】ブログ開設1か月の初心者がPV数、収益の結果公開

f:id:cojimaru-chan:20210228033252p:plain

はじめに

どうも、こじまるです。

『ブログ1か月運営したらどれくらいPV数、収益が得られるの?』そんな疑問を持つ方に向けて、『初心者がブログ開設 1か月運営した結果』を記事にまとめました。


この記事をみてわかること
  • ブログ開設1か月運営した結果
  • 今後の方針


筆者と同じブロガーの方、ブログを始めたいと思っている方の参考や励みになればと思います。

一か月の運営結果

こちらが結論になります。

期間 1月30日~2月27日
ユーザ数 141人
PV数 682PV
記事数 14記事
収益 0円


Google Analyticsの情報を掲載しています。初めて1週間後にこちらでISPグローバルIPアドレスを除外しました。

PV数

合計PV数 : 682PV


下記がこの1か月でのPV数の遷移になります。
f:id:cojimaru-chan:20210227162611j:plain

以前の記事6か月で月1000PVを達成するということを長期的な目標に掲げていました。なので、一か月目でそれに近いPV数を得られたことは凄く嬉しく感じます。


ただ、下記の通り、2週間あたりのPV数は停滞しています。そのため、伸びていない原因を分析しようと思います。
f:id:cojimaru-chan:20210228021723p:plain

PV数が伸びていない原因

  • ブログの更新頻度が低下した
  • SNSをうまく活用できていない

  • 下記で詳細に見ていきます。

    ブログの更新頻度が低下した

    下記の画像は『2週間まで』と『2週間から1か月』の期間の記事数になります。『2週間まで』はおおよそ1記事/1日でしたが、『2週間から1か月』は1記事/3日になっています。

    f:id:cojimaru-chan:20210228013938p:plain

    SNS流入を狙う場合、ブログの更新をSNSに投稿するとフォロワーの方が訪れてくれることがあります。頻度が低くなったことでその機会も減少するので、これらがPV数が伸びていない原因になっていると思います。

    SNSをうまく活用できていない

    SNSは主にTwitterを活用しています。私のTwitterのフォロワーはブロガーさん、個人投資家が多いので、プログラミング系の記事はあまりウケがよくありません。


    下記はTwitterからのアクセス先ページになります。
    f:id:cojimaru-chan:20210228011246j:plain


    スクリーニングツールや食洗器などの記事は比較的アクセスが多いですが、プログラミング系の記事はほとんどアクセスされていません。今後もプログラミング系情報は配信したいので、プログラミングに興味があるユーザにフォローしていただけるようにSNSを活用していきます。


    また、SNSではブログ情報の配信しか出来ていません。なので、今後ブログ以外の情報も配信できるように活動します。

    収益

    合計 : 0円

    収益は前回と変わらず0円になります。


    ただ、7記事執筆時点不合格だったAmazonアフィリエイトですが、10記事執筆時点で再申請したところ合格できました。他のブロガーさんからもしもアフィリエイト経由では、5記事でも合格したと報告がありましたが、合格には10記事程度の記事数が必要になるのかもしれないですね。


    Google AdSenseは現在申請しているところです。

    来月からは収益化のことも考えながら、記事を執筆したいと思います。

    今後の方針

    今回の記事で記載した通り、PV数は停滞傾向にあるので、今後1か月は下記の方針で運営したいと思います。

    今後一か月の運営方針
    • ブログの更新頻度を1記事/2日を維持する
    • ブログの内容に興味があるフォロワーを増やす(フォロワー : 500人目標、記事執筆時 : 77人)
    • SNSでブログ以外の情報を配信する(3件/1日)


    1記事/2日でブログを投稿できない根本原因は記事のネタ探しに詰まっていることにあります。なので、ネタ探しは他の方のブログやSNSとかを活用して、継続的に最新の技術情報やブログネタをキャッチできるようにしたいと思います。


    今後も読者の皆様に価値ある情報を共有できるように頑張りますので、応援よろしくお願いします。

    pythonでTwitter APIを使ってみた

    f:id:cojimaru-chan:20210225012522p:plain

    はじめに

    どうも、こじまるです。
    Twitterの情報を解析してみたい、自動で投稿してみたい』などと悩んでいませんか?そんな方に向けて、pythonを使ってTwitter APIで自動投稿、指定ワードで検索する』ための方法を記事にまとめました。

    この記事をみてわかること

    本記事で紹介する方法を実践すれば、pythonを使ってTwitterに投稿すること、指定ワードでの検索をすることができます。

    f:id:cojimaru-chan:20210224203009j:plain
    pythonを使ってTwitterの自動投稿

    Twitter APIを使ってみた

    Twitter APIとは

    Twitter APIとは、Twitterが提供しているWeb APIになります。Twitter APIを通して、Tweetの投稿やTweetされた情報の取得などができます。

    Twitter APIの始め方

    Twitter APIの始め方
    • 1.Twitter Developerの登録
    • 2.アプリケーションの登録
    • 3.API Keyの発行

    上記手順は説明を割愛させていただきます。下記記事に詳細に書かれていますので、こちらを参照ください。
    digitalnavi.net

    Twitter APITweetを投稿する方法

    環境設定

    pythonTwitter APIをコールするために、requestsを使用します。requestsがインストールされていない場合にはpipを使ってインストールしてください。

    pip install requests
    Twitter APITweetの投稿

    Tweetを投稿するAPIとして、下記を使用します。APIの仕様書はこちらから確認できます。


    TweetはOAuth1.0aで認証します。下記のようにTokenを取得しました。

    """ settings.py """
    ACCESS_TOKEN = "xxxxxxxxxxxx-xxxxxxxxxxxx"
    ACCESS_TOKEN_SECRET = "xxxxxxxxxxxx"
    CONSUMER_KEY = "xxxxxxxxxxxx"
    CONSUMER_SECRET = "xxxxxxxxxxxx"
    


    認証のために、OAuth1Sessionを使用します。

    import requests
    from requests_oauthlib import OAuth1Session
    
    twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET)
    


    リクエストの型はAPIの仕様に合わせて実装しました。

    message = "Twitter API test"
    params = {"status":message}
    endpoint = "https://api.twitter.com/1.1/statuses/update.json"
    res = twitter.post(endpoint,params=params)
    
    ソースコード

    全体のソースコードは下記の通りです。

    import json
    import requests
    import settings
    from requests_oauthlib import OAuth1Session
    
    if __name__ == '__main__':
        message = "Twitter API test"
        params = {"status":message}
        endpoint = "https://api.twitter.com/1.1/statuses/update.json"
        twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET)
        res = twitter.post(endpoint,params=params)
        json_res = res.json()
        print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
    
    実行結果

    Twitter APIを通して、Twitterに自動投稿することができました。
    f:id:cojimaru-chan:20210224203009j:plain

    Twitter APITweetを検索する方法

    Twitter APITweetの検索

    最近のTweetを検索するAPIを使用します。


    Bearer Tokenが使用できるので、そちらを使用します。

    bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    headers = {"Authorization":"Bearer {}".format(bear_token)}
    


    今回はPython』を文字列に含むTweetを検索するようにしました。

    query = "Python -is:retweet"
    tweet_fields = "tweet.fields=author_id"
    endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields)
    res = requests.get(endpoint,headers=headers)
    
    ソースコード

    全体のソースコードは下記の通りです。

    import json
    import requests
    import settings
    from requests_oauthlib import OAuth1Session
    
    if __name__ == '__main__':
        bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        headers = {"Authorization":"Bearer {}".format(bear_token)}
    
        query = "Python -is:retweet"
        tweet_fields = "tweet.fields=author_id"
        endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields)
        res = requests.get(endpoint,headers=headers)
        json_res = res.json()
        print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
    
    実行結果

    下記が実行結果になります。事前に投稿したTweetが取得できることが確認できました。
    f:id:cojimaru-chan:20210224222115j:plain

    f:id:cojimaru-chan:20210224230555j:plain
    事前に投稿したTweet

    まとめ

    最後に、ご紹介した内容をおさらいしていきます。
    pythonTwitter APIを使用することで、下記のようなことが実現できます。

    Tweetの自動投稿
    Tweetの検索


    ご紹介した内容を実践すれば、初心者の方でもpythonを使ってTweetの自動投稿、Tweetの検索などを行うことができます。pythonでLINE notifyを使用した自動投稿の記事も書いていますので、ぜひ見てください。
    cojimaru-chan.hatenablog.com

    pythonでLINE notifyを利用してみた

    f:id:cojimaru-chan:20210222224944p:plain

    はじめに

    どうも、こじまるです。
    『Web Serviceの情報をLINEに通知したい』などと悩んでいませんか?そんな方に向けて、pythonを使ってLINEに通知する』ための方法を記事にまとめました。

    この記事をみてわかること
    • LINE Notifyの始め方
    • pythonでLINEに通知を送る方法

    本記事で紹介する方法を実践すれば、下記のようにpythonを使ってLINEに画像やテキストを通知することができます。
    f:id:cojimaru-chan:20210222195638j:plain

    LINE Notifyによる通知

    LINE Notifyとは

    LINE Notifyとは、メッセージアプリ『LINE』が提供するサービスです。Web Serviceと連携することで、LINEの公式アカウント『LINE Notify』アカウントに通知を送ることができます。



    最近では、IFTTTといったWebサービス同士を連携させるサービスを活用し、例えば『メールが届いた時』『LINE notifyで通知をする』といった形で使用されています。IFTTTは下記記事で紹介していますので、興味がありましたらみてください。

    cojimaru-chan.hatenablog.com

    LINE Notifyの始め方

    1.LINE Notifyにアクセスし、LINEアカウントでログイン
    f:id:cojimaru-chan:20210222180829j:plain

    2.マイページに遷移
    f:id:cojimaru-chan:20210222180849j:plain

    3.アクセストークンの発行
    f:id:cojimaru-chan:20210222181519j:plain

    4.トークン名とトークルームを設定
    f:id:cojimaru-chan:20210222180911j:plain

    5.アクセストークンのコピー
    f:id:cojimaru-chan:20210222180928j:plain

    以上で、LINE notifyの設定は終了です。発行したアクセストークンはpythonで通知を飛ばすために必要です。


    LINE notifyはOAuth2.0という仕組みを使って、LINEへの通知を実現しています。下記記事で分かりやすく解説されていました。
    qiita.com

    pythonで通知を飛ばす方法

    環境設定

    pythonで通知を飛ばすために、requestsが必要です。requestsがインストールされていない場合にはpipを使ってインストールしてください。

    pip install requests
    LINE notifyでメッセージを送信する方法

    LINE notifyでメッセージを送信するために、LINE Notifyの仕様書に準ずる形でリクエストを行う必要があります。メッセージの送信のために、ヘッダにアクセストークンが必要になります。

    def send_message(url, message):
        api_token = '' // something value
        headers = {'Authorization': f'Bearer {api_token}'}
        data = {'message': f'message: {message}'}
        response = requests.post(url,headers=headers,data=data)
        print(response)
    
    if __name__ == '__main__':
        notification_url = 'https://notify-api.line.me/api/notify'
        send_message(notification_url,'Test')
    

    実行結果
    f:id:cojimaru-chan:20210222193908j:plain

    LINE notifyで画像を送信する方法
    def send_image(url, message, file_path):
        api_token = '' // something value
        headers = {'Authorization': f'Bearer {api_token}'}
        data = {'message': f'message: {message}'}
        files = {'imageFile':open(file_path,'rb')}
        response = requests.post(url,headers=headers,params=data,files=files)
        print(response)
    
    if __name__ == '__main__':
        notification_url = 'https://notify-api.line.me/api/notify'
        send_image(notification_url,'Test','cojimaru_image.png')
    

    実行結果
    f:id:cojimaru-chan:20210222195638j:plain

    まとめ

    最後に、ご紹介した内容をおさらいしていきます。
    LINE notifyを使用するためには、下記の手順が必要になります。

    ①LINE notifyでアクセストークンの発行
    pythonスクリプトの作成


    ご紹介した内容を実践すれば、初心者の方でもpythonを使ってLINEに画像やテキストを通知することできます。株価情報の自動配信の記事なども出していますので、ぜひ見てください。
    cojimaru-chan.hatenablog.com

    cojimaru-chan.hatenablog.com

    Slack APIで高配当株情報をスマートフォンに自動配信してみた

    f:id:cojimaru-chan:20210220222502p:plain

    はじめに

    どうも、こじまるです。
    今回は『Webスクレイピングで高配当株 スクリーニング自動化ツールを作成した』の続編になります。


    以前の記事で、スクリーニング済みの高配当株情報を含むExcelファイルをフォルダに配置できるようにしました。しかしながら、平日の特定の時間帯にツールが自動で動作する要件を満たせていないため、続編として対応を行いました。また、スマートフォンでも高配当株情報を見たいので、スマートフォンに情報を配信できるようにしました。

    スクリーニングツールの作成

    要件定義

    前回の記事で下記のようにスクリーニングツールの要件を定義しました。今回は要件1と新たに追加した要件3を満たすようにします。


    スクリーニングツールの要件定義

    1. 平日の特定の時間帯にツールが自動で動作すること。
    2. 東証一部上場の株式情報を取得すること。
    3. スマートフォンに高配当株情報を配信できるようにすること。(New)

    スクリーニングツールの自動実行

    私はWindowsのパソコンとUbuntuのサーバを所有しています。Windowsのパソコンは常に起動しているわけではないため、今回はUbuntuのサーバを使って自動実行を行います。


    Windowsパソコンでpythonスクリプトを自動実行する方法はこちらで説明していますので、参考にしてください。
    cojimaru-chan.hatenablog.com

    Ubuntuの自動実行設定

    Ubuntuのタスクを自動実行するために、cronを使用します。下記コマンドを実行すると、Vimを起動します。

    $crontab -e

    平日の17:00に自動実行するように設定します。

    $crontab -l
    LANG=ja_JP.UTF-8
    0 17 * * 1-6 cd /home/{user}/finance;/usr/bin/python3 /home/{user}/finance/createStockMap.py

    cronの設定は下記を参考にしました。
    qiita.com

    スマートフォンに高配当株情報の配信

    Slack APIの設定

    スマートフォンに高配当株情報を配信するために、Slack APIを使用します。詳細な手順については割愛しますので、参考サイトをご確認ください。


    設定手順

    1. Slack APIより、アプリを作成
    2. スコープにファイル書き込みのため files:write の設定
    3. Slackにアプリをインストール
    4. Tokenをコピー
    5. Slackのチャンネルにアプリを追加

    Slack APIの設定を行った後に、ソースコードを実行することでファイルをアップロードすることができました。
    f:id:cojimaru-chan:20210220180810j:plain


    検証に使用したソースコードは下記になります。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import requests
    
    api_token = '' # please enter your api_token
    channel = '' # please enter your channel
    
    class SlackManager:
        def __init__(self):
            self.api_token = api_token
            self.channel = channel
    
        def upload_file(self,file,file_name):
            files = {'file':open(file,'rb')}
            param = {
                'token' : self.api_token,
                'channels' : self.channel,
                'filename' : file_name,
                'initial_comment' : 'file upload',
                'title' : 'dividend stocks'
            }
            res = requests.post(url="https://slack.com/api/files.upload",
                params=param,
                files=files)
            print(res.json())
    
    if __name__ =='__main__':
        file_name = 'stock_210220_144325.xlsx'
        file_path = './' + file_name
        slack = SlackManager()
        slack.upload_file(file_path,file_name)
    

    参考
    https://qiita.com/yaju/items/2e1ab8a25b6e207bfbe6
    https://www.whizz-tech.co.jp/5857/

    スクリーニングツールの修正

    前回作成したスクリーニングツールでは、1行(1つの銘柄)に20個の情報を表示しています。スマートフォンでは情報が多すぎると見づらいので、14個の情報を表示します。

    ソースコード

    ソースコードはこちらに配置しています。
    github.com

    結果

    スマートフォンのSlackでファイルを受け取れることができました。
    f:id:cojimaru-chan:20210220181355p:plain


    Excelアプリでファイルを表示した結果はこちらになります。1画面ですべての情報が表示できなかったため、2つの画像に分けています。
    f:id:cojimaru-chan:20210220181728p:plain
    f:id:cojimaru-chan:20210220181737p:plain

    まとめ

    スクリーニングした高配当株情報をスマートフォンに自動配信できるようになりました。今更ながらSlackを使用してみましたが、情報を収集するのにかなり便利ですね。今後はSlack API以外のAPIなども使って、情報収集などの紹介もしていけたらと思います。

    家電好きが選ぶ!!食洗機の選び方!!パナソニック食洗機一覧比較

    f:id:cojimaru-chan:20210217013910p:plain

    はじめに

    どうも、こじまるです。
    私は家電に物凄くこだわりがあります。今まで購入してきた家電は全て、インターネットでの調査、家電店での調査を何度も繰り返し、購入してきました。


    今回は最近購入した食洗機について、私の選び方などをお伝えしたいと思います。

    前提条件

    まず、前提として、私の欲しかった食洗機のタイプを記載します。

    • 据え置き・卓上型
    • 食器容量 : 多い方がいい

    食洗機の選び方

    メーカー選択

    前提条件を基に、メーカーを選択します。据え置き・卓上型の食洗機の食器容量は、3人分、4人分、5人分なので、迷わず5人分を選択しました。


    理由は可能な限り多くのものを自動で洗いたいためです。我が家ではよくフライパン、鍋、炊飯器などを使用するので、それらが入るほどの大きさを持つ食洗機を選択しました。5人分の食洗機はパナソニックのファミリーモデルのみなので、こちらが候補になりました。

    製品選択

    一番悩んだところがファミリー向けの中でどの製品を選択するかになります。


    パナソニックハイグレードモデル、ミドルモデル、スタンダードモデルの3つに分かれています。最近ではヤフオクやメルカリなどでも食洗機は売っているので、候補は下記の2018年~2020年の下記の8モデルになります。

    製品名 NP-TZ300 NP-TZ200 NP-TZ100 NP-TH4 NP-TH3 NP-TH2 NP-TA4 NP-TA3
    発売日 2020/9/1 2019/9/1 2018/10/30 2020/9/1 2019/9/1 2018/10/30 2020/9/1 2019/9/1
    ドア開閉方式 前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    前開き式
    (上下2枚)
    食器容量 5人分 5人分 5人分 5人分 5人分 5人分 5人分 5人分

    庫内容積

    50L

    50L

    50L

    50L

    50L

    50L

    50L

    50L

    食器点数

    40点

    40点

    40点

    40点

    40点

    40点

    40点

    40点

    標準総使用水量

    11L

    11L

    11L

    11L

    11L

    11L

    11L

    11L

    乾燥機能

















    ニオイ抑制
















    除菌
    タイマー
    運転コース
    汚れレベル(1/2/3/4/5)
    ナノイーX
    低温ソフト
    お手入れ
    80℃すすぎ
    乾燥のみ

    汚れレベル(1/2/3/4/5)
    ナノイーX
    低温ソフト
    お手入れ
    高温除菌
    乾燥のみ

    汚れレベル(1/2/3/4/5)
    ナノイーX
    低温ソフト
    お手入れ
    高温除菌
    乾燥のみ

    汚れレベル(1/2/3)
    スピーディ
    低温ソフト
    お手入れ
    80℃すすぎ
    乾燥のみ

    汚れレベル(1/2/3)
    スピーディ
    低温ソフト
    お手入れ
    高温除菌
    乾燥のみ

    汚れレベル(1/2/3)
    スピーディ
    低温ソフト
    お手入れ
    高温除菌
    乾燥のみ

    汚れレベル(1/2/3)
    スピーディ
    お手入れ
    乾燥のみ

    汚れレベル(1/2/3)
    スピーディ
    お手入れ
    乾燥のみ
    運転時間目安 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz) 約84分/約79分(50Hz/60Hz)
    騒音 36db 36db 36db 37 db 37 db 37 db 38 db 38 db
    最大消費電力 1165W 1165W 1165W 1165 W 1165 W 1165 W 1165 W 1165 W
    幅x高さx奥行き 550x598x344mm 550x598x344mm 550x598x344mm 550x598x344 mm 550x598x344 mm 550x598x344 mm 550x598x344 mm 550x598x344 mm
    質量 20kg 20kg 20kg 19 kg 19 kg 19 kg 19 kg 19 kg
    ※使用性、機能性に着眼し、差分がある行の項目名をピンクで表示しています。

    選んだ製品

    私はNP-TZ200を選択しました。


    理由としては、2つあります。
    まず1つ目は値段が高かったためです。私の食洗機の検討時期は1月だったのですが、12月~2月ごろが一番食洗機が高い時期になります。新製品は例年秋頃に発売し、家電店では旧製品が在庫一掃の売り出しを行います。この時期に新製品を購入するのは多くのコストがかかるため、新製品は選択肢から除外しました。


    2つ目は比較的新しく、グレードが高いモデルが良かったためです。メルカリなど中古で購入することを検討していたため、中古製品の中でも比較的新しく、グレードが高いモデルを選択しました。食洗機をタッチで操作出来るのはカッコいいですね。



    私は時期が悪く新品を購入することはできませんでしたが、食洗機の狙い時の7月~10月であれば、新品を比較的お買い得に購入できます。2020年の新製品のリンクをこちらに用意しておきます。

    その他悩んだ点

    メーカー選択、製品選択で購入する機器が決定しました。ただ、見落としていたのがどこに配置するか問題です。機能に惹かれるあまり、どこに配置するかを意識できていませんでした。


    下記が私の食洗機の配置図になります。食洗機の幅x高さx奥行きが550x598x344mmなので、ぎりぎり配置することができました。

    f:id:cojimaru-chan:20210217013035j:plain
    食洗機の配置図


    このように配置に困る方向けに、パナソニックは公式に専用部材を提供しています。使用例は下記のようになります。

    f:id:cojimaru-chan:20210216004005j:plain
    専用部材の使用例1

    f:id:cojimaru-chan:20210216232438j:plain
    専用部材の使用例2
    出典 : きちんと測ってスッキリ設置!食洗機置き場のつくり方 | 食器洗い乾燥機(食洗機) | Panasonic

    商品リンクは、こちらに用意しております。

    まとめ

    今回は筆者の食洗機の選び方をお伝えさせていただきました。上記の選び方でファミリータイプの食洗機を購入しましたが、ほぼ全ての食器を食洗機に洗ってもらっているので、購入して本当に良かったと実感しています。


    以上、家電好きが選ぶ!!食洗機の選び方!!パナソニック食洗機一覧比較でした。

    【運営報告】ブログ開設2週間の初心者がPV数、収益の結果公開

    f:id:cojimaru-chan:20210214211236p:plain

    はじめに

    どうも、こじまるです。
    筆者がブログを開始してから、2週間が経過しました。そのため、運営報告をしたいと思います。ブログを始めたいと思っている方、ブログ初心者の方、ぜひ参考にしてください。

    Summary

    結論から伝えますと、下記の結果のようになりました。

    期間 1月30日~2月13日
    ユーザ数 69人
    PV数 371PV
    記事数 10記事
    収益 0円

    Google Analyticsの情報を掲載しています。初めて1週間後にこちらでISPグローバルIPアドレスを除外しました。

    報告

    PV数について

    合計PV数 : 371PV


    下記がこの2週間でのPV数の遷移になります。
    f:id:cojimaru-chan:20210213204243j:plain

    ブログ初心者がブログを初めてすぐに検索流入で記事を見ていただけるわけもなかったので、SNSでブログの宣伝を始めました。具体的には、Twitter, インスタグラム、日本ブログ村に登録し宣伝を始めました。


    流入チャネルは、Twitter : 30%, 検索 : 30%となっています。

    記事について

    記事数 : 10記事


    筆者が2週間で掲載した記事のジャンルは、下記の通りになります。

    カテゴリ 件数
    プログラミング・アプリ 5
    電子機器 2
    資格 3

    最初は基本的に資格系や電子機器関連の記事を掲載ばかりしていましたが、2週間目はプログラミング系の記事ばかり書いています。例えば、下記のように以前からやってみたかったWebスクレイピングの記事を書いてみました。

    cojimaru-chan.hatenablog.com

    プログラミング系の記事のメリットは自分でネタを自由に作成できることですが、とにかく時間がかかるのがデメリットにもあります。


    筆者もスクレイピングは初心者だったので、調査~プログラム作成だけで、7、8時間かかりました。割と時間もかかり大変ではありますが、プログラムを作るのは好きなので、今後もプログラミング系の記事を書き続けたいと思いました。

    収益について

    収益 : 0円


    アフィリエイトにまだ登録出来ていないので、収益は0円になります。


    Amazonアフィリエイトは、もしもアフィリエイト経由で登録を行いました。下記の記事では5件で合格したと書かれていましたが、筆者は記事数 7件の状態で承認されませんでした。
    pakupaku-financier.hatenablog.com

    他のアフィリエイトGoogle Adsenseなどはまだ登録していないです。

    感想・今後について

    2週間やってみた結果として、ブログネタには困りましたが、アフィリエイトを特に意識せず自由にやっていたのもあり、楽しくブログ記事を書くことができました。今まで自分が知らなかったサービスを知り、体験するきっかけになったので本当に良かったと思います。


    ブログに掲載するジャンルなどは模索中ではありますが、技術情報を掲載するのが好きなので、それを中心に活動を継続していきたいと思います。また、他のチャネルでも情報配信などを挑戦して、自分のスタイルを見つけていきたいと思います。


    今後ですが、下記のような目標を達成できるように活動したいです。
    目標

    • Word Pressでブログ設立
    • 3ヵ月 2日に1度のペースで情報配信を継続すること
    • 6ヵ月 月1000PVを達成する
    • 収益 1万円を目指す

    今後も読者の皆様に価値ある情報を共有できるように頑張りますので、応援よろしくお願いします。