
PHP
PHPエンジニアの平均年収は?フリーランスの年収相場も解説します
PHPエンジニアの平均年収・年収相場 求人検索エンジン「スタンバイ」の「プログラミング言語別 平均年収」(2017年)によると平均年収は522万円で順位は10位です。正社員の求人情報約250万件のうち、各プログラミング言語名が含まれる求人情報の給与金額の平均値を集計しています。 また同サイトに掲載されている正社員の求人情報約324万件を対象に、各プログラミング言語名が含まれる求人情報の提示年収の中央値を集計した「プログラミング言語別年収ランキング2018」(提示年収の中央値ベスト10)では575.1万円で3位となっています。 引用:「スタンバイ(https://jp.stanby.com/)調べ」 PHPの平均年収・年収相場(フリーランス) 弊社調べのPHPを使用するサイーバーサイド案件の平均年収です。まずは一番高額な平均年収をみてみましょう。案件数が2件と少ないですが、かなり高額で1320万円です。いかにPHPの需要が高いか伺えます。 案件数が一番多いのは840万円で案件数が42件となっています。続く33件と案件数が多いの960万円です。これら840万円と960万円を基準に案件選びを進めても良いと思います。案件数はトップクラスのため、仕事に困ることも少ないでしょう。 テクフリ調べ(2020年2月15日) テクフリでフリーランス案件を探してみる

Pascal
Pascalの歴史を分かりやすく解説します
Pascalは約半世紀前の1970年に開発されたプログラミング言語であり、開発者はニクラウス・ヴィルトです。 Pascalという名称は哲学者である、ブレーズ・パスカルに由来していると知られています。 マイクロソフトやアップルがパソコンを発表するよりも以前であることから、プログラミング言語の歴史としては古くから存在しているプログラミング言語といえるでしょう。 そんなPascalの特徴は文法と定期がコンパクトにまとまっているということ。 そして1958年に開発されたALGOLをベースにして開発されたという側面もあります。 本記事ではPascalはどのように誕生・発展してきのか、その歴史を黎明期から見ていきましょう。 テクフリでフリーランス案件を探してみる Pascalの黎明期について(1960年代) Pascal黎明期にあたる1960年代は、Pascalの開発に大きく影響したALGOLの新たな機能が開発された時期でもあります。 1960年にはALOL60、1968年にはALGOL68として改定され可変配列や演算子識別などの機能を有するようになっています。 このようなALGOLの機能拡張が後のPascal開発にも影響したといえるでしょう。 そして1960年代前半のコンピュータの用途の多くは軍事的な需要を満たすことにありました。 しかし集積回路のコストが下がるに伴ったこと、そして半導体メモリの技術が計算機に取り入れられたこともあり1960年代後半からは徐々にパーソナルコンピュータが普及をはじめます。 また1964年にはIBMからメインフレームのコンピュータシリーズであるSystem/360が発表されています。 同コンピュータシリーズは商用に利用されるたけでなく、科学技術の計算にも用いられました。 Pascalの誕生について(1970年代) Pascalの誕生は1970年代ですが同時期に国内では日本万国博覧会が開催され世界中から6421万人の人が大阪に訪れた年です。 人類の進歩と調和をテーマにしたこのイベントは後の多くの人の記憶に残った1970年代を代表するイベントの一つでもあります。 Pascal開発の背景には教育を目的としていたこともあり読みやすさを重視した仕様となっています。 その後1975年までの間にPascalは機能拡張されていきPascal-PとPascal-Sが開発されています。 そしてPascal-Pはスイス連邦を代表する世界有数の工科大学でもあるチューリッヒ工科大学で開発されました。 チューリッヒ工科大学でこのような開発が行われた背景には、開発者であるニクラウス・ヴィルトの出身校であったことが関係しています。 では開発者のニクラウス・ヴィルトとはどのような人物だったのでしょうか。 ニクラウス・ヴィルトについて ニクラウス・ヴィルトは1934年、スイスのヴィンタートゥールに生まれます。 高校生の頃には自作のロケットを作成しており、技術者としての才能は少年時代からも垣間見ることができます。 高校卒業後にはチューリッヒ工科大学に進学し、1959年には電気工学の学位を取得。その後は電気工学の博士号を取得、スタンフォード大学での教授を務めるなど華やかな経歴を歩みます。 1984年にはPascalの開発など数々の貢献が認められ、ACMチューリング賞を受賞しています。 Pascalの成長期(1970年代後半~1980年代) Pascalの成長期は1970年後半から1980年代です。 1975年には並列動作用に拡張された機能の追加や、OS(オペレーションシステム)の開発に用いられるなど、システム開発にも取り入られるようになっています。 そして同時期にはPascal-Pに4つのバージョンが開発されており、その中でもPascal-P2はUCSD Pascalの開発のベースとなっています。 UCSD Pascalとは、Pascal処理系の一つであり、アメリカのサンディエゴ大学での開発されたPascalです。 コンパイラ機能を含む統合開発環境として実装されたため、Pascalの機能としては飛躍的な成長となったといえるでしょう。 またPascalはmacOSの標準言語としても使用されてきたため、Pascalの歴史を知る上でもアップルの存在は大きいことが分かります。 ちなみに1970年代の注目すべき出来事の一つにアップルコンピュータの開発があります。 1976年はスティーブジョブズがスティーブウォズニアックと共にアップルコンピュータの開発、販売をスタートさせて時期でもあります。 1977年には米国内におけるパーソナルコンピュータの普及に貢献したといえるほどビジネスとして成果を残しています。 このように1970年代はパーソナルコンピュータに注目が集まりはじめた時期でもあります。 そして家庭用ゲーム機であるファミコンが販売開始されたのは1983年です。 ファミコンの開発に用いられたのは主にアセンブラ言語ですが、このような出来事からプログラミング語やITへの世界的な注目が高まりました。 これらの時代背景もPascalの成長に少なからず影響していたといえるでしょう。 テクフリでフリーランス案件を探してみる Pascalの現在(2019年) 2019年現在のPascalはその後新たなプログラミング言語が開発されたこともあり、主流のプログラミング言語ではありません。 しかし2019年現在注目を集めているプログラミング言語に影響を与えたブログラム言語として知られています。 ではPascalは現在のどのようなプログラミング言語に影響を与えているのでしょうか。 その一つがJavaです。 Javaは国内でも多くの開発現場で利用されているプログラミング言語の一つであり、様々な業界のシステム開発や保守、運用のニーズがあります。 実際にJavaは国内の求人数がトップクラスに多く、その技術を有するエンジニアは少なくありません。 JavaとPascalでは変数名と型名の記述の順番など違いもありますが、クラス名記載における大文字と小文字の区別などプログラミング言語としての影響を垣間見ることができます。 Pascalの影響があるプログラミング言語にはGo言語もあります。 Go言語とはGoogleが開発したオープンソースのプログラミング言語です。 公開された時期は2009年という比較的新しいプログラミング言語ですが、構文がシンプルで軽量という特徴があり、ソフトウェア開発に取り入れている企業は少なくありません。 繰り返し構文は最小限であり、サポートの対象となっているのはfor文のみでOSへの対応はLinuxだけでなく、Mac、Windowsにも対応しています。 実行速度も早く、プログラミングの確認がすみやかに行えるためソフトウェア開発の効率を高めることが期待できるプログラミング言語です。 Go言語は国内ではまだまだ主流の言語ではありませんが、米国ではその評価が高くGo言語を習得したエンジニアは日本円にして年収1000万円以上を獲得している人も珍しくありません。 米国などグローバルな環境でエンジニアとしての活躍を目指す場合、収入の面でもGo言語は魅力的なプログラミング言語だと考えることができます。 Go言語はコンパイル言語でもあるため、同じコンパイル言語であるJavaやCを習得している場合は比較的馴染みやすいプログラミング言語でもあります。 まとめ Pascalは、1970年にスイスのニクラウス・ヴィルトによって開発されたプログラミング言語です。1958年のALGOLをベースとしつつ、元々が教育目的で設計されたため、文法がコンパクトで読みやすいという特徴を持っています。 その全盛期はパーソナルコンピュータが普及し始めた1970年代後半から1980年代です。この時期、PascalはOS開発や統合開発環境の実装、さらには初期のmacOSの標準言語として採用されるなど飛躍的な成長を遂げました。開発者のヴィルトはこれらの功績により、1984年に計算機科学の最高栄誉であるチューリング賞を受賞しています。 現在は主流の言語ではありませんが、Pascalの設計思想は現代の主要言語にも受け継がれています。具体的には、Javaにおける記述ルールや、Googleが開発したGo言語の設計などにその影響を見ることができます。このようにPascalの変遷を知ることは、プログラミング言語の流行や需要の移り変わりを理解し、エンジニアとしての将来を見通す上で重要な指針となると言えるでしょう。 テクフリでフリーランス案件を探してみる

assembly
assemblyの特徴や歴史について分かりやすく解説
assemblyについて assemblyとはアセンブリ言語とも呼ばれる低水準言語の一つ。assemblyを用いることでコンピュータを動作させる機械語が人間でもわかりやすい形で記述することができます。 「Prolog」などのプログラミング言語は高水準言語と呼ばれており、抽象度が高く人間でも理解しやすいことを指しますが、低水準言語は対照的に人間にはわかりづらい機械語もしくは機械語に近いプログラミング言語を意味しています。 また英語でassemblyは「組み立てる」という意味を持っており、IT業界の現場におけるassemblyはプログラミング言語として認識されているのが一般的です。 ではそんなプログラミング言語であるassemblyはどのような歴史を有しているのか、assemblyの誕生から順番に見ていきましょう。 テクフリでフリーランス案件を探してみる assemblyの誕生(1940年代) assemblyの誕生の背景には機械語を使ってプログラミングをすることが人間にとっては難しかったことがあります。 機械語は基本的に0と1のみで記述されますが、0 と1だけで様々な命令を記述するのは簡単なことではありません。 assemblyなどプログラミング言語が誕生するまでプログラミングのハードルは現在とは比較にならないほど難しいものだったことがわかります。 そこで生まれた発想が、機械語の意味を単語や記号に持たせることです。このような発想からプログラミング言語であるassemblyは誕生します。 EDSACとは1940年代頃のイギリスの初期のコンピュータですが、このEDSACにもassemblyの機能は取り入れられていました。 これらのことから記号や単語を自動的に機械語に変換するニーズはコンピュータの歴史の初期から存在しており、assemblyはプログラミング語の歴史を語る上では欠かせないプログラミング言語であることがわかります。 assemblyの黎明期(1940年〜1950年代) assemblyの誕生からもわかるように、assemblyの黎明期とはコンピュータの黎明期でもあります。 パーソナルコンピュータの普及がはじまったのは1970年代ですがそれよりも前の大きな筐体が必要だったコンピュータの黎明期が、assemblyの黎明期でもあるのです。 コンピュータの歴史に目を向けると国内では1942年に国内初の大型アナログ計算機である機械式微分解析機が開発されています。 機械式微分解析機は積分計算を行うことができ、回転する円盤を有しているという特徴があります。 また微分方程式の機械の設計は1800年代前半から行われおり、1912年にはアナログコンピュータの開発が行われてきたという流れもあります。 このような流れを見ていくとコンピュータはそもそも計算ニーズから誕生した機械であることがわかります。 そして1946年には世界初の電子コンピュータである、ENIACが完成されます。 ENIACは現在のコンピュータと比較すると、わずかなメモリしかありませんでしたが広い範囲の計算に対応できるという特徴がありました。 当初はアメリカの弾道計算という軍事利用という目的に開発されたという背景もあります。 また1951年には商用コンピュータであるFerranti Mark 1が開発されます。 Ferranti Mark 1は音を出す機能がありチェスのゲームプログラムが作成されるなど、当時は革新的な機能を有するコンピュータとして知られました。 このように1940年代から1950年代前半にかけては、コンピュータから計算機から飛躍を遂げた時期でもありました。 それに応じてプログラミングのニーズも増え始め、assembly言語が必要とされる機会が徐々に増えていった時期でもあることが分かります。 しかしこの頃はコンピュータそのものが多くの人にとって馴染みがあるものではなくassemblyも業界内でのみ認知されている程度のものだったことが予想できます。 テクフリでフリーランス案件を探してみる assemblyの成長期(1960年〜1980年代) コンピュータの普及がassemblyの普及と関連してきたことは前述の通りですが、1970年代からassemblyも成長期に入ります。 その理由の一つがパーソナルコンピュータの開発です。 1960年代からパーソナルコンピュータという言葉が知られるようになりましたが、その時点では一般的ではありませんでした。 しかし1970年代になるとパーソナルコンピュータは徐々にその存在が多くの人に認識されるようになります。 そのきっかけの一つがIBMの開発したHP-9800シリーズなどのコンパクトなコンピュータです。 当時は決して低い単価ではなかったため当時は企業で使われることがほとんどでしたが、卓上で操作できるほどコンパクトであり、個人でも使えるというコンセプトは多くの人々の関心を集めました。 また1976年には、スティーブ・ジョブズがアップル1を発売しており、翌年にはアップル2を販売してビジネスとしての成功をおさめています。 これらのことから1970年代はパーソナルコンピュータの聡明期となり、これまでとは異なりコンピュータそのものが一般の人にとっても身近になりはじめた時期ともいえます。 コンピュータに触れる人の数が増えればコンピュータを使って何かしたいと考える人が増えるのは自然なことです。 プログラミング言語であるassemblyの成長期にとってパーソナルコンピュータの誕生は重要なキーワードの一つだといえるでしょう。 assemblyの現在(2000年以降) assemblyは現在では様々な種類が開発されており状況に応じて使い分けがされています。 ではassemblyにはどのような種類があるのか、その一部を見ていきましょう。 CASL/CASL2 エンジニアの登龍門的試験ともいえる情報処理技術者試験では、CASLという試験用に作られたassembly言語が用いられています。 CASLはassemblyに関する特定のエンジニア業務に従事する受験者とそうではない受験者の間で優位性を無くすために開発されたという背景があります。 2001年以降はCASL2が利用されています。 Microsoft Macro Assembler (MASM) Microsoft Macro AssemblerはMS-DOS上における開発のためにマイクロソフト社が開発したassembly言語です。 構造化プログラミングに対応しており、Windowsのコンソールのアプリとなったバージョンもあります。 現在では単独販売は行われていませんが、それでもVisual C++ .NET 2005 など Visual C ++ に同梱されるなど構成する一部分として利用されています。 GNUアセンブラ GNU(グニュー)アセンブラとはGNUプロジェクトで利用されるassembly言語。 GNUプロジェクトとはマサチューセッツ工科大学にて発表されたプロジェクトであり、ユーザーがソフトウェアを配布・修正などする権利を法的に保証しているプロジェクトです。 ソフトウェアの修正や研究に権利が与えられているこのようやソフトウェアはフリーソフトウェアとも呼ばれています。 LinuxはこのGNUプロジェクトにから誕生した、フリーソフトウェアのオペレーティングシステムでもあります。 またGNUアセンブラはLinuxなどのコンパイルにも利用されています。 ターボアセンブラ ターボアセンブラはx86アセンブラパッケージであり、コマンドラインベースという特徴があります。 ターボTurbo Pascal や Turbo BASICなどと合わせて使うことができ、その速度に定評があります。 使用可能なオペレーティングシステムとしては、WindowsとDOSがあります。 参考 GNU Project Microsoft マクロアセンブリ リファレンス assembly 言語は現代でも市場から必要とされる低水準言語 ここまで紹介してきたようにassemblyはコンピュータの黎明期から存在している低水準言語であり、コンピュータの普及・開発とともにニーズが高まったプログラミング言語です。 低水準言語となるためエンジニアでも業務内容によってはassemblyに携わる機会がほとんどないという人も少なくありません。 しかしプログラミング言語を学習する上では、assemblyを理解することは無駄ではありません。 たとえ普段の業務で扱うのが高水準言語に限られていたとしても、機械語に近い低水準言語を学ぶことでプログラミング言語そのものへの理解を深めることができるからです。 また国内でIPAが提供している国家試験「基本情報処理技術者試験」を受験する場合は、選択問題としてアセンブラ言語が出題されています。 assemblyを学ぶことは資格取得にも有用な取り組みでもあるのです。 低水準言語についての理解を深めたい場合はassemblyについて学習してみてはいかがでしょうか。 参考: IPA情報処理推進機構 テクフリでフリーランス案件を探してみる

Android
AndroidでRealmを使ってみた〜お気に入り機能の実装(其の一)〜
気に入り機能の実装 今回はAndroidアプリでReamlを利用してデータの管理をしてみようと思います。 実装したい機能は「お気に入り機能」 SQLiteは触ったことあったけど、 NoSQLであるReamlを使うのには勉強時間がかかるのではないかと心配・・・ しかし、日本語のドキュメントがありとても親切↓ https://realm.io/jp/docs/java/latest/ 更に、GitHubで「Android Realm」と検索すれば結構簡単なコードがでてくるのでこれらを拝見しながら いざ、実装!! RealmはNoSQLなのでキーと値のペアでデータを格納していきます。 最初にキーとなるModelなるクラスを作ります。 public class FavoriteModel extends RealmObject{ private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } } こんな感じで作成します。 重要なのが extends RealmObject です。 RealmのModelとして宣言して、あとはカプセル化してゲッター・セッターを書くだけ!! 続いては、データをRealmに格納する処理を書いていきましょう!! RealmConfiguration config = new RealmConfiguration.Builder(detailActivity) .name(FavoriteDataFile) //データを格納するファイル名を指定 .build(); Realm realm = Realm.getInstance(config); //Realmを使う宣言 final List<FavoriteModel> favoriteList = new ArrayList<>(); FavoriteModel favoriteModel = new FavoriteModel(); favoriteModel.setId(id); favoriteList.add(favoriteModel); //先ほどのModelに格納していく //Modelに格納したデータをRealmに格納し直す realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { realm.copyToRealm(favoriteList); } }); //Realmを終了することを忘れない realm.close(); 格納はとても簡単にできました!! 次は格納したデータを取得して表示してみたいと思います!! テクフリでフリーランス案件を探してみる

Java
PlayFramework(Java)で開発環境と本番環境の違いで苦労した
今回の苦労した点は conf/内のファイルが読め込めない!! というもの。 やりたいこととしては、conf/内に何かしらのファイルを置いておいて、application.confに記述したパスを参照して、Javaで読み込むというもの。(PlayでJava?という気持ちは内にしまっておいてください。。。) 開発環境で動作させるrunやstartですと問題ないのですが、本番環境で運用する為のstageやdistをして実行すると読め込めないという状況が起きました。 まずは、 開発環境で動作したコード //application.confを読み込みにいく Config config = ConfigFactory.load(); //ファイルパスを取得 String filePath = config.getString("filePath"); //ファイルパスからFileインスタンスを生成 File file = new File(filePath); //NullPointerException このコードで実行すると、ファイルが見つかりません。 ConfigFactory.load()を利用するとデフォルトでapplication.confを読みにいくのですが、runやstartと違ってstageやdistしたパッケージ内にはconf/が存在していないのでパスが違ってエラーになります!! ではどうしたものか・・・色々調べてみると、 便利なものが存在しました!! play.Application.getFile(String relativePath)このメソッドはアプリケーションのルートパスからの相対ファイルを取得するというもの。アプリケーションのルートパスの参照ならconf/も存在するので、ファイルも取得出来る!!それでは、 本番環境でも動作したコード //application.confを読み込みにいく Config config = ConfigFactory.load(); //ファイルパスを取得 String filePath = config.getString("filePath"); //ルートパスからファイルを取得 File file = Play.application().getFile(filePath); これでファイルを取得出来ました!!因に、application.confに記述するパスはconf/pathとなります。 フリーランス案件を探す

SQL
SQLの歴史についてどこよりも丁寧に解説
SQL(エスキューエル)とは? SQL(エスキューエル)とはデータベースを操作・定義するためのプログラミング言語です。SQL(エスキューエル)を使えると、データの取得・更新・削除・追加などをすることができ、データベースにあるデータを簡単に処理できるようになります。 他のプログラミング言語と併用して使う場面が多く、ほとんどのアプリケーションがデータベースとやり取りをすることでデータを表示しているので、皆さんがお使いのスマートフォンアプリやWebサービスの裏ではSQL(エスキューエル)が利用されています。 例えば、何かECサイトで物を買うときに氏名や住所などを入力すると思いますが、そういった情報が企業のデータベースに保存され、企業側は個人情報としてそのデータを取り扱います。このようにSQL(エスキューエル)は日々皆さんが使っているシステムの裏で使われています。 SQL(エスキューエル)の中で一番使われているものがMYSQLです。様々なSQL(エスキューエル)アプリケーションの中でも高速で大量のデータを処理してくれ、オープンソースなので皆さん無料で使えるため多くの企業・個人が利用しています。最近ではビッグデータ処理に適しているNoSQLが流行るなどSQL(エスキューエル)は日々進化しています。 SQLの案件を探す SQL(エスキューエル)が誕生したきっかけは? SQL(エスキューエル)が誕生したきっかけについて見ていきましょう。SQL(エスキューエル)のきっかけとなった出来事が1970年代にあります。 この頃に、IBMのSanJose 研究所 (現 Almaden 研究所)がSystem Rという世界初となるRDBMS(リレーショナルデータベース管理システム)を開発しました。そこで、リレーショナルデータベースを管理するためのプログラミング言語SEQUEL(Structured English Query Language)が登場しました。 SQL(エスキューエル)の前身となったSEQUEL(Structured English Query Language)はSQL(エスキューエル)と同じくデータベースを操作・定義するためのプログラミング言語ですが、この後改良が何度もされ、今のSQL(エスキューエル)になっています。 SQL(エスキューエル)はシークェルと呼びますが、この呼び方もSEQUEL(Structured English Query Language)の呼び方から来ています。名前自体は何度も変わり、最終的にSQLになりましたが、呼び方は変わっていません。SQL(エスキューエル)という名前が何の略なのか気になる方もいらっしゃると思いますが、国際基準ではSQL(エスキューエル)が何かの略語ではないとされています。 SEQUEL(Structured English Query Language)という名前からコードを書いてQuery(問い合わせ)をリレーショナルデータベースにできる言語だとわかります。実際のQuery(問い合わせ)の結果はモニターに表示され、ここはSQL(エスキューエル)と変わりません。 この画期的なSEQUEL(Structured English Query Language)の登場からSQL(エスキューエル)が黎明期・成長期となり有名になっていきます。 SQL(エスキューエル)の黎明期・成長期について 続いてSQL(エスキューエル)の黎明期・成長期についてです。画期的なSEQUEL(Structured English Query Language)の登場からその後どのようにして多くの人々に使われるようになったのか見ていきます。 SEQUEL(Structured English Query Language)は1976年にSEQUEL2として新しいバージョンがリリースされることになりますが、SEQUEL2で商標登録をしている企業が他にあったため、SQL(エスキューエル)と改名されました。これが現在のSQL(エスキューエル)と同じものです。 このリレーショナルデータベースの操作・定義ができるSQL(エスキューエル)は操作性が非常に優れていると評価を受け、リレーショナルデータベースを操作するための言語として標準になりました。実際にSQL(エスキューエル)の仕様に合わせた製品が様々な企業から発売されることになりました。 その後にISO(International Organization for Standardization)やJIS(Japanese Industrial Standards)に規格化され、その後からSQL(エスキューエル)はかなり普及することになります。実際に、リレーショナルデータベースが使われている製品が多く登場することになりました。 SQL87,SQL89, SQL92, SQL99といったように1980年代から90年代にかけてバージョンアップしたSQL(エスキューエル)が次々とリリースされました。 SQL87は既に製品化されていた多くのリレーショナルデータベースを操作するためのSQL(エスキューエル)の中でも共通する最小限の部分を取り出したシンプルなSQL(エスキューエル)となっています。その後のSQL89では外部のキーリレーションシップを適用するためのメカニズムが実装されました。 SQL92では動的SQL(エスキューエル)や埋め込みSQL(エスキューエル)などの機能がリリースされ、より柔軟性と機能性が増しました。SQL99ではオブジェクト指向やJavaを取り入れたものとなり、SQL(エスキューエル)でのプログラミングがより拡張されました。 2000年代に入ると、SQL2003,SQL2008,SQL2011,SQL2016が新しくリリースされ、日々SQL(エスキューエル)の改善とバージョンアップがなされています。現在もデータベースとのやり取りと言えばSQL(エスキューエル)というように、SQL(エスキューエル)はリレーショナルデータベースとの’やり取りができるプログラミング言語と不動の地位を築いています。 SQL(エスキューエル)は現在どのように使われている? SQL(エスキューエル)についてとSQL(エスキューエル)の歴史について見てきました。現在もSQL(エスキューエル)は不動の地位を築いているとのことですが、具体的にどのように使われているか見ていきます。 SQL(エスキューエル)は今までと変わらずにデータベースとのやり取りに使えますが、近年ビッグデータというキーワードがトレンドとなっているようにビジネスにおいてデータを使う機会が多くなっています。そこで、SQL(エスキューエル)を用いてデータの分析や加工を行う企業が増えています。 また、転職に関して言うとSQL(エスキューエル)の募集はデータベースエンジニアとしての募集が多く、データ分析基盤開発の案件が多くあります。SQL(エスキューエル)のみできれば採用するという求人は少なく、ほとんどがSQL(エスキューエル)以外にも他のプログラミング言語ができる必要があるとしています。 また、データサイエンティストとしての募集も多く、この場合に関してもPythonやRを触れるエンジニアでないと採用がされない場合がほとんどです。 データベースエンジニアやデータサイエンティストは今のトレンドとしてはホットなので多くの企業が募集しており、転職を一度考えて見ても良いかもしれません。 まとめ SQLの起源は1970年代、IBMが開発した世界初のリレーショナルデータベース管理システム「System R」にあります。そこで生まれたのが前身のSEQUEL(Structured English Query Language)で、改良を重ねて現在のSQLとなりました。当初の名称「SEQUEL」は商標の関係で「SQL」に変更されましたが、発音の「シークェル」は残っています。 SQLは、リレーショナルデータベースを扱う標準言語として評価され、ISOやJISで国際規格化されました。その後もSQL87、SQL89、SQL92、SQL99、SQL2003、SQL2016と進化し、動的SQLやオブジェクト指向機能などが追加されることで柔軟性と機能性が大幅に向上しました。 現在のSQLは、依然としてデータベース操作の中心的存在です。特にビッグデータ分析やデータサイエンスの分野で重要な役割を果たしており、PythonやRと併用されるケースも多くあります。求人市場ではSQL単体よりも、他言語と組み合わせて扱えるスキルが求められています。 SQLについてよくある質問 SQLについて良くある質問を3つまとめました。 SQL(エスキューエル)とは? SQL(エスキューエル)とはデータベースを操作・定義するためのプログラミング言語です。SQL(エスキューエル)を使えると、データの取得・更新・削除・追加などをすることができ、データベースにあるデータを簡単に処理できるようになります。 他のプログラミング言語と併用して使う場面が多く、ほとんどのアプリケーションがデータベースとやり取りをすることでデータを表示しているので、皆さんがお使いのスマートフォンアプリやWebサービスの裏ではSQL(エスキューエル)が利用されています。 SQL(エスキューエル)は現在どのように使われている? SQL(エスキューエル)は今までと変わらずにデータベースとのやり取りに使われていますが、近年ではSQL(エスキューエル)を用いてビッグデータのようなデータの分析や加工を行う企業が増えています。 SQL(エスキューエル)の転職状況は? SQL(エスキューエル)の募集はデータベースエンジニアとしての募集が多く、データ分析基盤開発の案件が多くあります。SQL(エスキューエル)のみできれば採用するという求人は少なく、他のプログラミング言語ができる必要があるとされています。また、データサイエンティストとしての募集も多く、この場合に関してもPythonやRを触れるエンジニアでないと採用がされない場合がほとんどです。 フリーランス案件を探す 今だけ!登録で最大1,500円相当もらえるお仕事探しサービス「テクスカ」 「テクスカ」は、報酬をもらいながらお仕事探しができる新体験のスカウトサービスです。 【テクスカの4つの特徴】 1.面談するだけで、3,500円相当のAmazonギフトカードを獲得できます 2.優秀な貴方に仲間になってほしいと真に願うとっておきのスカウトが企業から届きます 3.貴方の経歴・スキルを見て正社員のオファーだけでなく副業オファーも届きます 4.転職意欲がなくとも自分のスキルが通用するか各社のCTOに評価してもらうチャンスがあります 忙しさのあまり、企業との新たな出会いを逃している… スパムのように届くスカウトメールにうんざりしている… 自分の市場価値がわからない… 社外の人からの評価が気になる… 副業の仕事が見つからない… そんなあなたにおすすめです!

Objective-C
Objective-Cの歴史について分かりやすく解説します
Objective-C(オブジェクティブシー)とは Objective-CとはApple社のiOSアプリを開発するために使用するプログラミング言語です。ブラッド・コックスとトム・ラブらによって1983年にリリースされました。 Objective-Cは名前の通りオブジェクト指向言語で、C言語がベースとなっています。C言語はObjective-Cが誕生する10年前から存在しており、Objective-Cが誕生した同年にはC++も誕生しています。 また、C言語をベースにしながらも、Smalltalkというオブジェクトにメッセージを送るというアイデアを元に作られたプログラミング言語も取り入れています。Smalltalkは元祖オブジェクト指向言語と言われており、Objective-C以外にも様々な言語・環境のベースになっている大きな影響を与えた言語です。 Objective-C開発者によると、C言語のメモリ安全性と SmallTalk のスピードを混合した言語がObjective-Cと説いています。 またGithubではどの言語でプルリクエストがどれくらい行われているかということを公開しており、Objective-Cがどれくらい使われているのかがわかりますが、Objective-Cは15位となっており、トレンドとしても下がっています。 なぜObjective-Cの比率が下がっているかというと、Swiftの台頭が大きな理由として挙げられます。 SwiftとはObjective-Cと同じくApple社のiOSアプリを開発するために使用されるプログラミング言語です。2014のWWDC(Worldwide Developers Conference)で発表され、その後は進化を遂げてバージョンアップが続いています。 Apple社は「モダン」「安全」「高速」「インタラクティブ」をSwiftの大きな特徴として発表しました。Objective-CよりもSwiftの方が開発しやすいという理由でSwiftは多くの方に支持されています。 ただ、人によってはSwiftよりもObjective-Cの方が開発しやすいという方もおり、ここは好みが分かれるところです。 Swiftはマルチパラダイム、Objective-Cはオブジェクト指向とパラダイムを見ても大きく異なっており、構文の書き方も異なります。Swiftの方が柔軟に書ける・素早く開発ができる、Objective-Cの方が更新が少なく新たに覚えることが少ないなどそれぞれ使うメリットが異なります。 iOSアプリ開発において完全にObjective-CからSwiftに移行したというわけではなく、Objective-Cにも未だ強い人気は残っています。自分の好みでどちらかを選択すると良いでしょう。 Objective-Cの案件を探す Objective-C(オブジェクティブシー)が誕生したきっかけは? Objective-Cはブラッド・コックスとトム・ラブらによって1983年にリリースされました。 当初はC言語をベースにしながらも、Smalltalk(オブジェクトにメッセージを送るというアイデアを元に作られたプログラミング言語)を取り入れることで、SmalltalkのスピードとC言語のメモリの安全性を取り入れる目的で開発されました。 Objective-Cという名前の通り、C言語とオブジェクトを混在させられるという意味で、かなり使いまわしが良い言語となっています。なぜ、このObjective-CとC言語の組み合わせなのかというと、当時はC言語の開発が進んでおり、またSmalltalkという世界初のオブジェクト指向言語が登場したからです。 その当時の流れを組んで、当時人気だったC言語とオブジェクト指向言語であるSmalltalkを組み合わせたプログラミング言語であるObjective-Cが登場しました。 この誕生した当時のObjective-Cは認知度も低く、多くのプログラミング言語の中にある埋もれてしまっている状態でした。 Objective-C(オブジェクティブシー)の黎明期・成長期について 続いてObjective-Cの黎明期・成長期についてです。Objective-Cは誕生した当時の認知度の低い状態からいったいなぜ有名になれたのでしょうか。 この背景には皆さんがお使いのiPhoneやMacbookを販売しているAppleの存在があります。スティーブ・ジョブズがAppleを追いやられた後にNeXT社というコンピューターの製造販売を行う会社を立ち上げました。ジョブズはこの際に開発言語としてObjective-Cを選定しました。 具体的にはNeXTSTEPというObjective-CをベースにしたオペレーションシステムをNeXT社は開発したのですが、当時のオペレーションシステムでオブジェクト指向言語を採用することは非常に珍しく、ディズニー等の大企業にそのシステムが使われることになりました。 このNeXT社の成功はジョブズを追いやったApple社には無視できないものとなり、その後にNeXT社はAppleに買収されることになり、NeXT社のNeXTSTEPを元にしたオペレーションシステムであるMac OS Xが誕生しました。 この誕生はObjective-Cが誕生してから約20年後の出来事となり、このタイミングでObjective-Cは世間から注目されることになり、Macアプリの開発として開発者に使われることになり、その後の2007年にはObjective-C2.0の登場、2008年にはiOSアプリ開発言語に採用され、多くの開発者に愛される言語になりました。 Objective-C(オブジェクティブシー)はアプリ開発に使用されている 現在、Objective-Cは主にMac OSのアプリ開発、iOSアプリ開発に使われています。皆さんも身近なところでObjective-Cで作られたアプリに触れているはずです。 最近だと、Swiftを用いたiOSアプリ開発が多いですが、依然Objective-Cで作られているiOSアプリもあります。 2017年では日本人スマホユーザーの68.6%がiPhoneを使っています。日本のApp Store利用は世界3位となっており、iOSアプリはかなり多くの人々に使われています。 転職で見ると、Webサービスをリリースしている企業もサービスのアプリ版を開発し始めるといった事例も多く、企業はこぞってiOSアプリを開発できるエンジニアを募集しています。また、既にリリースしているiOSアプリの改修や更新作業ができるエンジニアを募集している企業も多いです。 iOSアプリ開発では、基本的にSwiftとObjective-Cのどちらかが使われますが、求人比率としてはおおよそSwift:Objective-C=1:2となっており、Objective-Cの求人は多いことがわかります。 まとめ Objective-Cは、Apple社のiOSやMac OSアプリ開発に使われるプログラミング言語です。1983年にブラッド・コックスとトム・ラブによって開発され、C言語をベースにしながら、オブジェクト指向言語であるSmalltalkの概念を取り入れたことで誕生しました。C言語のメモリ安全性とSmalltalkの柔軟性を併せ持つのが特徴です。 誕生当初は知名度が低かったものの、スティーブ・ジョブズが設立したNeXT社でObjective-Cが採用されたことが転機となります。NeXT社が開発したOS「NeXTSTEP」はObjective-Cをベースにしており、その後AppleがNeXT社を買収。NeXTSTEPを基にしたMac OS Xの登場によってObjective-Cが脚光を浴びました。2007年にはObjective-C 2.0が登場し、2008年以降はiOSアプリ開発の主要言語として普及しました。 近年は、Appleが2014年に発表したSwiftの登場により、Objective-Cの使用率は減少しています。Swiftは「モダン・安全・高速・インタラクティブ」を特徴とし、多くの開発者に支持されています。しかし、Objective-Cにも安定性や既存資産の多さといった利点があり、iOSアプリ開発現場では今も併用されています。 フリーランス案件を探す

HTML5
HTML/CSSのトレンドを徹底調査 フリーランスでも活躍可能?
HTML/CSSのうち、HTMLはWebサイトのレイアウトをするための言語です。CSSはWebサイトのスタイルを指定する言語で、HTMLと一緒に使うことでホームページのクオリティがさらに向上します。 HTML/CSSエンジニアには、Webサイトの「見た目」にこだわることが求められます。他言語エンジニアが「機能」にこだわるのとは対照的です。しかし、見た目に特化した仕事だからといって、HTML/CSSエンジニアを他言語エンジニアより「下」とみなすことは間違っています。 なぜならWebサイトはいま、見た目がとても重視されているからです。世の中にこれだけWebサイトがあふれると、まずは見た目で選別されます。つまりHTML/CSSの技術を駆使して美しくしたWebサイトしか人々に見向きされなくなるのです。 Webサイトは中身が勝負ですが、しかし見た目が悪いWebサイトは勝負に参加させてもらえないのです。見た目が悪いWebサイトは怪しいサイトというレッテルを貼られかねず、デザイン性に劣るホームページを持っている企業は業績がかんばしくないようにみえます。 いまやWebサイトのデザインとレイアウトとスタイルは、Webサイトのオーナーの信用力に関わる重大事なのです。 そのためフリーランスのHTML/CSSエンジニアには、たくさんの仕事が用意されています。そのような魅力あふれるHTML/CSSの歴史を振り返りながら、HTML/CSSエンジニアの立ち位置や業務案件などを紹介していきます。 フリーランス案件を探す HTML/CSSの特徴とは HTML/CSSの歴史と特徴をみていきましょう。 HTMLの歴史について ティム・バーナーズ・リー氏が開発 HTMLはハイパー・テキスト・マークアップ・ランゲージの頭文字を取ったものです。つまり、ハイパーテキストをマークアップする言語、ということです。 ハイパーテキストは「テキストを超える」という意味で、多くの機能を備えたテキスト(文書)のことです。本や雑誌などの紙に書かれたテキストは、文書が持つ意味以上の情報は含まれません。しかしコンピュータの画面上のHTML化されたテキストは、コンピュータやインターネットと連動させることでより多くの情報を盛り込むことができます。 例えばWebサイト上の「日経平均株価」という文字をハイパーテキスト化すれば、「日経平均株価」という文字の上にカーソルを置くだけで「日本を代表する225銘柄(225社)の上場株式の平均株価」と表示させることができます。 マークアップとは「マークをつけること」という意味です。HTMLの場合のマークアップとは「テキストにタグをつけること」です。HTMLでは、テキストにタグをつけると文字が修飾(デザイン)されます。 例えば 「<p> ~ </p>」という囲まれたテキストは1つの段落としてデザインされますし、「<b> ~ </b>」で囲まれたテキストは太文字になります。 HTMLは1989年に、ティム・バーナーズ・リー氏という人が開発しました。リー氏はHTMLだけでなく、 文書や画像や動画を公開・閲覧する仕組みであるWWW(ウェブのこと) 転送プロトコルのHTTP リソースを識別するURL も同時に開発し「Webの父」と呼ばれています。 リー氏はスイスの欧州原子核研究機構(CERN)という組織に属していて、何千人もの科学者の論文や資料を探すのに苦労していました。そこでリー氏は、WWW、HTTP、URL、HTMLといった技術を搭載したサーバーとブラウザというツールを開発し、論文や資料の検索と閲覧をシステム化したのです。 CSSの歴史 1996年に登場 一方のCSSは、カスケーディング・スタイル・シートの頭文字を取ったもので、HTMLで構造を整えたテキストをさらにスタイリッシュにする機能を持ちます。 CSSが登場したのは1996年です。機能はHTMLと似ているのですが、次第に両者は役割分担されるようになりました。 いまでは、 ・HTMLはWebサイトのテキストなどの構造を重視する ・CSSはWebサイトのテキストなど装飾を重視する というすみわけがなされています。 CSSは発表当初はほとんど注目されませんでした。ところがInternetExplorerやFirefox、OperaなどのブラウザがCSSをサポートするようになりエンジニアたちに使われるようになったことでメジャーになりました。 CSSを使うと、テキストの構造を変更せずに文字装飾などを行えます。またCSSはテキストのスタイルを一括管理できるので、変更も容易です。 この作業をHTMLだけで行おうとすると、デザイン方針が大きく変わったときに装飾した箇所をすべて手作業で修正していかなければなりません。 HTMLとCSSの両方を使いこなすことで、サイトのメンテナンス性が格段に向上するのです。 HTML/CSSの強みとニーズ HTML/CSSエンジニアの最大の強みは、Webサイトの閲覧数を増やせることです。閲覧数はサイトの実力を測るうえで重要な指標であり、広告収入にも直結します。つまり閲覧数はWebビジネスを展開する企業や個人が最も求める「数字」であり、テレビ業界の視聴率のようなものです。 閲覧数を最も効率よく増やすには、グーグルやヤフーなどの検索サイトで上位に表示されなければなりません。検索サイトは検索ワードに関係が深いサイトを表示しますが、その表示順は、価値が高い情報を掲載しているサイトが優先されます。 グーグルなどは、ロボットを使って世界中のサイトを閲覧し、価値判断しています。 ロボットはサイトの内容だけでなく、体裁にも注目します。つまりHTML/CSSで作成されて美しい体裁のサイトは、グーグルのロボットによって「価値がある」と判断されるのです。HTML/CSSのルールで書かれていないサイトは、価値が低いとみなされてしまうのです。 もちろんグーグルのロボットはキーワードなどもチェックするので、コンテンツの製作者たちはサイトに掲載する記事や写真や動画を磨き上げる必要があります。しかしそれと同じくらいの労力をかけてサイトの見た目をよくしないと、せっかくの良コンテンツが見向きされない結果になってしまうのです。 こうしたことから、Webビジネスを展開する企業はHTML/CSSエンジニアにサイトの「仕上げ」を依頼します。だからフリーランスのHTML/CSSエンジニアは、IT界、Web界で一定の存在感を示すことができているのです。 HTML/CSSで気を付けること HTML/CSSのスキルだけでこなせる案件もありますが、あまり単価は高くないでしょう。 というのもHTML/CSSスキルの獲得はそれほど難しくないからです。例えば企業が事務職社員にHTML/CSSを覚えさせ、自社サイトの更新をさせることも不可能ではありません。 したがってフリーランスエンジニアを目指す人は、HTML/CSSだけでなく「+アルファ」を身につけておいたほうがいいでしょう。 例えば、アドビ社製のグラフィックソフト「Photoshop」のスキルがあると、サイトのデザインとHTML/CSSによるテキスト加工の2つの仕事を請け負うことができます。 もしこれからエンジニアの道に進もうと考えている若い人なら、理想は、C#やJavaScriptなどのコンピュータ言語を先に身につけてから、後からHTML/CSSを学ぶことです。 HTML/CSSエンジニアの募集要項のトレンドとは HTML/CSSエンジニアは、どのようなポジションで働くことが求められているのでしょうか。案件票の募集要項などを参考に、HTML/CSSエンジニアの働き方のトレンドを探っていきます。 フロントエンドエンジニアというポジション スキルが高いHTML/CSSエンジニアは、フロントエンドのポジションで働くことができます。Web製作のプロジェクトでは、フロントエンドエンジニアはディレクションやデザイン、インターフェースに関わります。ユーザーと直接やり取りすることもあります。 フロントエンドエンジニアは、サーバーサイドエンジニアやバックエンドエンジニアなどと異なり、システムの要件定義や設計、開発業務にはあまり関わりません。 フロントエンドエンジニアは、サーバーサイドエンジニアと比べると新しい職種です。情報が美しく載っているWebサイトへのニーズが高まったことで、フロントエンドエンジニアが誕生したのです。 競争力のあるHTML/CSSエンジニアになるには、PCだけでなくスマホやタブレットに関する知識が必要です。さらに、 ・レスポンシブWebデザイン ・サイトの軽量化 ・表示速度の高速化などの知識が加わるとさらに高単価案件を獲得できるでしょう。 レスポンシブWebデザインとは、どの大きさの画面でも見やすくする技術です。レスポンシブWebデザインでWebサイトをつくるとパソコン、スマホ、タブレットのすべてに対応できるので修正や更新が容易です。 またサイトを軽量化して表示速度を高速化できると、Webサイトの閲覧ストレスが減り、離脱を防止できます。 他のHTML/CSSエンジニアとの差別化を図るには、上記の3つのスキルの獲得はマスト事項といえるでしょう。 HTML/CSSエンジニアが活躍している業界、分野 HTML/CSSエンジニアが活躍できる分野は、幅広いのですが、ここではスマホ向けアプリ製作に注目してみます。 家電業界 HTML/CSSエンジニアは、家電関連の業務で活躍できるでしょう。パナソニックもソニーもシャープも、家電製品とネットをつなぐIoT化に力を入れています。家電をネットにつなぐと遠隔操作ができたり、家電を賢くするスマート化を進めたりできます。 家電のIoT化で重用されるのがスマホです。スマホはIoT家電のコントローラーのような役割を果たします。IoT家電のユーザー(消費者)は、専用アプリをスマホにダウンロードしてスマホで家電を操作します。 IoT家電も家電である以上、老若男女がITやIoTの知識がなくても使えるようにしなければなりません。そのためスマホアプリは、直感で操作できるインター フェイスにしなければなりません。 そこでHTML/CSSエンジニアの力が求められます。家電メーカーが求める操作性とデザイン性を実現できるフリーランスのHTML/CSSエンジニアは仕事の幅が格段に広がるでしょう。 フィンテック フィンテックとは、金融(フィナンシャル)とIT技術(テクノロジー)を合わせた造語です。金融サービスを次々IT化、AI(人工知能)化していこうという取り組みで、メガバンク、クレジット会社、携帯キャリア、IT企業などが進出し、その市場は世界規模となっています。 スキルが高いHTML/CSSエンジニアは、フィンテック関連の案件に関わることもできます。 フィンテックには、何千億円規模のマネーを扱う仮想通貨システムのような超高度なものだけでなく、スマホ決済のようにすでに身近になっているサービスも含まれます。 またフリーランス向けの会計サービスや主婦向け家計簿サービスも、クラウドを使ってフィンテック化しています。 このような市民生活に密着したフィンテックサービスは、ユーザーフレンドリーなインターフェイスが必須となるので、HTML/CSSエンジニアが活躍できるのです。 HTML/CSSのフレームワーク事情 HTML/CSSのフレームワークを紹介します。HTML/CSSだけではスキルに付加価値をつけることは難しいのですが、HTML/CSSエンジニアがフレームワークを多用して「できること」を増やすとライバルエンジニアに差をつけることができます。 GroundworkCSSとは GroundworkCSSの魅力はレスポンシブなところです。パソコン、スマホ、タブレットなど各種デバイス向けにWebサイトを製作するときにGroundworkCSSを使えば、文字の大きさが常に最適なサイズに維持されます。 またアイコンフォントやアニメーションが標準装備されているので表現豊かなサイトに仕上げることができます。 Renaissance.cssとは Renaissance.cssは、まだ高度なスキルを獲得できていないHTML/CSSエンジニアの強力な武器になるでしょう。 Renaissance.cssのコンセプトは「黄金比」です。サイトをデザインするとき、文字やリンクボタンのサイズ決めに苦労するのではないでしょうか。 Renaissance.cssはそれらの最適なサイズを簡単に選択できます。 またRenaissance.cssのユーザーのなかには「レゴブロック感覚でサイトを構築できる」という人もいます。 これはRenaissance.cssがBEMの概念を取り入れているからです。BEMにより作業が簡素化され、製作時間を短縮できます。 micronとは マイクロインタラクションを組み込んだWebサイトはすっかり一般的になりました。マイクロインタラクションが搭載されていないWebサイトのほうが珍しいくらいです。 micronは簡単にマイクロインタラクションを導入できるフレームワークです。JavaScriptのコードを書かずに使えるアニメーションが12個用意されているので、「HTML/CSSのみのエンジニア」も使うことができます。 もちろんJavaScriptスキルがあるとmicronをさらに使いこなすことができます。 マイクロインタラクションとは、ボタン操作したときに正しく実行されたことを示す仕組みです。例えばスマホ画面上をタップしたときにボタンがアニメーションで動く仕組みはマイクロインタラクションです。 Simpleとは HTML/CSSのスキルが身についたら、Simpleを使ってみましょう。簡単な関数を使うことで全体を一括操作できます。 またSimpleには便利なコンポーネント(各種の機能を持つパーツ)が収録されているので、サイトのデザイン性を簡単に向上させることができます。 HTML/CSS案件単価事情 フリーランスのHTML/CSSエンジニアにはどのような業務が発注されるのでしょうか。案件の単価などを紹介します。 大手製薬会社のメルマガ作成、月40万~50万円 広告の企画・製作会社が大手製薬会社のメルマガ作成を請け負ってくれるフリーランスのHTML/CSSエンジニアを探しています。 ギャランティは月40万~50万円となっています。 この案件の応募に求められる技術的なスキルはHTML/CSSだけですが、社会人としてのビジネスマナーやコミュニケーション能力が求められます。 動画配信アプリの開発、月80万円 こちらの案件はHTML/CSSスキルだけでなくJavaScriptの業務経験も必要です。月額80万円とかなり高い報酬となっています。 業務内容は動画配信アプリの開発で、ポジションはフロントエンドエンジニアです。マークアップをしながら、サーバーサイドエンジニアとの調整業務も担当します。 フリーランス向け案件ですが、平日10時~19時の間、常駐する必要があります。 HTML/CSS案件の具体的な業務 HTML/CSSのスキルしかないとどうしても仕事の幅を狭めてしまうので、できればJavaScriptやフォトショップのスキルを身につけておいたほうがよいでしょう。 しかし「HTML/CSSのみのエンジニア」に仕事がないかというとそのようなことはありません。 オペレーターとして働くのであれば、HTML/CSSスキルだけで仕事を獲得することは可能です。 フロントエンドエンジニアのほうがオペレーターより格上のポジションで、報酬も高いのですが、フロントエンジニアはプロジェクトによっては「泊まり込みの日々」が続きます。 一方、HTML/CSSのコーディングだけに専念できるオペレーターは定められた業務を定められた時間内に仕上げれば仕事を終わらせることができます。 つまり「長時間働くことができない」といった事情があったり、「高報酬よりワークライフバランスを重視したい」と希望したりする方は、オペレーターというポジションがおすすめです。 だからといってHTML/CSSオペレーターの仕事は単純作業ではありません。きっとディレクターは、よりよいアイデアをオペレーターに求めるでしょう。サイトのデザイン性を向上させたり、テキストを読みやすくしたりなど、オペレーターが工夫できることは少なくありません。 創意工夫が得意なオペレーターと、単なる作業員のオペレーターでは、次の仕事につながる確率が違ってきます。 ただオペレーター業務は、高額報酬は期待できません。 HTML/CSS案件の案件票をみてみよう フリーランスのエンジニアも、企業の正社員エンジニアの働き方や待遇、福利厚生などを知っておくことは大切です。フリーランスがクライアントと報酬交渉をするときの材料になるからです。 そこでHTML/CSSエンジニアを正社員で採用する企業の案件票をみてみましょう。 愛媛県松山市のHTML/CSSコーダー、月18万~25万円 地方の正社員案件を紹介します。 愛媛県松山市の企業が、自社サイトのコーディングと更新業務ができる正社員のHTML/CSSエンジニアを募集しています。 月給は、基本給14.4万~20万円+固定時間外手当3.6万~5万円(計18万~25万円)となっています。 HTML/CSSとフォトショップの知識が必須で、イラストレーターやPHPなどの知識がある人を優遇します。 「HTML/CSS+アルファ」のスキルがあれば憧れの地方移住ができるのです。 飲食店向けWeb予約システムの開発、年収250万~650万円 東京のITベンチャーが、飲食店やリラクゼーション施設向けのWeb予約システムを開発する正社員HTML/CSSエンジニアを募集しています。 この案件に応募するにはHTML/CSSスキルだけでは足りず、JavaScriptの知識と半年以上のプログラミング経験も必要です。 ただ同社は未経験者も積極的に採用していて、さらに年収の下限が250万円となっていることからそれほど高いスキルを持っていない人でも応募できそうです。 エンジニアの労働市場は慢性的に人手不足のため、IT企業には「採用してから育てる」というマインドがあります。 まとめ~HTML/CSS需要の今後と未来 HTML/CSSの需要は今後、増えることはあっても減ることはないでしょう。HTML/CSSエンジニアの将来は有望といえます。 またフリーランスのHTML/CSSエンジニアは「+アルファ」のスキルを身につけることで確実に収入を増やすことができます。 IT未経験者も、コンピュータ言語になかでも習得が易しいHTML/CSSを身につけておけば、安定した仕事を確保できるIT業界で働くことができます。 HTML/CSSは非常にコスパがよいスキルといえるでしょう。 フリーランス案件を探す

Haskell
Haskellの将来性についてその歴史から紐解く
序文:純粋関数型プログラミング言語 Haskell(ハスケル) Haskell(ハスケル)は純粋関数型プログラミング言語です。Haskell(ハスケル)は数学者であり論理学者でもあるハスケル・カリー氏の名前が由来となっているプログラミング言語です。Haskell(ハスケル)を知るにあたって、純粋関数型プログラミング言語とは何かを知ることが重要となってきます。 純粋関数型プログラミング言語は関数型プログラミング言語の一部であり、命令形プログラミング言語と対比されることが多いプログラミング言語です。関数型プログラミング言語は変数の初期化や代入がないことが大きな特徴となっています。 同じ処理を繰り返すことを繰り返し処理と言いますが、これを実行するために通常はループというものを使います。例えば、商品計算のシステムがあったときに、商品によって価格は異なるため、商品の情報をデータベースから取ってきて、それを足し合わせる処理を繰り返しやる必要があります。 その際に、命令形プログラミング言語だとループによって合計額として定義した変数にそれぞれの商品の価格が代入され、最終的な合計額が変数として見える形になります。一方で、関数型プログラミング言語では繰り返し処理をメソッドとして再帰的に呼び出すことで、それぞれの商品の価格を合計し、最終的に合計額を出します。 命令形プログラミング言語で触れた変数の再代入と入出力によってプログラムの状態を副作用と言い、この副作用を持たないプログラミング言語を純粋関数型プログラミング言語と言います。このような副作用があると、テストやデバッグを困難にさせたり、プログラムの動作が複雑で分かりづらいという恐れがあります。 命令形プログラミング言語はコンピューターによって理解しやすいプログラミング言語ですが、純粋関数型プログラミング言語は人間にとって読みやすいプログラミング言語となっています。この純粋関数型プログラミング言語の中でも、副作用のような機能を持つモナドという機能があるのがHaskell(ハスケル)です。 Haskell(ハスケル)の誕生:前身となった言語、Miranda Haskell(ハスケル)の誕生に大きく関わっているのはHaskell(ハスケル)の前身となったプログラミング言語であるMirandaが1985年にリサーチソフトウェア社から発表されました。このMirandaは当時に数多くあった純粋関数型プログラミング言語の中でも、一番多くの人に使われていたプログラミング言語です。 ただ、Mirandaはリサーチソフトウェア社が開発したこともあり、著作権が発生していたので、オープンソースとして皆さんが使えるものではありませんでした。そこで、1987年にFunctional Programming Languages and Computer Architectureという会議によってオープンソースであるプログラミング言語が開発されるべきという意見が多数あり、Haskell(ハスケル)開発のための委員会が発足し、実際に開発に至りました。 一番最初にリリースがされたHaskell(ハスケル)はHaskell1.0という名称でリリースがされました。ここからHaskell(ハスケル)というプログラミング言語が進化をしていきます。 Haskell(ハスケル)の黎明期:非公式に進むプロジェクト 実際に、Haskell1.0が誕生し、その後にHaskell(ハスケル)は黎明期を迎えます。Haskell1.0のバージョンアップのための開発は進み、1997年後半には挙動がより安定し、機能を拡張するためにライブラリーが搭載されたHaskell98がリリースされました。 その後に、Haskell98を更に進化させるHaskell′(Haskell Prime)というプロジェクトが非公式に進みました。 続いて、Haskell2010が2010年に発表されました。これは他のプログラミング言語とのバインディングを可能にするもので、それを可能にする機能であるForeign Function Interface(FFI)が追加されました。 Haskell(ハスケル)の成長期:エンジニアにとって実用的で使いやすい言語に Haskell(ハスケル)はHaskell2010の発表以降に、バージョンアップを繰り返し、更に実用的で使いやすい言語に成長を遂げています。 また、Haskell(ハスケル)を参考に開発がなされたプログラミング言語もあります。その一つがCleanです。Cleanは純粋関数型プログラミング言語で、Haskell(ハスケル)と仕様が非常に似ています。Haskell(ハスケル)は変数の再代入と入出力によってプログラムの状態である副作用をモナドという機能を使うことで扱いますが、Cleanは一意型という一貫性のある表現を使います。 このようにHaskell(ハスケル)だけではなく、Cleanといった純粋関数型プログラミング言語全体で成長を遂げています。 Haskell(ハスケル)の現在:セキュリティ対策のために利用される言語に 現在、Haskell(ハスケル)はその使いやすさや汎用性から多くの企業に支持されており、国内外問わず使用されています。 Haskell(ハスケル)の良さは開発における信頼感とスピード感です。早く開発しなければならないが、複雑なシステムを開発しなければならないといった難易度の高いシステムを開発するときに重宝されるのがこのHaskell(ハスケル)です。ただ、JavaやRubyなどの有名な言語に比べると、使用している企業は少ないです。 海外だと、皆さんご存知のFacebook社がHaskell(ハスケル)を利用しています。マルウェア対策やスパム対策といったセキュリティ対策のために利用されているようです。国内ですと、業務パッケージの開発・販売をしているワークスアプリケーションズ社が使用していたり、金融の高頻度取引で有名なTsuru Capital社が使用をしています。 Haskell(ハスケル)は優秀なプログラミング言語であるものの、他のプログラミング言語に比べて開発に大きな費用がかかる・習得難易度が高いという特徴があります。そのため、小さなベンチャー企業やフリーランスに用いられることはあまり多くはありません。 Haskell(ハスケル)を使用している企業は優秀なエンジニアと潤沢な資金がある企業ばかりです。実際にHaskell(ハスケル)を使えるエンジニアを募集している転職の求人数を調べてみても、他のプログラミング言語とは大きな開きがあります。ただ、導入企業は昔よりも増えているので、今後の将来性には期待できるでしょう。 まとめ:Haskell(ハスケル)は有名企業も採用する言語 プログラム言語の歴史 <Haskell(ハスケル)編> というテーマで今回はお伝えしました。いかがだったでしょうか? 今回お伝えしたかったことは以下のとおりです。 Haskell(ハスケル)は関変数の初期化や代入がないことが大きな特徴である関数型プログラミング言語であるHaskell(ハスケル)はオープンソースである純粋関数型プログラミング言語を開発すべきという意見から開発がなされたHaskell(ハスケル)はHaskell(ハスケル)はその使いやすさや汎用性から多くの企業に支持されており、国内外問わず使用されている 今回はプログラミング言語であるHaskell(ハスケル)を見てきましたが、Haskell(ハスケル)の知名度はそこまで無く、一部の方しかご存知ないプログラミング言語だと思います。現在、求人数が少なく、仕事で使うという観点で他のプログラミング言語と比べるとやや劣るプログラミング言語ですが、成長を遂げて将来性もあると言われています。 そのため、Haskell(ハスケル)を学ぶことはプラスになると言えるでしょう。また、Haskell(ハスケル)は純粋関数型プログラミング言語という珍しい分類に入るプログラミング言語であり、有名企業も採用しているプログラミング言語であるので、趣味程度でも是非触ってみることをオススメします。 フリーランス案件を探す

Ruby on Rails
gemとは何か 【Ruby, Ruby on Rails】
gemとは何か gemとはrubyのライブラリのことを指します。 gemの扱い方 gem list でインストール済みのgemの確認ができる $ gem list *** LOCAL GEMS *** actioncable (5.2.1, 5.2.0, 5.1.6, 5.1.4) actionmailer (5.2.1, 5.2.0, 5.1.6, 5.1.4) actionpack (5.2.1, 5.2.0, 5.1.6, 5.1.4) actionview (5.2.1, 5.2.0, 5.1.6, 5.1.4) activejob (5.2.1, 5.2.0, 5.1.6, 5.1.4) activemodel (5.2.1, 5.2.0, 5.1.6, 5.1.4) activerecord (5.2.1, 5.2.0, 5.1.6, 5.1.4) activestorage (5.2.1, 5.2.0) activesupport (5.2.1, 5.2.0, 5.1.6, 5.1.4) addressable (2.5.2) archive-zip (0.11.0) arel (9.0.0, 8.0.0) ast (2.4.0) bigdecimal (default: 1.3.4) bindex (0.5.0) bootsnap (1.3.1) builder (3.2.3) bundler (1.16.4, 1.16.3) byebug (10.0.2, 9.0.6) capybara (3.4.1) childprocess (0.9.0) chromedriver-helper (1.2.0) 〜省略〜 rails に関連するgemを探したい場合は gem search -r rails で探すことができる $ gem search -r rails *** REMOTE GEMS *** aa-rails4 (0.6.0) aaronchi-jrails (0.5.1) aavkontakte-rails3 (0.1.9) ab-experiments-rails (0.0.3) abcjs-rails (3.0.1) access-granted-rails (0.1.0) access-watch-rails (0.0.3) access_policy_rails (0.0.2) access_watch_rails (0.1.2) accessible-bootstrap3-rails (0.2.4) account_kit_rails (0.0.0) accountingjs-rails (0.0.4) ace-rails (0.0.2) ace-rails-ap (4.2) ace_editor-rails (0.0.1) ace_vimtura-rails (0.1.3) aced_rails (0.2.1) ack_favicon_maker_rails (1.0.2) ack_rails_admin_jcrop (0.2.0.2) ack_rails_admin_settings (1.2.3.3) act-fluent-logger-rails (0.5.0) 〜省略〜 なお、ブラウザで確認したい場合は下記を参照 ruby-toolbox RubyGems.org gem のインストールは gem install rails で可能だが、あまりお勧めできる方法ではない。 bundler で管理するのが常套 bundlerとは bundle inatall などで使われる bundler 。実はこれもgemの一つである。 用途はgemの管理。 gemを複数使っていると、依存関係が出てくる。 バージョンが??だの、あのgemがないだの言われる。 それをbundlerで管理する。そのファイルがGemfileである。 source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.3' gem 'mysql2', '>= 0.4.4', '< 0.6.0' gem 'puma', '~> 3.11' gem 'rails', '~> 5.2.2.1' gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' # gem 'mini_racer', platforms: :ruby gem 'coffee-rails', '~> 4.2' gem 'jbuilder', '~> 2.5' gem 'turbolinks', '~> 5' # gem 'redis', '~> 4.0' gem 'bootsnap', '>= 1.1.0', require: false gem 'mini_magick', '~> 4.8' gem 'aws-sdk' gem 'carrierwave', '~> 1.0' gem 'config' gem 'devise' gem 'devise-i18n' gem 'draper' gem 'exception_notification' gem 'fog-aws' gem 'font-awesome-rails' gem 'gretel' gem 'kaminari' gem 'ranked-model' gem 'ransack' gem 'slack-notifier' gem 'slim-rails' gem 'yaml_vault' group :development do gem 'listen', '>= 3.0.5', '< 3.2' gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem 'web-console', '>= 3.3.0' gem 'better_errors' gem 'bullet' gem 'capistrano' gem 'capistrano-bundler' gem 'capistrano-rails' gem 'capistrano-rbenv' gem 'capistrano-yarn' gem 'capistrano3-puma' gem 'guard-rspec', require: false gem 'rack-mini-profiler' gem 'rails-flog', require: 'flog' gem 'simplecov', require: false end 〜省略〜 source 'https://rubygems.org' でホスティングサーバーを指定。 gem 'rails', '~> 5.2.2.1' でrails のバージョンを指定。 group :development do gem 'listen', '>= 3.0.5', '< 3.2' gem 'spring' gem 'better_errors' gem 'bullet' end 本番環境で使うgemを指定。 こんな感じでgemを記載していく。 Gemfileを書き終えたら、bundle insrall でGemfileに記載された通りにインストールする。 その際に、Gemfile.lockを作成する。 このファイルがgemのバージョンをロックしバージョンが変わらない様にしてくれる。 つまり、gemが更新されても使用するgemのバージョンはそのままにしてくれる。 Gemfile.lockを更新したいときは bundle update を使う。 フリーランス案件を探す

Ruby on Rails
Gem Deviseによるパスワードの保存及び保安方法
はじめに Rails フレームワークを利用するアプリケーションでは登録とログインモジュールにDevise gem と bcryptがよく使っています。DeviseはRailsでおそらく最も人気な認証機能を実装できるgemです。 ユーザーのパスワードの暗号化とログイン確認に対してDeviseはデフォルトでbcryptを使用しています。 bcryptを利用しない例 下記はbcryptを利用しない認証フォローの1つ例です。 1. ユーザーが登録する時、パスワードはハッシュして、データベースに保存します。 2. ログインする時、入力したパスワードをハッシュして、データベースに保存したハッシュしたパスワードと比べて、一致したら、ログインできます。一致しなければ、「バイバイ」ですね。このアプローチには、暗号化アルゴリズムが常にパスワードが渡された固定文字列を返すという大きな欠点があります。例えば、SHA1アルゴリズムで使えば、”password” というストリングはハッシュした後いつも ”5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”というストリングを返します。 これにより、ハッカーがデータベースを攻撃し、ユーザーのパスワードハッシュであるデータを取得すると、ハッカーは、Rainbow Tableを作成してユーザー全体のパスワードを取得するために、一度だけ総当たりする必要があります(パスワード「password」または「123456」を持つユーザーは同一のハッシュ文字列を持っているため)。 したがって、同じパスワード文字列が他のハッシュを生成するソリューションが必要ですが、ユーザーがログインすると、比較結果が一致する必要があります。 そのため、パスワードに「salt」を追加する必要があります。 Bcryptによる、salt はランダムストリングです。Saltのおかげで、毎回ハッシュする時、違うストリングを返します。 bcryptを利用する例 下記はbcryptを利用する認証フォローの1つ例です。 1. ユーザーが登録する時、ランダム saltを発行して、saltとパスワードをハッシュして、encrypted_passwordを取得して、データベースに保存します。encrypted_passwordはsalt を含みます。パスワード同じですが、saltはランダムから、毎回ハッシュするのは新しいencrypted_passwordを作ります。 2. ログインする時, データベースのencrypted_passwordのsaltを取って、入力したパスワードとsaltをハッシュして、ハッシュしたストリングを取得して、そのストリングとencrypted_passwordを比べて、一致したら、ログインできます。 例えば、”my password”というストリングをbcryptで使って下記の形の1つ例でencrypted_passwordと呼びます。 $2a$12$K0ByB.6YI2/OYrB4fQOYLe6Tv0datUVf6VZ/2Jzwm879BW5K1cHey 今encrypted_passwordを分析します。 2a (最初の$の2つの間): bcrypt暗号化アルゴリズムバージョン12 (次の$の2つの間):costと呼ばれます。costの役割は何か後で分析します。K0ByB.6YI2/OYrB4fQOYLe(最後$の後のキャラクターの22個): saltと呼ばれています。6Tv0datUVf6VZ/2Jzwm879BW5K1cHey(最後キャラクターの31個): ctextと呼ばれます。ctextはsaltとパスワードからハッシュされます。 Costについて Costを説明いたします。 Costとは、ハッシュを何回実行するか、つまりどれだけ遅いかという尺度です。 あなたはそれを遅くしたい。 繰り返しますが、これはハッシュされたパスワードが盗まれた場合のセキュリティの冗長な層です。何でもブルートフォースするのは法外に高価になります。 Cost は4以上と31以下の数字です。Bcryptアルゴリズムでは例えばcostは12なら、繰り返し数は2^12=4096回。 Cost = log_2 (繰り返し数) なので、cost は高ければ、高くほどパスワードのハッシュは安全になります。 しかし、逆にcostが高ければ、高くほどハッシュの速度も遅くなります。 bcryptアルゴリズムです。 bcryptアルゴリズム 詳しくはhttps://ja.wikipedia.org/wiki/Bcryptで参考できます。 それだけパスワード保安方法は安全と思いますか? ランダムsaltはRainbow Tableを作成するコストを増加させましたが、人生は不明ですが、攻撃者は常に自分が望むものを達成する想像を絶する動機を持っています。攻撃者がスーパーコンピューターを持っているとデータベースを攻撃し、データを手に入理とします。そのスーパーコンピュータには、データのencrypted_passwordとsaltから、Rainbow Tableを作って、パスワードを見つけられます。 それでは、このリスクを最小限に抑える方法は?原則は、すべての卵を1つのバスケットに入れるのではなく、pepperです。Pepperはsaltに似たランダム文字列ですが、違いは、pepperを秘密にして、データベース以外の場所に保存する必要があることです。また、ユーザーあたりのpepperは必要ありません。ユーザーの全ては1pepper十分です。 Deviseはpepperを使っているのを見えられます。 Bcryptでhash_sceret(password, salt)からbcryptでhash(password, salt, pepper)に使うのはもっと安全になります。 ハッカーはデータベースを手に入っても、pepperがないから、rainbow tableを作れない、パスワードを取れないです。 ノート:攻撃者が何らかの方法でdbユーザーを持っていると想定している記事では、実際にはこれは非常に困難です。インフラストラクチャの設計など、他のセキュリティレイヤーがあるためです。それらの問題について話しません。 参考 Gem devise https://github.com/plataformatec/devise bcryptアルゴリズム https://ja.wikipedia.org/wiki/Bcrypt Gem bcrypt-ruby https://github.com/codahale/bcrypt-ruby Rainbow table https://ja.wikipedia.org/wiki/レインボーテーブル







