【Django】初心者が画像処理アプリを作ってみた

 

こんにちは。のっくん(@yamagablog)です。

 

3ヶ月前まではDjango(ジャンゴ)の読み方すら知らなかった私ですが、本を読みつつネットを調べてwebアプリを作ってみました。

 

アプリを作るまでに調査した内容や苦労した点をご紹介したいと思います。

 

スポンサーリンク

 

作ってみたアプリ

 

まだPCにしか対応してませんがアップロードした画像をグレーに変換したり顔にモザイクをかけてくれるアプリです。

 

MozaMoza

 

画面はこんな感じです。

 

 

 

私は昼間は会社ですので、開発は土日や平日の夜(2~3時間)がメインになります。それでも1ヶ月ほどで簡単なアプリを作ることができたので、そこまで難しいものではないと思います。

 

プログラミング初心者の方やこれから始める方に少しでもプログラミングがそんなに難しくないってことを伝えられればと思います。

 

特に今回私が作ったアプリはPythonで書いており、非常にシンプルに書けるので初めての方にオススメです。

 

アプリの全体像は以下の通りです。

 

 

全体像を書くとなんだか難しそうに見えるのですが、実はコードの量としてはそんなに多くありません。

 

webアプリを作って公開すると色んな技術が身につくのでオススメですよ。

 

プログラミングの勉強方法

 

プログラミングを勉強するのに一番良いのは自分でアプリを作ってその知識を誰かに教えることだと言われています。

 

その辺りは、エンジニアの教科書である「SOFT SKILLS」に書かれています。以下の記事で要点をまとめてあるので良ければご覧下さい。

 

https://ymgsapo.com/soft-skills/

 

繰り返しになりますが、プログラミングを独学するには明確な成功基準を定めてそれを達成するために本やネット記事を調べて、調べたことを人に教えるのが良いです。

 

成功基準って言うのは、”自己紹介のページをHTMLで作る”のように具体的に書くと良いみたいです。

 

と言うわけで、僕はプログラミングを効率よく勉強するために自分の作りたいアプリを作ってその体験談をブログで発信することにしました。

 

目標を設定する

 

目標はなんでも良いのですが具体的なモノの方が良いです。

 

前々から、写真に写った顔をモザイク処理してくれるアプリがあったら良いのに。と思っていました。

 

ブログやインスタに写真をアップするときに他の人の顔が写ってるとなんか嫌ですよね。

 

今回はそれを自動的にやってくれるwebアプリを作ってみようと思いました。

 

と言うことで、今回の目標は「顔にモザイクをかけるwebアプリを作って公開する」にしました。

 

ネコ
なんか適当に決めた感じがするにゃー!

参考資料

技術書

 

さて、目標を言うのは簡単ですが実際に作るとなると色々考えなければなりません。

 

  • 画像処理(OpenCV)
  • ウェブアプリケーションフレームワーク(Django)
  • データベース(Django)
  • フロントエンド(Bootstrap)

 

とまぁこう書くと難しそうですがこの世の中は便利でして、市販の技術書を読むとだいたいの基礎が身につきます。

 

 

全部読んだと言うわけではないですが、自分の作りたいものに必要そうな部分は参考資料として読みました。

 

三冊で一万円程度です。高いと思いますか?

 

皆さんはメイプルストーリーってゲームご存知ですかね。私は大学生の時にハマったのですが、そのゲームの中で1番高いアイテムは武器を強化する強化書でした。

 

スキルを上げるための技術書もこれと同じです。でもそんなに高くないですよね。私は本がスキルを身に着けるための最も安価なモノだと思っています。

 

スキルをたくさん身につけて自分という武器を強化していきましょう。

 

ネットの情報

 

本はアプリを作る上での骨格、重要な箇所は書いてあります。けれども細かい要素技術については書いてありません。

 

なので、ググりまくって情報を集めましょう。

 

私の作りたいアプリの場合、Djangoで画像を取り扱うにはImageFieldを使用するのですがその使い方が書いてありませんでした。

 

アプリを公開する場合にはVPSの契約やデプロイのためのLinux構築作業が必要ですがその辺りも書いてありません。

 

そういう時はQiitaや他の人の書いたブログを読むと答えが書いてあります。それぞれのメリットとデメリットをまとめてみました。

 

Qiita

メリット
・日本語で書かれているので読みやすい
・サイトが検索上位に出てくるのですぐに見つかる

デメリット
・自分のメモとして書いている人が多いため、コマンドやコードの説明が省略されている時がある

 

ブログ

メリット
・説明が多いので分かりやすい

デメリット
・日本のブログはまだまだ少なく英語のブログが検索上位にくる

 

多分ですが、Qiitaの記事は100回以上見たと思います。

 

書かれた内容をやってみる→うまくいかない→他の記事を見る→やってみる→うまくいかない→以降繰り返し

 

このググって試行錯誤するのが結構好きでして、うまくいった時にはめちゃくちゃ嬉しいです。だから毎日コードを書こうっていう気になるんですよね。

 

プログラマにとって問題解決能力だったりググる力って大事です。オンライン講座やプログラミング教室だとこのあたりの力が身につかない可能性があるので、自分でアプリを作って能力を伸ばすのが良いと思います。

 

最後に

 

コードをコピペして実行とかだとどうしても受け身になってしまうんですが、自分で目標設定して作ると能動的に学習するようになるので楽しいですし習得が早いです。

 

試しに皆さんも是非何か作ってみてください。

 

ちなみに今回のアプリは2つ目でして、1つ目のアプリを四苦八苦しながら作った体験は以下の記事にまとめてありますので良かったらどうぞ。

 

https://ymgsapo.com/making-web-apps/

 

以上です。最後までご覧頂きありがとうございました。