30歳文系公務員がPythonエンジニアを目指す

日々学んだことを積極的に発信中

Pycharmで関数をimportしようとするとエラー「Unresolved reference」が表示される事象について

UdemyのPythonによるWebスクレイピング講座(https://www.udemy.com/course/python-scraping-application/
を受講中に、次のようなエラーに遭遇したので備忘として解決法を記載しておきます。

 

〇発生した事象
「scraping.py」から、「assets」フォルダ内の「database.py」及び「models.py」内の関数をimportしようとすると「Unresolved reference」と表示されてしまう。

assetsフォルダ内に「__init__.py」を配置してパッケージ化を試みても、もなぜか「Unresolved reference 'assets'」と表示されてしまいimportできない。

 
〇解決法
実行ファイルの上位フォルダを右クリックし、「Mark Directory as」→「Sources Root」を選択。

ルートとなるフォルダをコンテンツルートとして指定してあげないといけないようです。

 

【初心者向け】Python+Flaskで簡単なWebアプリを作成①

Python3+Flaskを使って簡単なWebアプリを作成してみたので、メモとして残します。

前提

  • Python3のインストールが完了していること ※実行環境はWindows10を前提に解説。
  • Progate、ドットインストール等でPythonの基本的な文法を理解していること
  • (できれば)HTML・CSSの基本的な知識があること
  • (より理解を深めたいなら)HTTP通信の仕組みやデータベースに関する知識があること

Flaskとは

Python上で動作するシンプルなWebフレームワークです。
フレームワークとは開発に必要な機能をまとめたもので、活用することで簡単に開発を行うことができます。

Flask以外にもDjangoなど様々なフレームワークが存在しますが、必要最小限の機能を備え、軽量で高速に動作することから、 最初に覚えるフレームワークとしては最適です。

Flaskのインストールと準備

早速Flaskをインストールしてみましょう。
コマンドプロンプトを起動し、下記のコマンドを入力してください。
pip install Flask

実行してしばらくするとインストール完了です。

次に、作業フォルダを作成します。
デスクトップなど任意の場所に作業フォルダを作成してください。(ここではflaskAppフォルダとしました)

そのフォルダの中に、任意のPythonファイルを作成して保存してください。(ここではapp.pyとしました)

以上で準備は完了です。

手始めにHello world!を表示してみる

それではHello world!の文字を表示させてみましょう。
app.pyに以下のコードをコピペしてみてください。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == "__main__":
app.run()

保存したら実行してみてください。

コマンドプロンプトでのPythonファイル実行方法

cd 作業フォルダのパスで作業フォルダに移動後、
python app.pyを実行する。

実行後にhttp://localhost:5000/にアクセスすると、画面に「Hello World!」が表示されます。簡単ですね。

ちなみにこのアドレスはローカルホストといい、自分のPCのことです。自分のPC上でしか見ることができません。
外部に公開されているわけではありませんのでご安心ください。

コードを詳しく解説

上記のコードについて解説してみます。
「そんな細かいことはどうでもいいからさっさとWebアプリを作りたい!」という方は読み飛ばしてください。

from flask import Flask
まず初めにインストールしたFlaskパッケージをインポートします。

app = Flask(__name__)
次にFlaskクラスからインスタンスを生成します。
インスタンスとは、クラス(型)を実体化したものです。
ここらへんはわかりにくいので、オブジェクト指向に関するサイトなどで学習すると理解できるかもしれません。

このインスタンスはFlaskがテンプレートファイルやスタティックファイル(次回以降に説明)などをどこから探すのかを 認識するために必要となります。

@app.route('/')
@~はデコレータといいます。
引数にパスを指定することで、指定されたURLにアクセスした際の動作を、次の行以下に定義された関数と紐付けます。
※URLと動作の紐付けをルーティングといいます
@app.route(/)ならlocalhost:5000にアクセスした際のレスポンスを、@app.route(/test)ならlocalhost:5000/testにアクセスした際のレスポンスを指定することになります。

def hello_world():
return 'Hello World!
Hello World!」を表示するhelllo_world関数を定義しています。

if __name__ == "__main__":
Python のプログラムは、コマンドラインから直接呼ばれるか、import文で他のプログラムから参照されて呼ばれます。
このように書くことで、プログラムが直接呼ばれていることを判定することができます。
詳しく知りたい方はこちらのサイトがおすすめです。

note.nkmk.me

app.run()
Flaskを起動します。

少し長くなってしまいましたが、解説は以上です。

次回は、htmlファイルやcssファイルを表示させるやり方についてまとめたいと思います。

【初心者向け】PythonとRuby、どっちを学習するべき?

なんとなく人気があるらしい、という理由からPythonを勉強中の僕ですが、何かとよく耳にするRubyが気になったので、それぞれの特徴と、どんな人に向いているのかを簡単に整理してみました。

PythonRubyについて

「Pyhton vs Ruby」と表現されることもある、ライバル的な存在ともいえる両者。大きな共通点としては次のようなものがあります。

スクリプト言語である

プログラミング言語には大きく分けてコンパイル言語とスクリプト言語があります。

コンパイル言語の代表はCやJavaスクリプト言語の代表はPythonRubyJavaScriptPHPなどがあります。

スクリプト言語をものすごく簡単に説明すると、「簡単にプログラムを実行できるけど、実行速度がちょっと遅い」言語です。

学習の難易度も、コンパイル言語に比べると比較的易しいといえるでしょう。

文法がシンプルで初心者でも学習しやすい

どちらも非常に直感的で分かりやすい文法なので、初心者でも学習しやすい言語です。

また、PythonRubyよりもルールが厳密のため、誰が書いても同じようなコードになりやすいと言われています。

初めてプログラミング言語に触れる人にとっては学習難易度の低さは、重要な要素と言えるでしょう。

 

それではPythonRubyのそれぞれの特徴を見てみましょう。

Pythonの特徴

人工知能やデータ分析に強い

Pythonの大きな特徴として、人工知能やデータ分析に関するライブラリが豊富なことが挙げられます。

ライブラリとは、偉大なる先人たちが作った便利な機能がまとまったパッケージのことで、外部から自由に呼び出すことができます。

有名なライブラリとしては、行列計算などの数値計算を行うNumpy(ナンパイ/ナムパイ)や、機械学習Scikit-learn(サイキット・ラーン)などがあります。

これらを使用することで、誰でも簡単に機械学習やデータ分析を行うことができます。

世界的に需要が高まっている

AIやデータサイエンスに強いということで、今世界的に人気が高まっている言語です。

日本ではまだまだそれほどではないものの、アメリカでは非常に需要が高まっています。

また、Webアプリケーションの分野でも強く、YouTubeInstagramといったサービスにもPythonが使われています。

将来性は抜群なので、日本の転職市場でも今後は需要が高まっていくことが予想されます。

Rubyの特徴

Webアプリケーション開発に強い

RubyはなんといってもWebフレームワークの「Ruby on Rails」が非常に便利なため、Web開発の分野では非常に人気の言語です。

フレームワークとは開発を便利にするツールと思っていただければ大丈夫です。

Ruby on Railsで開発されたサービスとしてはクックバッド・freee・Huluなどがあります。
日本では、手軽で高速にWeb開発ができるということで、数多くのベンチャー企業で採用されています。

学習コストが低い

日本人が開発した言語ということもあり、日本語の解説が多く学習がしやすいという特徴があります。

Pythonは日本での普及はRubyほどではないため、英語のドキュメントを読まなければならない場面もあります。

また、プログラミングスクールの値段もPythonよりRubyの方が安い傾向があります。

 

以上で、PythonRubyそれぞれの大きな特徴を見てきました。では、それぞれの言語がどのような人に向いているのかを見てみましょう。

Pythonが向いている人

Web開発だけでなくAIやデータ分析もしたい人

Pythonにも有名なWebフレームワークとしてDjango(ジャンゴ)があり、Web開発の分野においても強みがあります。

なので、Web開発に興味があるけど、いずれはAIやデータサイエンスの分野にも触れてみたいという方におすすめです。

将来的に海外で働きたい人

Pythonは海外での需要が非常に高いため、英語ができるなら間違いなく海外でも活躍することができます。

海外で生活してみたいと思う人はPythonと英語を学んでおくとよいでしょう。

Rubyが向いている人

Web開発の仕事をしたい人

今後Web開発の仕事に携わりたいと考えている人には、Rubyが非常に有力な選択肢となるでしょう。

その場合は、Ruby以外にもHTML・CSSJavaScriptをマスターしていると、様々な企業で活躍することができます。

在宅・リモートワークをしたい人

Rubyは、働き方が比較的自由なベンチャー企業で多く採用されていることもあり、リモートワークで在宅で仕事をしたり、フリーランスエンジニアとして活躍したいと考えている人におすすめです。

Pythonは特に日本においては、リモートワークには向いている仕事が少ない傾向にあるようです。

おわりに

結局どちらの言語を学ぶかについては、その言語で何をしたいのか?という目的によって決めるのが間違いないです。

僕は、Webアプリケーションの作成をやりたいけど、AIやデータサイエンスといった分野にもいずれは関わってみたいという思いがあるので、このままPythonの学習を続けていこうと思います。

これからプログラミングの学習を始める方の参考となれば幸いです。

 

2020年のブログ方針とか抱負とか

あけましておめでとうございます。

実に半年ぶりの更新になります。

 

昨年は中小企業診断士試験の一発合格を目指し勉強していましたが、残念ながら2次試験で不合格となりました。

 

1次試験後に燃え尽き症候群になってしまい、2次試験対策のモチベーションがほとんど上がらなかったのが要因です。

 

ブログも診断士試験ネタ以外にあまり書くことが思いつかず、放置気味となってしまいました。

 

今年は昨年度とは大きく方向性を変えようと思い、抱負とブログ方針について書きたいと思います。

 

僕が今年中に達成したい目標は、プログラミングを学んでITエンジニアに転職することです。

 

今の仕事は残業も少なく安定しているのですが、どうしてもやりがいを見出すができず、昔から興味のあったITエンジニアへの転職を考えています。

 

プログラミング言語は多数ありますが、AIやデータ分析の分野で重宝されるPythonに以前から興味を持っていたので、これをメインに学習していく予定です。

 

未経験からAIエンジニアやデータサイエンティストに転職するのは極めて難しいそうなので、他の言語の学習も視野に入れながら学習していきたいと思います。

 

学習の順序はざっくりと次のように考えています。  

①書籍「Pythonふりがなプログラミング」で基礎を簡単に学ぶ

②ProgateのPython講座を受講

③UdemyのPython基礎や機械学習講座で学ぶ

④Webアプリ等を自作する+周辺知識の学習

 

当面はスクールには通わず、オンライン学習サイトをメインに独学で進めていく予定です。

 

今後は学んだことのアウトプットをヴログで積極的に発信していきます。

 

※参考までに学習の習慣化にあたって、メンタリストDaiGoさんがおすすめしていた習慣に関する本を紹介しておきます。

内容はシンプルですぐに読み終わることができるにも関わらず、習慣化のエッセンスが書かれているので非常におすすめです。

 
 
文系公務員からITエンジニアへの転職は珍しいのかもしれません。
 
困難もあるかと思いますが、転職までの過程をブログに記録していくので、同じ道を目指している方の参考になれば幸いです。

令和元年度中小企業診断士1次試験を受けました(自己採点結果)

令和元年8月2日・3日に中小企業診断士1次試験を受けてきました。

 

早速ですが本日発表された公式解答での自己採点結果を載せたいと思います。

 

経済:56
財務:64
経営:75
運営:72
法務:64
情報:免除
中小:51
計382/500(76.4%)

 

…ということで、マークミス等がなければ無事合格できたようです。

 

1日目の経営や、2日目の法務・中小が難しく、受験直後は足切りも覚悟しましたが、運も味方してなんとか合格点に達することができました。

 

6月末に受けたTAC模試では261点という悲惨な点数でしたが、諦めずに最後まで頑張って本当によかったです。

 

直前期の勉強内容

TAC模試後の1カ月間の勉強内容について、記憶が新しいうちに記録しておきます。

今後受験する方の参考になれば幸いです。

7月上旬

  • TAC模試の復習を時間をかけて徹底的に行った。
  • 間違えた箇所はテキストの該当箇所はもちろん、周辺知識も覚えるようにした。
  • 経営法務については、テキストに法改正があまり反映されていなかったため、出てきた改正点はすべてテキストにメモした。
  • 暗記する事項はEvernoteにメモし、スキマ時間にいつでも確認できるようにした。

7月中旬

  • クレアールのリバイバル答練(過去問をベースに選択肢の順番や文言等を少しいじったもの)を1科目2回分解いた。
  • なぜか労働法に関心を持ち、労働法入門の新書を購入して読んだ。このおかげか経営の労働法規問題は4問中3問正解できた。

7月下旬

  • クレアールの直前ファイナル答練(予想問題)を解いた。中小は間に合わず。
  • クレアール模試の経済・財務・運営を解いた。他の科目は間に合わず。
  • 苦手意識の強い財務会計の過去問を少しずつ解いた。アカウンティングの苦手な論点(連結会計税効果会計など)や、キャッシュフロー計算書、オプションなどは捨てて、ファイナンス分野をメインに演習。

試験前日・当日

  • 前日は翌日の試験のテキストを高速で読み通した。
  • 当日は少し早く起きて、テキストを高速読み。
  • 1日目は企業経営理論のみテキストを持参して、昼休みに主に組織論について再確認。他の科目はEvernoteの確認。
  • 2日目は情報が免除だったため、法務から中小の間の2時間で、主に中小企業政策の知識を一気に詰め込んだ。結果的に足切りを回避することができた。

今後について

正直、1次試験を突破できるとは思っていなかったため、2次試験は何も対策していない状態です。

 

来年の合格を目指すのが現実的かもしれませんが、ここまで来たらせっかくなので今年の合格を目指して全力で頑張ってみようと思います。

 

今年2次試験を受ける方は、ぜひ一緒に頑張りましょう。

TAC中小企業診断士1次公開模試を受けました

TAC模試の反省+今後の方針

以前から一つの区切りとしていた、TACの1次公開模試を先週受けてきました。

 

…結果は惨敗でした。

 

載せるのも恥ずかしい点数ですが、記録のために公開しておきます。

 

経済学・経済政策:52

財務・会計:24

企業経営理論:30

運営管理:53

経営法務:48

経営情報システム:免除

中小企業経営・政策:54

計:261点

 

1科目も60点に達していないという恐ろしい結果です。

特に財務会計と企業経営理論は目も当てられない状況です。

 

職場の異動や引っ越しなどの環境の変化により、5月・6月はほとんど勉強が手につかなかったので当然の結果かもしれません。

 

とりあえず1次試験までの残り1カ月は、切り替えて全力で勉強していこうと思います。

 

ただ1次試験の突破は相当厳しいと思われるので、科目合格狙い作戦に方向転換するかもしれません。

 

具体的には、2次試験にあまり関係のない経済学、経営法務、中小企業経営・政策を今年のうちに科目合格し、2次試験に関係が深い残りの3科目は来年の合格を目指すというものです。

 

幸いにも、前者3科目は今回の模試でもそこまでひどいわけではないので、現実的な作戦だと思われます。

 

よって今後はこの3科目を重点的に対策しつつ、残りの3科目の対策を行っていきます。

 

時間がないため、重要度が低い問題は捨てます。6割を取るためには基本問題を確実に取れるようになることが大事です。

 

【今後の予定】

7月前半:TAC模試の復習、クレアール模試自宅受験+復習、クレアール予想問題演習

7月後半:過去問2週目(ABランクかつ解けなかった問題)、中小の暗記、余裕があればクレアール直前答練

 

以上、簡単でしたがお読みいただきありがとうございました。

受験される方は頑張りましょう。

中小企業診断士学習の進捗状況と今後の方針について

今年の中小企業診断士試験に合格するという目標に向けて、昨年の12月から勉強を続けています。

…が、現在モチベーションが低下気味で勉強に身が入らない状況です。

このままではいけないと思い、自分を焦らせるためにも進捗状況と今後の方針についてまとめます。

続きを読む