Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CGIプログラムを書いてみた
Search
uutan1108
August 25, 2024
Programming
1
310
CGIプログラムを書いてみた
ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会
https://mild-web-sap.connpass.com/event/327040/
uutan1108
August 25, 2024
Tweet
Share
More Decks by uutan1108
See All by uutan1108
技術以外をきっかけに交流するエンジニア向け勉強会
ohmori_yusuke
0
32
デザインって“感覚”だけじゃないVibe Codingからの気づき
ohmori_yusuke
3
64
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
140
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
470
市町村のオープンデータを使って「公園・トイレの口コミマップ」を作ってみた
ohmori_yusuke
0
49
エンジニアが組織に馴染むために勉強会を主催してチームの壁を越える
ohmori_yusuke
2
150
学びは趣味の延長線
ohmori_yusuke
0
93
言葉にするとやる気を再確認できる
ohmori_yusuke
1
38
生成AIで知るお願いの仕方の難しさ
ohmori_yusuke
1
170
Other Decks in Programming
See All in Programming
バイブコーディング × 設計思考
nogu66
0
100
Vibe Codingの幻想を超えて-生成AIを現場で使えるようにするまでの泥臭い話.ai
fumiyakume
21
10k
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
560
技術的負債で信頼性が限界だったWordPress運用をShifterで完全復活させた話
rvirus0817
0
1.3k
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
230
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.5k
Go製CLIツールをnpmで配布するには
syumai
2
1.1k
iOS開発スターターキットの作り方
akidon0000
0
240
画像コンペでのベースラインモデルの育て方
tattaka
3
1.5k
DataformでPythonする / dataform-de-python
snhryt
0
160
decksh - a little language for decks
ajstarks
4
21k
QA x AIエコシステム段階構築作戦
osu
0
260
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
KATA
mclloyd
32
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
BBQ
matthewcrist
89
9.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
It's Worth the Effort
3n
185
28k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Transcript
PerlでCGIスクリプトを書いてみた ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会 うーたん
自己紹介
自己紹介 • うーたん ◦ X:@uutan1108 • 株式会社ゆめみ ◦ 新卒2年目 ◦
サーバーサイドエンジニア • 趣味 ◦ アニメを観ること
私とゆるWeb勉強会@札幌
初めてのLT発表|うーたん https://note.com/uutan1108/n/nffce0e70facd
オンラインの時のゆるWebだったけど楽しかった • ワイワイする時間がいい • ハッシュタグでリアクションしてくださる方が多くて いい • 当時大学生の私でも発表しやすくてよかった • 司会、運営のtacckさんから感想がもらえるのがいい
以上、私とゆるWeb勉強会@札幌でした
本題 「PerlでCGIスクリプトを書いてみた」
CGIとは
CGIとは? CGI とは Common Gateway Interface の略です。通常の ページでは、あらかじめ用意された HTML ページを表示す
るだけですが、CGI を用いることにより、例えば、以下の ようなページを作成することができるようになります。 - カウンター - チャット - 掲示板 - アンケートフォーム CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述 されたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述さ れたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
まずはPerlでCGIを書いてみる
アイドルマスター(765プロ、346プロ) のアイドル 検索アプリ
None
None
機能 - キャラクターの情報で検索 - クエリパラメータで検索機能 - キャラクターの名前漢字または名前カナで検索機能
構成図
Perl(CGIスクリプト) +Apache+MySQL
None
Perlを書いた感想
書いてみてへぇと思ったところを紹介
サブルーチン🤔
ユーザーが定義する関数 Perl では様々な組み込み関数が用意されていますが、自分 で関数を定義することも可能です。 ユーザーが定義する関数をサブルーチンと呼びます。 Perl | サブルーチン https://www.javadrive.jp/perl/sub/
もう少し詳しく
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result;
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; サブルーチンを呼び出す
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; @_ に引数”World”
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; . で“Hello”と”World”を連結
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; 文字列の Hello World が出力
へぇ 💡
$ と @ の違い🤔
$と@の違いは、データの種類 $: スカラ変数を表し、単一の値(例えば、数字や文字列) を保持する 例: $scalar = 10; → 1つの値を保持する
@: 配列を表し、複数の値を保持する 例: @array = (1, 2, 3); → 複数の値を保持する
$: スカラ変数 #!/usr/bin/perl my $message = "Hello"; print $message; 文字列の
Hello が出力
@: 配列 #!/usr/bin/perl my @nums = (1, 2, 3); print
@nums; 配列の 123 が出力
もう少し詳しく
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data;
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; print $array_ref > ARRAY(0x560c6a730788) リファレンスが得られる
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; print
$array_ref > ARRAY(0x560c6a730788) print @$array_ref; > 123 リファレンス先の値を参照して出力する
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の (1, 2, 3) を出力
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の先頭の要素を $data に代入
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; $data の 1 を出力
へぇ 💡
最後に
アイドル図鑑のコード
None
タグの閉じ忘れでスタイル崩れてしんどかった
宣伝
PHPカンファレンス沖縄2024前夜祭 で登壇します PHPカンファレンス沖縄2024前夜祭 - connpass https://phpcon-okinawa.connpass.com/event/324902/
Scrum Fest Mikawa 2024 で登壇します Scrum Fest Mikawa 2024 -
新卒エンジニアが組織に馴染むために勉強会を主催して職能間の境界を越える | ConfEngine - Conference Platform https://confengine.com/conferences/scrum-fest-mikawa-2024/proposal/20268
アイドル名簿(今回作ったアプリのコード) OHMORIYUSUKE/perl-mysql-apache-on-docker https://github.com/OHMORIYUSUKE/perl-mysql-apach e-on-docker
お わ り