インターン
ブログ

TORICOインターン生のブログです。会社で起きたことについて情報発信していきます。

右記投稿者による投稿を見る

インターン最終日

こんにちは。23日目を終えた清瀬です。

今日は主にクッキーに関わるタスクをさせて頂きました。

コードを書き直すということで、他の部分に影響が出ないかを慎重に確認することに

想像以上に時間がかかりました。でもこれをしないと思わぬエラーを招いてしまうので、

大事なステップだったかなと思います。

そして、タイトルの通り今日がインターン最終日です。

来週の月曜はおやすみをいただいているため、

次は4月1日、新社会人として出社します。

新社会人として、今まで以上に頑張っていきたいと思います。

21日目

こんにちは、21日目を終えました清瀬です。

1週間おやすみを頂いていたため、久しぶりの出社となりました。

本日はSQLのタスクをいくつかと、その後にDjangoと睨めっこをしていました。

Djangoは多くの機能を備えてくれているため、簡単に機能を実装できます。

そのおかげで自分のような素人でもウェブアプリケーションが作れるようになっているのですが、

今回はそれが落とし穴でした。

自分のような素人にとってはDjangoは雲の上の存在であり、まさかバグなどあるはずもないと思っていました。

そのため、どうやって解決しようかと必死に調べたのですが、なかなか上手な方法を発見することができませんでした。

ついにギブアップして相談してみたところ、Django側に問題があるかもしれないということでした。

簡単にできる解決方法も提案して頂きましたが、「Djangoを書き換えてみたら?」という

素人には天地がひっくり返っても思いつかない提案をしていただいたため、

木曜日に挑戦してみたいと思います。

インターン20日目

こんにちは。20日目を終えた清瀬です。

本日は、先週の金曜日にレビューをしていただいたコードの直しをメインにしていました。

最近、様々なタスクをさせていただく中で可読性の大切さを痛感しています。

どんなデータが、どんな型で入っているのか

どこから何を取得して、何を返してくれるメソッドなのか

この行で何をやりたいのか・どうしてこのタイミングでかくのか

個人で勉強してきたためあまり意識したことはありませんでしたが、

他の方のコードを読むとその大切さが痛いほどわかります。

今後、自分のコードが誰かに読まれることを意識していきたいと思います。

19日目

こんにちは。19日目を終えた清瀬です。

今日は昨日完成させたAPI部分のテストと、受け取ったデータを表示する部分を作成しました。

テストはFactory-BoyとDjangoのTestCaseを使用しました。

独学で勉強した頃は「テストなんて後回しでいいや。きちんと動いているし」

と軽視していました。しかし自分が作成したものが実際にお客様に使われると思うと、

そんな安易なことを言ってられません。予期せぬエラーが起こらないように、

しっかりとテストを作成していきたいと思います。

表示部分に関しては、結構苦手意識があります。

というのも、HTML&CSSは一切参考書などは使ってきませんでした。

そのため、想像通りの表示にならなかった時はGoogle先生にお聞きして、

とりあえずの場当たり的な対処ばかりをしてきました。

だから、フロント部分はあまり理解が進んでいません。

苦手意識も強いため、しっかりと勉強していきたいと思います。

インターン16〜18日目

インターン18日目を終えました、清瀬です。

16日目からの3日間、DjangoのSerializer をつくっていたので学んだことを軽くまとめようと思います。

DjangoにはSQLを書かなくてもすむように、ObjectManagerというものが用意されています。

そのため簡単な処理はSQLを書くことなくDBをいじれるのですが、単純な処理に限られてしまいます。

そこで直接SQLを実行できるように、いくつかのメソッドが用意されています。

その一つがextra関数です。

extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None)

個人的にはまったのが、whereです。

tablesで別のテーブルを参照できるようになるのですが、

whereの引数に

1. 二つのテーブルを関連させる条件を書く( SQLでのON句のようなもの)

2. 絞り込みのためにつかつ(SQLでのWHERE句)

この二つのどちらになるのかが分からずに物凄い時間を費やしたのですが、

結論はなんと両方OKなんだそうです。

個人的には、どうして両方OKなのかがいまいちピンときていません。

もしかしたらSQLの理解不足かもしれないので、時間があるときに調べてみたいなと思います。

13 ~ 15日目

こんにちは。投稿をすっかり忘れてしまっていた清瀬です。

今回は投稿を忘れていたということで、13日目から15日目にしたことを振り返りたいと思います。

13日目

この日は、管理者用サイトで表示が遅くなっているページがあるということで、その対応をしました。

PHPどころかZend Frameworkにも慣れていなかったため、どこを確認すればいいのかすらもわからない状況からのスタートでした。

 Zend で個人的に驚いた点は、Djangoでいうurlsファイルがないということです。Djangoではurlを設定したうえで、

ロジック部分と結びつけるURLファイルというものがあるのですが、Zendにはそれがありません。

まだまだ経験の浅い初学者の自分は、

「え、じゃあどこを確認すればいいの?」

とアホヅラぶら下げて頭がフリーズしてしまいました。実際、一度ルールを知ってしまえば難しいことなんてないのですが、Djangoしか触ったことのなかった自分にはその点が驚きでした。

問題だったページは、SQLの処理に時間がかかっていたことが原因でした。しかしSQLも大変にシンプルで、これ以上の工夫のしようがありませんでした。

困り果ててまたもやアホヅラを晒していた私に、

「JavaScriptで処理に時間がかかっている部分を後から挿入すれば?」

というありがたいアドバイスをいただけたため、JQueryのload関数を使うことで無事に解決できました。

この日はこれだけで終わってしまいました。

14日目

そして、前回と今回はオブジェクトの一括変更の機能を担当させていただきました。

ECサイト内には、販売を促進するための画像をヘッダー部分に表示します。そのヘッダーは定期的に変更されるのですが、

今回は複数のヘッダーのステータスを一度に変更できる機能を、PHPとJavaScriptで作成しました。

とてもやりがいのあるタスクだったため、達成感をこれでもかと靡かせながら家路につきました。

電車で意気揚々と帰っていると、Slackに通知が。OKの連絡だと思い通知を確認すると

SQLインジェクションの恐れがあるため修正が必要

あんなにセキュリティーを担当させていただいたのに、すっかりと忘れていた自分に辟易としました。

ということで、今日はその修正をしていました。

インターン12日目

こんにちは。12日目を終えた清瀬です。

今日もSQLやデータベースに関する部分をやっていました。

SQLを書いていて悩むのは、文はどの順番んで処理をされているんだろう?ということです。

例えば

SELECT t1.name, t2.name
FROM TABLE1 AS t1
INNER JOIN TABLE2 AS t2.

こんな一般的なSQLがあります。

なぜ1文目の t2 は3文目に宣言されるよりも前に使うことができるのでしょうか?

知っている方にとっては当たり前のことかもしれませんが、今日は実行順序についてまとめたいと思います。

調べてわかったのですが、実はSQLの記載する順番と実行される順番は違うんだそうです!!

実行される順番は、

FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT

つまり、SELECT は JOIN や FROM の後に実行されるため、AS で宣言した変数名が使えるんですね。

じゃあなんで記載順序と実行順序を一緒にしなかったのでしょうか。

調べてみたら、どうやら英語の文法に従っているらしいです。

特に今回の業務で驚いたのが、書き換えるコマンド (SET)の後ろに条件( WHERE) を書くということです。

個人的には頭が混乱する語順なんですが、英語話者にとってはわかりやすいんですかね。

あしたもSQLに関する業務がありそうなので、頑張りたいと思います。

インターン11日目

インターン11日目を終えた清瀬です。

今日はいつもよりもたくさんのタスクをさせた頂ました。

インフラのことからアプリにかかわるタスクまで、様々な1日でした。

特に自分はインフラ関係はちんぷんかんぷんなので、たくさん教えて頂きながらこなしていきました。

インターンの無い日は自分でもAWSを触ってみているのですが、以前は全く分からなかった部分が、

少しずつでもわかるようになってくるのがとても楽しいです!!

独学でやっていた時はデプロイができなくて散々だった経験があるので、この機会にインフラについても

精通したいなと思います。

ついにインターンも2桁日目

こんにちは。10日目を迎えた清瀬です。

今日は午前中はAWSを、午後はSQLをメインに触りました。

先週の段階でAWSはある程度調べていたので さぁやってやるぞ と意気込んでいたのですが、

いざいろいろと導入してみると、予想外の出来事がたくさん……

現場では予想外のことが次々と起きるんだなと痛感しました。

SQLは簡単なクエリを作成しました。

「簡単な」とか偉そうに言いましたが、経験のない自分は調べながらなんとか、という感じでした。

しかもコードがやたら冗長で読みづらい。

また、「これを求められたということは、こういう情報もあったほうがいいんじゃない?」

というアドバイスもいただきました。

自分は求められたことに応えるのに必死だったので、もっと考えながら仕事をできればいいなと思います。

インターン9日目

こんにちは。1週間ぶりに出社した清瀬です。

突然ですが、みなさんはこんな画面をみたことはありませんか?


ぱんくずリストの例

検索機能の拡張機能の例

実はこれらには、構造化データというものが関わっていたのです‼︎

ということで、今日は構造化データについてまとめさせていただきます。

構造化データとは、HTMLの情報に意味を関連付けさせることができるデータのことです。

今までの検索エンジンは、HTMLをあくまでも文字列としてしか認識できていませんでした。

例えば、「株式会社TORICO」という文字を検索エンジンが認識したとします。

しかし、検索エンジンは「株式会社TORICO」は何を意味するのかはわかりません。

そこで、「この文字列は会社の名前だよ」と優しく教えてあげるのが構造化データです‼︎

もう一つ重要なものに、schema.org というものがあります。

これは事前に作成された辞書のようなものです。

例えば

「Website」は「ウェブサイト」を表します。
「Website」にはURLという属性があります。

というように、多くのことが決められています。

JSON-LDでは

'@context' = 'https://schema.org/'
'@type'= 'Website'

というように記述して、それが schema.org の辞書にある「Website」であることを検索エンジンに教えてあげます。

インターン8?日目

こんにちは、前回ブログを書き忘れていた清瀬です。

本日は、AWSのWAFについて勉強させていただいたので、
それをまとめたいと思います。
まずWAFとは、


Web Application Firewall(略称:WAF、ワフ)とは、ウェブアプリケーションの脆弱性を悪用した攻撃からウェブアプリケーションを保護するセキュリティ対策の一つ[1]。WAFを導入するウェブサイト運営者は、検出パターンを設定することで、ウェブサイトとウェブサイト利用者との間の通信の内容を機械的に検査する。WAFを使用することで、以下の効果が期待できる。(Wiikipediaより)


ちょっとよくわかりませんね。
WEBフレームワークは、デファルトでXSSやSQLインジェクションの対策をしてくれているものが多いそうです。

しかし、制作の都合上そのデフォルト機能をOFFにして、そのまま忘れていた・・・。

そんな時に役立つのがWAFです。WAFはWEBアプリケーションにリクエストが到達する前にその中身を精査してくれます。

AWSでは、この機能を実装するためにALBとWeb ACLsという機能が搭載されています。

ALBはリクエストの中身を確認し、IPやURLなど様々な条件を基にして、

そのリクエストを適切なターゲットグループ(サーバー・インスタンスの集まり)に振り分けます。

その過程で、ALBはACLsと連携をします。ACLsはルールの集まりのようなもので(たぶん)、

ここにどんな条件のものを弾いて欲しいかのルールを書くことができます。ACLsにはawsがすでに作成してくれている便利なルールがたくさんあるので、だれでも簡単にWAFを導入することができます。

こんな感じで、今日はAWSのWAFを勉強させて頂きました。こんなにもAWSが多機能だとは、今まで知りませんでした。これから、どんどん自分でもAWSを勉強していきたいと思います。

インターン6日目

インターン2週目を終えた清瀬です。

今日は、データベースに関するタスクを担当させて頂きました。
SQLのコマンドは1年前にちょろっとだけ勉強したのですが、
なんせ使う機会がなかったもので、完全に忘れてしまっていました。
確か、こんなコマンドあったよな?と調べながらやったため、
想像の6倍時間がかかってしまいました。

個人で勉強していた時、「なんでROLLBACKなんて使うんだ? COMMITしちゃえばいいじゃん」
と頭の悪いことを能天気に考えていたのですが、今日はじめてその機能のありがたみをしれました。
現場のDBには何万ものデータが保存されていて、「これは絶対に間違えられない」とその重さがわかりました。

来週もDBを担当すると思うので、SQLも復習しておきたいと思います。

インターン5日目

インターン5日目を終えました、清瀬です。

今日は、社内システムのテストをさせていただきました。
こちらはPHP/ZendFrameworkで作られていたのですが、システムの構造がとても難しかったため、
1つを対処するのにほぼ1日を費やしてしまいました。
ZendFrameworkは構造がDjangoとは全く違うので、どのコードがどんな役割をするのかが全く予想できませんでした。
分からなすぎて、MVCとMTVの違いから調べました。
?PHPの勉強もしたほうがいいのかもしれませんね。

ちなみに、手間取りすぎたせいで、せっかく勉強したGitを使う機会はありませんでした。

インターン4日目

週末にGitの勉強をすると豪語していたにもかかわらず、
全く勉強しなかった清瀬です。
とても反省しています。

今日は引き続き、テストをもとに修正をさせていただきました。
修正をするにあたって環境を構築したのですが、
押し寄せるErrorコードに全く太刀打ちできず、
「これはどうすればいいのでしょうか」を連呼するだけの存在になってしまいました。
せめて自分で検索して、問題を解決できるような力をつけたいなと思います。

また、今日はDjangoも触らせていただきました。
実際の現場で書かれているコードを読むことができて、
こんな機能あったんだ!!と驚きの連続でした。
Djangoは一番触れてきたフレームワークでしたが、それでもしらないことだらです。

もっと勉強しなきゃ!と強く思った一日でした。今度こそ本当に勉強します。

インターン3日目

本日は昨日したテストをもとに、修正を担当させていただきました。

自分はpythonとJavaしか触ったことがなかったのですが、
初めてPHPのコードに触って(本当に触っただけ)みました。
まだまだ理解からは程遠いですが、Pythonとは全然雰囲気が違うので、
これを機会に、ぜひ勉強してみようかなと思います。

また、初めてGitを業務で使う機会もいただきました。
今まで
init add commit push
の4つのコマンドを見つけたWEBサイトの言われるがままに打ち込んできたため、
Gitの基本的な部分を教えていただきました。
おすすめの本も貸していただいているので、この土日で勉強したいなと思います。





インターン2日目

インターン2日目を終えました、清瀬です。

初日は慣れないMACに四苦八苦でしたが、
2日目の今日は、初日に比べればだいぶ使いこなせるようになりました。
ただ、まだまだ使い方がわからずにしらべることも多いので、四苦八苦から二苦四苦という感じです。
自分でも何言っているのか、よくわかりません。

本日は、既存のサービスのテストをさせていただきました。
テストをするなかで、それぞれのサービスの構造などもしることができました。
サーバー側はどんな処理をしているのだろうと、想像しながらテストを行うのは、個人的にはとても楽しかったですね。
また、たくさん動かしていくなかで、どんなUIは使いやすいのかをじっくりと考えることができました。
この調子で、3日目も頑張りたいと思います。

インターン1日目

今日から、インターンでお世話になることになりました、清瀬です。

いざ初めてのインターン!!
と意気込んだ初日でしたが、、、
MACわからん!USキーボード慣れない!!
と、緊張とわからないことだらけで、自分のポンコツさが痛い程身にしみたスタートダッシュとなりました。

記念すべき初日のインターンは、セキュリティーについて勉強させていただきました。
XSSやSQLインジェクションという攻撃をどうやって防いでいくのか。一度、調べたことはあったのですが、
調べるだけで終わっていたため、現場ではどのように対処されているのかを教えていただくことができました。
ローカル環境で自作したアプリに、実際に攻撃を再現をしていただきました。本当に自分のアカウントで身に覚えのない
投稿がされていて、セキュリティーの重要性がよくわかりました。

セキュリティーという責任が関わるお仕事を手伝わせていただくため、身を引き締めて、
これからのインターンを頑張って行こうと
思う、そんな初日でした。