猫幸堂

パソコンで使えるメモ帳の作り方は?【Python, Tkinter】

  • 作成日: 2025-08-19
  • 更新日: 2025-08-22
  • カテゴリ: メモ
  • タグ: メモ帳, アプリ, メモアプリ, エディタ

この記事ではパソコンで使えるメモ帳の作り方を解説します。
この記事を読めばパソコンでメモ帳を作れるようになります。
また、ついでに当サイトが開発しているメモ帳も宣伝させてください。

※この記事はプロモーションを含みます。

パソコンでメモ帳を作るには?

パソコンでメモ帳を作るには、まず世の中のメモ帳がどういうふうに出来ているかを知る必要があります。
世の中のパソコンで使えるメモ帳というのは、何で作られているかと言うと、プログラミング言語で作られています。

プログラミング言語とは?

プログラミング言語とは、パソコンに与える命令を書くための人工的な言語です。

プログラミング言語=人工的な言語

人間が設計して使えるようにしているのが、プログラミング言語です。
プログラミング言語は、ソフトウェアとして配布されています。
つまりパソコンにプログラミング言語のソフトウェアをインストールすると、そのプログラミング言語を使えるようになります。

といってもプログラミング言語を見たことが無いと、どういうものかイメージが湧きづらいと思いますので、簡単な例を出してみたいと思います。

def main():  
    print(‘Hello, World!’)  

main()  

上記はPython(パイソン)というプログラミング言語で書かれたプログラムです。プログラムを実行すると画面に「Hello, World!」と表示されます。

ちなみにこのようなプログラムは「ハローワールド・プログラム」と呼ばれていて、だれでも簡単に書けるプログラムとして世界的によく知られています。

先程のプログラムに書かれている「def」とか「main」とかの文字の集まりのことをソースコードといいます。ソースコードとは、プログラミング言語で書かれている命令の集まりのことを言います。Pythonの場合はソースコードのことを単にプログラムあるいはスクリプトと呼ぶこともあります。

Pythonをインストールしてみよう

プログラミング言語のPythonは、世界的に使われている言語の1つです。有名なものだとYoutubeもPythonで作られているらしいです。
Pythonはだれでも無料で使うことが可能です。そのため、インストールする方法がわかればだれでもすぐに使うことができます。
Pythonの公式サイトは以下です。

上記のサイトから「Download」ページに行くとPythonをダウンロードすることができます。
Pythonでもメモ帳は作ることが可能なので、作ってみたい方はPythonをダウンロードしてインストールしてみてください。

「Python インストール方法」でGoogle検索すると、Pythonの具体的なインストール方法を解説したページが出てきますので、そちらも参照してください。

インストールしたPythonを使ってみる

PythonをインストールしたらPythonをさっそく使ってみましょう。
Pythonを使うには「コマンドプロンプト」というソフトウェアを起動します。
これはWindows環境では最初から入っているソフトで、マイクロソフトが用意しているものです。

キーボードの「ウィンドウズ・キー」を押して(左下にある窓のマークのキー)、「コマンドプロンプト」と検索します。そうすると黒いアイコンが出てくると思いますので、それをクリックして起動してみてください。
あるいは「ウィンドウズ・キー」と「Rキー」を同時押しすると「ファイル名を指定して実行」という小さいウィンドウが出ますので、そこに「cmd」と入力してエンターキーを押します。この方法でもコマンドプロンプトを起動できます。

コマンドプロンプトは黒い画面のウィンドウなので、なんとも怪しい感じがすると思います。しかし、ちゃんとしたマイクロソフトが作ってるソフトウェアなので安心してください。
コマンドプロンプトにフォーカスして、キーを入力します。「python -V」と入力してエンターキーを押してみてください。そうするとパソコンに入っているPythonのバージョン(番号)が表示されると思います。
バージョンとはソフトウェアの版を表す番号のことです。「3.13.1」とかこんな漢字の番号になっています。この番号は大きくなればなるほど新しい版です。

Pythonにソースコードを食わせる

先ほどは「ハローワールド・プログラム」のソースコードをあなたにお見せしました。これはプログラムなので、そのまま実行することができます。ではどうやって実行するのでしょうか?
先ほどコマンドプロンプトでPythonを使ってみましたが、ソースコードはPythonに「食わせる」と、プログラムとして実行することができます。食わせるというのは解析して実行させるという意味です。

まず、ソースコードをファイルとして保存する必要があります。先程のソースコードを「hw.py」というファイル名で保存します。「.py」というのは拡張子のことで、Pythonではこの拡張子を普通は使います。
たとえば「hw.py」を「C:/Users/myname/hw.py」に保存したとしましょう。この場合はPythonにこのパス(ファイルの場所を表す文字列)を渡せば、そのソースコードが書かれたファイル(ソースファイル)を実行できます。

> python C:/Users/myname/hw.py  
Hello, World!  

そうすると上記のようにコマンドプロンプトの画面に「Hello, World!」と表示されます。これでPythonによる開発環境の構築は完了です。あとはメモ帳を作るだけです。

メモ帳を作る

メモ帳というのはアプリ的にはどういったアプリになるのかというところですが、パソコンで動くメモ帳は「デスクトップ・アプリ」というアプリになります。これがスマホで動くメモ帳なら「スマホ・アプリ」です。
デスクトップアプリは、GUIとよばれる見た目が必要です。GUIは「Graphical User Interface」の略で、意味は「グラフィカルな見た目」という意味になります。グラフィカルな見た目というのはたとえばウィンドウがあったり、閉じるボタンが付いてたり、ファイルメニューがあったりといったことを指します。つまりあなたが普段からパソコンで使っているアプリのことを言ってます。

で、このGUIを作るにはPythonでは「ライブラリ」というものがいります。ライブラリとはプログラミングで使う道具のことを言います。PythonのライブラリはPythonで書かれていて、最初から使えるライブラリを「標準ライブラリ」と言い、公式でない外部のライブラリを「外部ライブラリ」と言います。
Pythonには標準ライブラリにGUIを構築するためのライブラリが用意されています。その名も「Tkinter」というものです。Pythonでメモ帳を作るにはこのTkinterを使う必要があります。
ちなみにTkinterの他には外部ライブラリにもGUIライブラリがあります。Tkinterに飽きたらそっちを使ってもいいでしょう。まぁ私はTkinterが好きなのでこっちを良く使いますが。

メモ帳もどきのソースコード

ではメモ帳のソースコードをお見せします。
最小限の構成で、ファイルを開き読み込み、編集し、ファイルに保存できるメモ帳です。

import tkinter as tk  
from tkinter import filedialog  

class SimpleNote:  
    def __init__(self, root):  
        self.root = root  
        root.title("シンプルメモ帳")  

        # 上部のボタン  
        btn_frame = tk.Frame(root)  
        btn_frame.pack(fill=tk.X, pady=5)  

        tk.Button(btn_frame, text="開く", command=self.open_file).pack(side=tk.LEFT, padx=5)  
        tk.Button(btn_frame, text="保存", command=self.save_file).pack(side=tk.LEFT)  

        # テキストエリア + スクロールバー  
        self.text = tk.Text(root, wrap="word", undo=True)  
        scroll = tk.Scrollbar(root, command=self.text.yview)  
        self.text.configure(yscrollcommand=scroll.set)  

        self.text.pack(side=tk.LEFT, expand=True, fill="both")  
        scroll.pack(side=tk.RIGHT, fill="y")  

    def open_file(self):  
        path = filedialog.askopenfilename(filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])  
        if path:  
            with open(path, "r", encoding="utf-8") as f:  
                self.text.delete("1.0", tk.END)  
                self.text.insert(tk.END, f.read())  

    def save_file(self):  
        path = filedialog.asksaveasfilename(defaultextension=".txt",  
                                            filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])  
        if path:  
            with open(path, "w", encoding="utf-8") as f:  
                f.write(self.text.get("1.0", tk.END))  

if __name__ == "__main__":  
    root = tk.Tk()  
    SimpleNote(root)  
    root.mainloop()  

このソースコードを「C:\Users\myname\memo.py」というファイルで保存します。
そして以下のように実行します。

> python C:\Users\myname\memo.py  

すると以下のようなメモ帳が起動すると思います。

シンプルメモ帳

「開く」ボタンでテキストファイルを開いて読み込みます。「保存」ボタンでファイル名を付けて保存します。
これぐらいのコードはAIに頼めばすぐ作ってもらえます。便利な時代になりました。

ソースコードの解説

ではAIに書かせたソースコードを人間の私が解説したいと思います(笑。

インポート

まず下の部分です。

import tkinter as tk  
from tkinter import filedialog  

ここはライブラリをインポートしています。ライブラリはプログラミングで使う道具でした。インポートと言うのは、ソースコード内にほかのソースコードを読み込むという意味です。
import tkinter as tkというのは、tkinterをインポートしてtkという名前を付ける、と言う意味です。
from tkinter import filedialogというのは、tkinterからfiledialogをインポートするという意味です。
このインポートによってtkfiledialogがソースコード中で使えるようになります。

if __name__ == ‘__main__’

次に下の部分です。

if __name__ == "__main__":  
    root = tk.Tk()  
    SimpleNote(root)  
    root.mainloop()  

ifというのはif文のことで、これはソースコード中で処理を分岐したときに使われる文です。
if __name__ == “__main__"というのは「name__という変数が"__main"という文字列だったら」という意味になります。
変数とは箱みたいな入れ物のことです。この入れ物の中身が"__main__"になっているかチェックしています。

if文でチェックしてその結果が真、つまり__name__の中身が"__main__"だったら、以下のコードを実行します。

    root = tk.Tk()  
    SimpleNote(root)  
    root.mainloop()  

root = tk.Tk()というのは、tkの中にあるTkというクラスをオブジェクトにして、rootという変数に入れるという意味です。
クラスとは設計書のことです。Tkという設計書からrootというオブジェクトを生成しています。
SimpleNote(root)というのはSimpleNoteというクラスにrootを渡して、オブジェクトを生成しています。ここで生成しているオブジェクトは変数には代入していません。
root.mainloop()は、rootを起動するという意味です。rootTkから作られたオブジェクトで、Tkにはmainloop()の内容が書かれています(これはここからは見ることはできません)。

SimpleNoteクラス

SimpleNoteクラスを見ていきます。

class SimpleNote:  
    def __init__(self, root):  
        self.root = root  
        root.title("シンプルメモ帳")  

        …  

class SimpleNote:というのは「ここからSimpleNoteの設計内容だヨ!」という意味の宣言です。インデントを入れた中身がSimpleNoteクラスの中身になります。
def __init__(self, root):というのはメソッドのことです。メソッドとは、クラスに加えることができる処理のまとまりです。このまとまりは個別に実行することができます。
__init__メソッドは特殊なメソッドで、これはクラスをオブジェクトにするときに実行されます。selfrootはともに__init__メソッドが使う引数(ひきすう)です。引数と言うのは変数みたいなものです。

        # 上部のボタン  
        btn_frame = tk.Frame(root)  
        btn_frame.pack(fill=tk.X, pady=5)  

        tk.Button(btn_frame, text="開く", command=self.open_file).pack(side=tk.LEFT, padx=5)  
        tk.Button(btn_frame, text="保存", command=self.save_file).pack(side=tk.LEFT)  

__init__メソッドの続きを見ると上記のようになっています。
btn_frame = tk.Frame(root)というのは、Frameクラスをオブジェクトにしてbtn_frame変数に入れています。rootFrameに渡していますが、これはFrameの親をrootにするためです。Tkinterのクラスには親子関係があります。

btn_frame.pack(fill=tk.X, pady=5)というのはbtn_frameをウィンドウに配置しています。pack()が配置用のメソッドです。このようにクラスのオブジェクトからはクラスが持っているメソッドを呼び出せます。
fill=tk.Xというのはbtn_frameを横いっぱいに広げる、という意味の指定です。pady=5というのは縦方向の余白を5だけ作るという意味です。つまり配置の際に上下に余白ができる形で配置されます。

Button(ボタンの設定と配置)

次にボタン部分を見てみます。

        tk.Button(btn_frame, text="開く", command=self.open_file).pack(side=tk.LEFT, padx=5)  
        tk.Button(btn_frame, text="保存", command=self.save_file).pack(side=tk.LEFT)  

上記ではButtonクラスをオブジェクトにして、pack()で配置しています。
Buttontextにボタンの表示テキスト、commandにボタンがクリックされた時に呼び出すメソッドなどを指定します。
「開く」というボタンではself.open_fileというメソッドを呼び出すようにして、「保存」というボタンではself.save_fileメソッドを呼び出すようにしています。
selfというのは特殊な変数で、__init__メソッドの引数になってます。これは、オブジェクト自身を表す変数です。
pack()side=tk.LEFTというのは配置を左詰めにします。padx=5は左右の余白を5取ります。

text(テキストエリア)

次にテキストエリア部分を見てみましょう。

        # テキストエリア + スクロールバー  
        self.text = tk.Text(root, wrap="word", undo=True)  
        scroll = tk.Scrollbar(root, command=self.text.yview)  
        self.text.configure(yscrollcommand=scroll.set)  

        self.text.pack(side=tk.LEFT, expand=True, fill="both")  
        scroll.pack(side=tk.RIGHT, fill="y")  

Textクラスのwrap="word"は単語単位で折り返す指定です。undo=Trueはアンドゥ機能(元に戻す機能)を有効にする指定です。
ScrollbarText用のスクロールバーです。commandself.text.yviewを指定しています。こうするとスクロールが機能するようになります。
self.text.configure(yscrollcommand=scroll.set)というのは、Textが縦方向にスクロールされたときにscroll.setメソッドを呼び出すようにする指定です。Textとスクロールバーを連携するにはこういった設定が必要になります。
pack()expand=Trueはウィジェットの伸縮を有効にする指定です。つまり親のウィジェットに合わせて伸縮するようになります。ウィジェットと言うのはTkinterのウィンドウに配置できるクラスなどのことです。fill="both"というのは上下左右にウィジェットを広げるという指定です。side=tk.RIGHTはウィジェットを右詰めにする指定。fill="y"という指定はウィジェットを縦方向に広げる指定です。

open_fileメソッド

次にSimpleNoteのメソッドを見てみます。

    def open_file(self):  
        path = filedialog.askopenfilename(filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])  
        if path:  
            with open(path, "r", encoding="utf-8") as f:  
                self.text.delete("1.0", tk.END)  
                self.text.insert(tk.END, f.read())  

open_fileメソッドは、ファイルを開いてテキストに内容を読み込むメソッドです。
filedialog.askopenfilename()はTkinterのツールで、ダイアログを開いてユーザーに開きたいファイルを指定させます。filetypesにはダイアログで開くファイルのタイプを指定します。拡張子がtxtのテキストファイルの指定と、その他のファイルの指定をしています。
filedialog.askopenfilename()はユーザーがファイルを指定すると、その結果としてファイルのパスを返します。パスと言うのはファイルのパソコン上の住所のことです。
if文でpathが有効ならopen()でファイルを開きます。

with open(path, "r", encoding="utf-8") as f:  
    self.text.delete("1.0", tk.END)  
    self.text.insert(tk.END, f.read())  

with open() as f:というのはファイルをfという変数として開いて、withの範囲が終了したらfを自動で閉じる、という指定です。withの範囲はインデントを一段下げて指定します。
open()pathの次の引数"r"はファイルを開くオープンモードで、rを指定した場合は読み込みモードでファイルを開きます。encoding="utf-8"はファイルをUTF-8で開くという指定です。UTF-8というのは文字コードの一種で、日本語にも対応しています。文字コードと言うのは、テキストファイルのデータ列の定義方法のことです。UTF-8のほかにはShift-JISなどもあります。

self.text.delete("1.0", tk.END)textが持っているテキストを全て削除します。delete()メソッドは最初の引数に削除の開始位置、次の引数に削除の終了位置を指定します。
self.text.insert(tk.END, f.read())textにテキストを挿入します。insert()の最初の引数は挿入の開始位置で、tk.ENDは最後の位置の指定です。次の引数には挿入したいテキストを指定します。f.read()fのファイル内容を全て読み込んで結果として返しています。つまりファイル内容がinsert()の引数に渡されています。

save_fileメソッド

次にテキストをファイルに保存するsave_fileメソッドを見てみます。

    def save_file(self):  
        path = filedialog.asksaveasfilename(defaultextension=".txt",  
                                            filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])  
        if path:  
            with open(path, "w", encoding="utf-8") as f:  
                f.write(self.text.get("1.0", tk.END))  

このメソッドはopen_fileメソッドに近いです。
filedialog.asksaveasfilename()で保存するファイル名をユーザーにダイアログで指定させています。
extension=".txt"というのは保存ファイルの拡張子の指定です。
open()でファイルを開きますが、オープンモードはwを指定します。このモードは書き込みモードで、開くファイルは空の状態で新規作成されます。すでにファイルが存在する場合もファイルを空にしてしまうので、注意が必要な指定です。
f.write()でファイルにテキストを書き込みます。self.text.get(“1.0", tk.END)textに書き込まれているテキストをすべて取得します。1.0textの最初からで、tk.ENDtextの終わりまでを指定します。

【PR】フォルダにメモを書けるメモ帳は?

ここから当サイトが開発して販売している商品の宣伝になります。
当サイトが開発しているメモ帳は「几帳面エディタ」といいます。
BOOTHの販売ページは以下になります。

几帳面エディタとは?

几帳面エディタ

このメモ帳は、ファイルやフォルダにメモを書けるメモ帳です。
仕組みとしてはファイルやフォルダのパスにメモを紐づけて管理する仕組みです。
メモにはマークダウンを使うことができて、マークダウンで書かれたメモをグラフィカルに表示することも可能です。
また、メモ同士をリンクでつなぐことが可能で、メモ同士のネットワークを構築することもできます。
このメモアプリはネット通信をしないので、ローカルで動くマークダウンベースのWikiツールみたいに使うことも可能です。
※専用のWikiツールと比較できるほど多機能ではありません。

メモの他には画像も表示することが可能です。
※一部対応してない画像形式もあります。

メモのビューはWebブラウザのような「進むボタン」や「戻るボタン」が付いていて、メモのリンクをクリックしながらネットサーフィンみたいにパソコン内のファイルやフォルダを行き来することも可能です。
左側のファイルリストから右クリックでファイルのフォルダを開いたり、ファイルをWindowsエクスプローラーで開いたりすることが可能で、簡易的なファイル管理ソフトとしてお使いいただくことも可能です。
※専用のファイル管理ソフトほど多機能ではありません。

このメモ帳は試用版がありますので、どなたでも無料で試用することが可能です。販売ページからダウンロードできます。
動作環境はWindows11 x64になります。

おわりに

今回はパソコンで使えるメモ帳の作り方を解説しました。今回作ったのは最低限の機能のシンプルなメモ帳ですが、これでもけっこうやることがあって大変そうですよね。しかし今の時代はこれぐらいのコードはAIで簡単に生成できます。そこから一段進んだ開発者になるには、コードがどうやって動いているかわかるようになることです。それがわかるとAIには出来ない小回りの効いた修正なども出来るようになります。
この記事が何か参考になれば幸いです。