電車の画像投稿サイトを作った。撮り鉄用【Laravel】

 

撮り鉄 @nsayamamoto

できました。

 

自分用の写真サイトを作りたい

 

bahnbuilder ch みたいな、自分用のサイトを作りたいなと思っていて、今までいろいろ試してた。

syachikuai.com/photo/index.php一番最初のころ作った奴。

 

海外鉄!地図が出るようにした作例。

石器時代の電車写真インスタっぽく3列にした作例。

 

SNSの役に立たない所

 

ツイッターもフェイスブックも、SNSってドンドン流れてしまって、過去を一覧で追う事はほぼ不可能だ。ツイッターではSince Until 検索はできるけど、めんどくさいし直感的ではない。そんなの使うのはストーカーくらいだろ。

 

加えて、ぼくはちょくちょくツイッターで暴言をする。主語をでかくして日本人はケチゴァイ(完全に個人的な親に恨み)(まぁ半分以上当たってるんですが)というデトックス作業をしてたら、愛国者に通報されたらしく、

「ヘイトスピーチなのであなたは3時間BANされました。」という事態が発生した!あのアカウントの余命もいつまでか分からない。

愛国者は洗脳されてるから常にハッピーだろうが俺はケチゴイ国家で正気を失いそうなんだから、正気を保つための暴言くらいはほっといてくれ。まぁ俺としてもやりすぎたと思ったが「このツイートを消しなさい」というキショいことをインターネット管理者に

言われるとは思わなかった。小学校の先生かよw

 

 

 

できた

 

撮り鉄 @nsayamamoto

できました。

 

丁度Ban されかけた日に出来た。(Mar 06, 2024)そのお陰で微調整に集中できたよね。

GPSついてる写真はショバ全部公開なので、使ってください。

 

こんなに大量の鉄の塊の写真を数年かけて撮りためて、本当に人生の無駄だと思う。

 

海外なんて行かないよーという人でも、まぁフーンくらいに見てね。

 

 

地図を見ると偏りが激しい。まだまだ行ってないなーと思うけど、逆にこれはこれで行きすぎだろうとも思う。

 

写真はお気に入りのは殆どアップ済みだけど、もっとあるので気が向いたら追加するね。

 

サイトつくりかた

 

僕程度の技術でも出来るので、それなりの理解力があればだれでもできると思います。

あとはChat GPTですね。(それを言ったらお終い。)

 

前提知識

  • PHP
  • Javascript
  • Linuxのコマンドライン操作

 

まぁ最近の小学生はこれくらいやってるらしいしな。

 

環境の準備

  1. サーバーを契約する。
  2. WinSCPとかのFTP入れる
  3. Tera Term などSSH接続の用意をする

 

実装の手順

  1. Laravel のインストール
  2. Laravel でユーザー作成(なくてもいいけどやってみた)
  3. トップ画面つくる
  4. 地図画面つくる
  5. 詳細情報画面つくる
  6. 上の3つのルーティング、コントローラーぜんぶつくる
  7. Leaflet で地図つくる
  8. Leaflet でマーカーつくる
  9. Leaflet で複数マーカーを使う外部ライブラリ入れる

とかやりました。

 

(9)マーカークラスターグループは、L.markerClusterGroup(); の1行だけで済んで驚いた。DBアクセスは1回だけで、あとはdone function()内で動かしているので、スピードも速い。

 

Laravelでハマったところ

 

  • DBカラム追加 変更時、Null許容しないとmigrationエラー
  • floatでちゃんと桁指定しないと小数点第3以降が勝手に消える (GPS情報入れるとき注意)
  • コントローラーに勝手に独自関数つくると500エラー (my funcとか作る必要ある)

 

DB関係は本当にパニックですね。インターフェースの難しさと言うか。

Laravelは、役割を厳密に求めるので、PHPのフリーダムさは失われているように思う。かわりにコードがグチャグチャになりにくいという大きなメリットがあると思う。

CMS ? を作ることに関しては本当に魅力的なフレームワークだと思った。有名で人気なだけあるよね。

1つページを表示させるだけでも、blade, route, Controller の3ファイルは最低でも作らないといけないので、学習コストはそれなりにかかると思う。フレームワークになれれば当たり前になるが。

あと/1 みたいに最後のパラメーターが別でも同じbladeを読み込ませるのはコントローラーってこう使うのか!と思った。

 

仕上げ

  • シンボリックリンクを public_htmlにはる。
  • SSL設定する (Xサーバーなら簡単だが1時間程度申請に時間がかかるらしい)
  • 最初は photo/?=”1.jpg”のような感じだったが、今時getメソッドはダサいのでphoto/1 みたいにした。じこまん

 

シンボリックリンクは、例えば今のドメインの syachikuai .xsrv .jp の直下に既存で public_html というディレクトリがあると、シンボリックを貼れない!今考えたら当たり前だが。

大抵の場合、勝手にpublic_htmlは生成されているので、「シンボリックを貼れません」というエラーが出た。理由に気づくのに数日かかった。

public_html2 とかにrenameして退避させてから叩こう。

 

何気にこういう仕上げが難しかった。

なんだかんだ、Laravelや Linux のシンボリックとか、Vi エディタの使い方の勉強になったし良かったんじゃないでしょうか(所感)

 

 

参考サイト

 

Laravelで簡単な画面表示を行う | Snome;

超初歩 俺みたいなヘボはこういうIDSKが必要だ。

 

【エックスサーバー】Laravelで作成したWebアプリを公開 | チグサウェブ

最初はこれのパクり。

 

ユーザーつくる

Laravelのログイン認証の基本(Authentication)を完全理解する | アールエフェクト

注意!↑だけだとエラーでできない。

Unable to locate file in Vite manifest: resources/sass/app.scss.の解決策 #PHP – Qiita

これもやる。↑

PHP フレームワーク『 Laravel 』入門 #7 ログイン機能とカスタマイズ方法|レンタルサーバーナレッジ

 

画像保存

Laravelで画像をアップロードする方法 #Laravel – Qiita

Laravel CRUDを実行するコントローラの役割 #Laravel – Qiita

 

 

画像圧縮 Intervention Image

【2024年版】LaravelでIntervention Imageを使う方法 #PHP – Qiita

ネットで出ているのは殆ど古い情報なので注意 ()

Laravelでintervention/imageを使う #PHP – Qiita

書き方は古くエラーで落ちるが、何をやりたいかはわかりやすい

 

レコード数(写真の枚数とか)を調べる

LaravelのEloquentでレコード数をカウントする方法と注意点を解説

 

DB関係

Laravelのカラム作成で使えるデータ型 #PHP – Qiita

Laravel:カラムを追加する #Laravel – Qiita

 

DBで日付追加しようとしたときNull許容しないと作れない

「Invalid datetime format: 1292 Incorrect date value」への対応法 #Laravel – Qiita

 

MySQL 新しいユーザー

MySQLの設定 | レンタルサーバーならエックスサーバー

 

 

シンボリック系

Linuxってこうやってシンボリック貼るんですね。

シンボリックリンクの作成と削除 #Linux – Qiita

Linux | シンボリックリンクの作成, 確認, 削除 – わくわくBank

 

自作CSSの置き場所

【Laravel】CSSファイルの設置場所と読み込み方!publicとresourceの違い

【Laravel】独自のCSSファイルを読み込む方法 #PHP – Qiita

ブレードルに <link rel=”stylesheet” href=”{{ asset(‘/css/style.css’) }}”>みたいにかくらしい。

 

Laravelは、絶対お前のソースコードをグチャグチャにさせないぞ!というフレームワーク製作者の強い意志を感じる。ちょっと違う所に自作関数をつくるとそっこうで500(サーバー)エラーが起きる。

これは凄いと思った。めんどくさいけど。

 

 

【PHP】エックスサーバーからメールを送信する方法 | オノログ

Laravel関係ないけど前使ったやつ

 

Laravelを常時SSL化する(初心者向け) #AWS – Qiita

これはやんなくてもSSL化できた。どうして。

 

 

愚痴

 

なんかやりたい事は出来てしまったので、もう人生張り合いがないなぁ。

あと本家のアドだらけサイト、syachikuai.com の方が未だにphp 7 で動いてるんだけどあれ何とか治せないのかなぁ。

 

一応ユーザーつくれるサイトなので、誰でも投稿できるようには可能だ。だがそれをやると「画像の承認」という運用が発生してしまうのが面倒だ。(フォームは画像データなら何でもアップロードできてしまうので、猫の画像でも通ってしまうし、最悪自分の股間を写メしてアップロードもできる)

 

これも読んでみませんか