World!Yuuuiです。yuuui=music:」みたいな基礎の基礎部分を勉強中で、それらをしっかり理解できるまでのレベルには達していなかったのです😭だから今回の勉強会でも、最初の方にめちゃくちゃコードの書き方について質問しまくって「このままだと最後までいかなくなっちゃうから...」ってみなさんを困らせてしまいました、、(ツクレルのみなさますみませんでした...!😢)でもね、だからといって今回参加した意味がなかったかというとまったくそうじゃなくて。プログラミングを勉強したての頃ってすべてが初めてだから、とりあえず勉強してみるけど開始早々知らない単語連発でもうすべてが???って感じで「何がわからないかわからない」みたいな状況に陥ることってありませんか?また、そもそもプログラミングって「作るための手段」なので、「つくりたいもの」が明確になってないとどんなに「print()」とか勉強しても身に付きづらい、応用しづらいなというのを感じていて。今回のように、「今は理解できないけどこういうことができるんだ」ということがなんとなくでも分かれば、「じゃあ私はこれをできるようになるために、今はこの部分を集中して勉強しよう」とか「これができるようになればあんなこともできるな、なるほど」とか、視界がクリアになって短期的な目標を立てやすくなると思うのです。ひとりで学んでいるとどこから手をつけたらいいか迷ってしまいがちだと思うのですが、それらを教えてくれる方がいてわからないことがあればすぐ聞けるという環境があるというのは改めて考えるとすごいことでは?と思います。最初は全然分からなかった私も、この記事を書くために自分で書いて、実行して、というのを繰り返すうちに、なんとなくだけど理解できるようになっていきました!勉強するきっかけをくれたツクレルさんに感謝ですね!なので今回の勉強会レポについては、私のような初心者に向けて「「自作モジュール作成」とはどんなものか?」をできるだけ初心者視点でわかりやすくお伝えする、をテーマに書いていきたいと思います。それでは参りましょう!今回の勉強会のゴール🥐PythonでBMIを計測するモジュールを作成して、ローカル環境にパッケージとしてインストールするのを体験しましょう。5.3の「作成したパッケージをインストールしよう」まで行うのが本日のゴールです。(以上、ツクレル勉強会レジュメより抜粋)「モジュール」とは?まず初心者は「モジュールって...?」となると思うのですが、それについては今回使用するツクレル教材の方でも解説してくださっています。モジュールとはプログラムにおける「部品」のようなもので、それ単体でも機能しますが基本的には別のプログラムで使用するためのものです。書いたプログラムをモジュールにすることで、作成したプログラムを別の用途に使いやすくなるというメリットがあります。今回はまず「BMIを測定する」という機能を持ったプログラムを作成するところからスタートするのですが、このプログラム自体はそのまま何もしなくても単体で使うことができます。同じような機能を持ったプログラムを別のプログラムでも使いたいとなったとき、毎回作り直すのでは手間がかかってしまいます。いったときに、プログラムを「部品化」つまり「モジュール化」しておくことでより簡単に機能を追加したり、交換したりできようになるので非常に便利なのです。要するに「BMI測定」という機能持った「部品(モジュール)」として独立させておくということです。モジュール化することのもうひとつのメリットは「パッケージ化することでGitHubなどを利用して公開し、他の人に使ってもらう」なんてこともできちゃう点です。今回のゴールに書かれている「ローカル環境にパッケージとしてインストールするのを体験しましょう。」というのはまさに「他の人も使える状態にするという手順を体験しよう」というお話でございます。モジュール化しただけでは作成者しか使えないので、パッケージ化しましょうね、ということです。よって、今回の勉強会のゴールは「Pythonで作ったBMI測定プログラムを部品化(モジュール化)し、みんなに共有できるようにパッケージを作ってみましょう!」ということです!(GitHubへの公開方法などについてはツクレル教材の最後の方でも触れているのでご興味があればこちらからどうぞ!)※ローカル環境?🤔という方はこちらの過去記事でちょっと触れていますのでよろしければ。colaboratoryを使って進めます。Colaboratoryを使ってやっていきます。初心者はいろんな前提条件を理解せずエラーに引っかかるので、原因を探るのもひと苦労だし、その問題に答える側も大変だと思います。そんななか丁寧に教えていただいた方々には頭が上がりません...。本当にありがとうございました。いつか「ツールはこれが使いやすいよ!」とかお勧めできるレベルになりたいです...。ご参考までにこちらも載せておきますね。【Python入門】Pythonコードの実行方法をまとめてみた今回は「プログラミングを書くこと」が目的ではなく「概念としてどういうものかを理解する」というのがテーマなので細かいコードの意味などには触れません。コードの意味が気になる!という方や一緒にやってみたい!という方はツクレル教材からコードをコピーすることができますので、そちらを使っていただくと非常に便利かと思います。Colabを使う方へ、知っておいたほうがよいかな〜と思った情報を共有しておきますと、GoogleColabは・90分間作業しない・作業開始から12時間経過どちらかの条件でインスタンスが落ちる仕組みになってます。プログラミングしながら調べ物をしていたら、いざ作業再開しようと思ったときに「消えてる...」という悲しい結末にならないように注意しましょう。Colaboratoryについての詳しい解説はこちらで見られます)▼まず今回の「BMI測定プログラム」はこちら。Colabで行っていきます。・165=height:身長を入力する部分になっております。いうとこちらの値を自由に入力変更して実行することで、BMIを測定できるという仕組みになっております。Colaboratoryを開き、「.py」という拡張子で新しいファイルを作成します。▼今回はデフォルトで入っている「sample_deta」というファイルの中に保存します。「新しいファイル」を選択し、ファイル名を「bmi.py」として保存します。2作った「bmi.py」をダブルクリックすると、右側にコードエディタが出てきますのでそちらに先ほどのプログラムのコードを貼り付けます。▼保存するときは「ファイル」タブからでもできますが、表示がある通りショートカットキーを使ったほうが早いし今後便利なので「Command+SまたはCtrl+S」でやってみましょう。保存する前に、「bmi_calc(60,165)」に入力してある内容は削除し、「bmi_calc()」の状態にしておいてください。(説明時に見やすくするために入力しておいただけなので)保存ができたら次に、作成したプログラムが正しく動作するかを確認します。プログラムの動作確認<確認手順>先ほどファイルを作成したときに「sample_data」というフォルダの中に保存しましたが、まずはじめに「bmi.py」が間違いなくその場所にあるかどうかを確認します。いうのも、プログラミングする際は「どこの場所」の「どのファイル」というのを正確に定義してあげないとプログラムが正しく実行されず、エラーが出てしまうので意外と大事な手順だったりします。segmentsの略)」というコマンドを使用すると、そのファイルの情報を確認することができます。Command+Enterで実行します。すると「sample_data」と表示されました。これで無事に「bmi.py」が「sample_data」にありますよ〜ということがわかりました。ファイルの場所が正しいことを確認できたら、次に動作テストです。<動作テスト手順>とりあえず最初に入力しておいた数値、体重=60kg、身長=165cmで問題なく動くかどうか見てみましょう。こちらを実行するためには「importメソッド」を使用してモジュールを読み込む必要があります。「え、さっきプログラム書いたじゃん」と思われると思うのですが(私も思った)、本来Pythonには「組み込み関数」といってPython言語に最初から用意されているメソッドがあり、それ以外は使う前に読み込む必要があります。(関数?メソッド?🤔という方はこちら→関数とメソッドの違いとは)要するに今回は使うモジュールは「BMI測定」という機能を持った独自のモジュール(デフォルトで入っていないもの)であり、単に「モジュールを作った=部品を作った」だけなので動かすことはできません。よって、動かすためにはimport(組み込む)が必要ということになります。さあ、それではimportしてみましょうか。体重60身長165と仮定して関数を呼び出します。新しくセルを追加して下記のコードを実行しましょう。bmi#bmi.pyの中の関数bmi.bmi_cluc()に引数を与えて実行bmi.bmi_calc(60,165)上記のコードを実行しましょう。‘標準体型’)上記のようにBMIと体型が取得でたら無事に動作テスト成功です。新しくセルを追加して実行してみます。・き・た!...という方は実際どれくらいいるのでしょうか?というのも、私はこれを表示させるために半日以上費やしてエラーを解決しました。Error」つまり「指定のモジュール探したけどなかったよ」というエラーが出てきました。半狂乱になりながらひたすらGoogle先生に教えを乞うていました。私と同じ状況に陥ったとみられる方のブログを発見。▼今回参考にさせていただいた「Pで作業軽減しましょ」の該当ページこれがなかったら今も泣きべそかきながらインターネットの海を彷徨っていたことでしょう...。ありがとうございます。Colabで作成したファイルはGoogleDriveの指定フォルダへ自動的に保存されるようになっているため、初めて使用する際にはGoogleDriveからモジュールをインポートするときにも同様のエラーが起きることがあるようです。<エラー解消手順>まず「GoogleDriveへのマウント」というプログラムを実行し、ファイルへのアクセス権を付与します。▼左上のフォルダマークをクリックします▼ポップアップが出るので「GOOGLEドライブに接続」をクリックします▼正常に許可できるとアイコン表示が変わりますこれでGoogleDriveへのマウント=ファイルへのアクセス権を付与できました。このあといよいよ当該エラー解消のためのコードを入力して実行します。Error」を解消するには「ファイル(モジュール)の場所を指定してあげればいい」模様(と推測)。具体的には「パスを通すことでファイル(モジュール)を見つけられるようにする」ということのようです。入力するコードは以下になっております。‘)のなかに入るパスは該当ファイルの右側にある点々の部分を選択、クリックすることでコピーできますので、別ファイルで同じ問題が起きたときはこの部分を置き換えればよさそうです。Errorエラーが出てしまった方はこちらで解決できるか、お試しください。Packages(またはPython)の略です。Pythonに公式に登録されたパッケージのインストールやアンインストールができるコマンドになります。!apt.」(!pipか!aptのどちらかを使って手動でインストールすることもできるよ)と書いてあります。(Yuuui翻訳/間違ってたらすみません)が、今回作成した「BMI測定プログラム」はパッケージ化されていないので!pipコマンドではインストールすることができません。いうわけでこれから、「BMI測定プログラム」をパッケージ化する作業を行います!<必要なファイル構成を確認>パッケージ化するにあたって必要なファイル構成はこちら。setup.py「BMIapp」というディレクトリの中に「__init__.py」と「bmi.py」というファイルがあり、その下に「setup.py」というファイルがあります。この形になるように作成していきましょう。<作成手順>1まず、「BMIapp」というディレクトリ(フォルダ)を作成し、先ほど作った「bmi.py」をこちらに移動させます。※正確にはディレクトリとフォルダは異なりますが、初心者の方にもわかりやすくするために(フォルダ)としています。▼BMIappにbmi.pyを移動したことで、先ほどパスを通した場所にbmi.pyがいなくなったので再度パスを通しなおします。2__init__.pyを作成します。こちらのファイルも「BMIapp」ディレクトリの中に作成し、以下のコードを入力して保存します。bmi_calc▼新しいディレクトリ(フォルダ)やファイルは既存データの右側をクリックすることで作成できます。こちらのファイルを作成しておくことでimportしたあとにモジュールを呼び出すのが簡単になる、とのことです。細かい役割などの話をすると非常に多くの使い方があり難しい内容になってしまうので触れませんが、気になる〜という方はPython公式チュートリアルにて解説していますのでご覧ください。3setup.pyを作成します。このファイルは「BMIapp」をパッケージとして認識させるためのものです。こちらは「BMIapp」の下に作成する必要があるため、今回は特定のディレクトリ内には置かずそのまま置きます。以下のコードを記述します。Independent”,])この「setup.py」はpipに対して「モジュールですよ〜」と認識させてあげるためのもので、中身は「メタ情報」になります。メタ情報とは「データのためのデータ」なのですが、データがゲシュタルト崩壊するので例を出しますと、みなさんに馴染みある「Excel」でいうなら、「作成者」や「作成日時」などが挙げられます。3.6.9”などの情報が入っていますよね。こちらも作成できたら保存します。ここまで大丈夫でしょうか?無事、最初に確認した通りにディレクトリの作成およびファイルの配置ができました。Colabにインストールします。気を取り直して続きです。あと少しですのでもうちょっと頑張っていきましょう。問題なくインストールできると、下記のようなログが表示されます。list」と入力して実行しますありました〜〜〜〜〜〜!やったね〜〜〜成功です!!!!そして最後の仕上げ。正常にインストールされていることが確認できたら、利用できるかを確認しましょう。▼はい!よし!無事に動作していますね!ありがとうございます!(謎のお礼)はい、以上で今回の勉強会のゴールPythonでBMIを計測するモジュールを作成して、ローカル環境にパッケージとしてインストールするのを体験しましょう。「作成したパッケージをインストールしよう」まで行うのが本日のゴールです。見事クリアしました!!!!!書いている私すら途中で何度も挫折しかけましたが、ここまで投げ出さずに読んでくださったみなさま、まことにありがとうございます...!お疲れ様でした!今回のまとめ🍬いや...本当に今回は真面目に難しかったです。あまりにも分からなすぎて「ブログやめようかな」とか思ったりもしたんですが(爆)、いや、有言実行や...!(謎の関西人)とひたすら自分に言い聞かせてガチで途中泣きながら進めました(笑)結果、けっこうな時間が掛かっちゃったんですけれども、この記事を書き始めたときと今では全然見える景色が変わりました。躓いた場所を調べに調べて自分で解決させられたときは、「やった〜!」って言って手を叩いて喜んじゃいましたしおすし。小さな一歩かもしれませんが、何事もこういう地道な一歩を重ねることでしか成長はできないんだなと強く思いました。・Pythonのモジュールを自作しよう*ご利用には無料会員登録が必要です。●今回(2020年9月18日(金))の放送●Pythonで自作モジュールを作ろう!※Youtubeに飛びます。picture上部へスクロール。