Convergência de conteúdo a partir de sites de redes sociais e outros ambientes
web de forma gerenciável
Julio Pontes de Farias Netto ([email protected])
Wellington Gabriel Freitas de Oliveira ([email protected])
NOIX Informática Ltda.
Brasil aumentou em 56 vezes, com perspectiva de crescer
mais 8 vezes até 20121.
Uma série de sistemas de informática se propõe a
organizar a alta demanda de conteúdo gerado nos sites de
redes sociais ou disponibilizá-lo de maneira rápida.
Temos exemplos de sistemas como TweetDeck2,
Seesmic3 e Tweetie4, que se denominam programasclientes para uso de redes sociais da Internet. A partir
deles, o usuário dessas redes sociais pode integrar vários
registros e administrar seus perfis sem necessitar se
deslocar até os sites de redes sociais para fazê-lo. Outra
forma de realizar essa integração é através de widgets5,
que dispõe de uma interface gráfica para visualização de
dados do usuário coletados de outros ambientes.
Muitos desses sistemas, contudo, realizam tais
integrações usando estritamente web service, sem
preverem a possibilidade de também fazer conexão direta
a banco de dados. Inclusive porque alguns desses sistemas
não têm a necessidade originária de conectar a banco de
dados, pois não foram feitos para esse fim. Por essa
limitação de web service, esses sistemas já existentes não
conhecem a estrutura dos dados das aplicações a que eles
se integram, portanto não servem para integrar-se a outras
aplicações que não disponham de web service, como é o
caso de alguns CMS6, ERP7 e CRM8.
Resumo
A produção de conteúdo gerada a partir dos sites
de redes sociais cresce de forma bastante acelerada. É
fato que sistemas de informática são criados ao redor do
mundo na tentativa de organizar essa informação ou,
pelo menos, disponibilizá-la de maneira rápida aos
usuários interessados. Uma das formas de agilizar a
disposição das informações advindas dos sites de redes
sociais é integrá-las em um único ambiente de
visualização. Porém, além de disponibilizá-las nesse
ambiente único, é necessário que esse trabalho preveja a
integração com as várias informações diferentes contidas
em sistemas de banco de dados distintos e também com os
diversos web services das aplicações a serem integradas.
Essa pesquisa analisa a necessidade da
convergência de dados vindos dos sites de redes sociais,
as formas de integrar tais dados em um ambiente único,
alguns empecilhos técnicos que comprometem essa
convergência de dados, a necessidade de customização
do usuário sobre o formato de visualização desses dados
e a perspectiva de incremento contínuo do possível
sistema que sirva de solução para o problema. Por fim, a
pesquisa apresenta uma possível solução em forma de
sistema de informática para as questões supracitadas.
Palavras-chave: Redes Sociais, Portais Web,
Convergência, Conteúdo Web, Domain-driven design,
Domain Specific Language, Fluent Interface.
1
Matéria do portal G1 "Tráfego de dados em banda larga crescerá oito
vezes até 2012" acessada em
<http://g1.globo.com/Noticias/Tecnologia/0,,MUL6423886174,00.html>
2
http://www.tweetdeck.com
3
http://seesmic.com/
4
http://www.atebits.com/
5
Definição de Widgets segundo a Wikipedia, acessada em <
http://pt.wikipedia.org/wiki/Widget >
6
Content Management System ou sistema gerenciador de conteúdo,
próprio, por exemplo, para gestão de conteúdo de portais web
7
Enterprise Resource Planning – sistema integrado de gestão
empresarial
8
Customer Relationship Management – sistema de relacionamento com
clientes
1. Introdução
É fato que a produção de conteúdo gerada na Internet
cresce de maneira bastante rápida. Segundo a IDC
(Internet Data Corporation), de 2002 até 2007, o volume
de dados transportados por redes de banda larga fixa no
1
IPhone11 permite não apenas que o usuário fale ao
telefone, mas também assista filmes, divirta-se com jogos,
realize breves gravações audiovisuais e instale outras
aplicações de utilidade pessoal ou coletiva. Na Cultura da
Convergência,
os
dados
mantêm
maior
interoperabilidade12.
Assim como acontece com as plataformas físicas
(celulares multiuso, televisões com rádio e acesso à
Internet, games com jogadores espalhados pelo mundo
etc.), as plataformas virtuais também mantém tal
características de convergência, porém tais plataformas
virtuais têm essa característica como um dos principais
sentidos de sua existência. Através da Internet, o usuário
dispõe em um mesmo lugar de TV, rádio, revistas,
jornais, comunicação instantânea inclusive com
transmissão de imagem, entre outras possibilidades, além
de trocas interativas, que podem ocorrer (i) entre esses
meios e os usuários e (ii) entre os usuários entre si, porém
mediados por esses meios virtuais (LEMOS, 1997).
O fato é que hoje os usuários começam a se acostumar
a ter dados de forma rápida e convergente em um mesmo
ambiente, para facilitar seu uso. Tal característica é vista
pela popularidade que os portais web (com grande e
diversificado volume de conteúdo) e os programas-cliente
ganham a cada dia13.
É nesse pensamento que alguns softwares prometem
organizar conteúdos espalhados na rede e dispô-los em
uma ambiente mais fácil, de rápido acesso e com
possibilidade de integração a outros meios. Em um olhar
sobre o trabalho de desenvolvedores web, também há a
necessidade dessa convergência de dados. Um dos
principais exemplos são os grupos formados em torno de
extensões web para determinados softwares, o que reforça
a cultura de Software Livre14, com a perspectiva de
colaboração de todos para todos.
A partir desses grupos de colaboração, extensões
inovadoras ou melhoradas são depositadas pelos
desenvolvedores web e disponibilizadas publicamente.
Alguns se monetizam a partir de versões avançadas das
extensões que publicaram em formato aberto, que são
então comercializadas.
O resultado a que se chega, portanto, é a necessidade
de convergência cada vez maior dos dados
disponibilizadas principalmente na Internet, com a
possibilidade desses dados serem customizados pelos
próprios usuários no que tange à visualização, depois que
os dados forem captados. Além disso, há a possibilidade
Além disso, os sistemas citados também não prevêem
o incremento fácil de seu conhecimento, como, por
exemplo, com a instalação de extensões. Geralmente, são
criados com um determinado fim (ex: puxar as últimas
publicações do site de rede social Twitter) e exibem tais
informações apenas na sua plataforma ou em um
determinado formado (ex: listagem simples de títulos).
Qualquer nova integração a ser feita com um novo
ambiente web fica dependente de esse ambiente web
disponibilizar um web service para integração.
Alguns widget até vão além, quando abrem a
possibilidade de o usuário não só puxar informações de
outros ambientes web – ainda usando integração com web
service – como também de filtrar ou configurar essas
informações. Porém, mesmo assim, os widgets ainda não
dão a possibilidade ampla de escolha sobre o formato de
visualização que esses dados terão quando exibidos na
plataforma, nem mesmo usando uma espécie de lista de
modelos de visualização pré-definidos.
A partir desse quadro, há a necessidade de uma
solução de convergência de conteúdo que dê ampla
possibilidade de se integrar não só com web service, mas
também com informações diretas contidas em banco de
dados. É também desejado que essas integrações sejam
possíveis através de alimentação da solução com o
conhecimento sobre da arquitetura da base de dados do
sistema a ser integrado. Isso porque, dessa maneira, a
solução poderá se integrar amplamente com outros
ambientes, e não apenas com aqueles que dispõem de web
service. Além disso, deve ser visado o desenvolvimento
dessa solução com a possibilidade de incremento de
conhecimento através de extensões, quiçá por meio de
ações de comunidades de colaboração9, com o reforço da
filosofia de software livre10.
2. Necessidade de convergência de dados na
Internet
A chamada “Cultura da Convergência” (JENKINS,
2008) há algum tempo é vista como uma das principais
características da tecnologia contemporânea. Isso porque,
com o uso das novas plataformas digitais, dados podem
ser trocados de maneira muito mais rápida comparado
com poucos anos atrás e acessados a partir dos mais
diversos meios tecnológicos. Por exemplo, um simples
11
Aparelho de telefonia móvel fabricado pela Apple Inc.
Possibilidade de operacionalização de dados a partir de meios diversos
e interconectados.
13
Lista dos sites mais acessados no Brasil, visto em <
http://olhardigital.uol.com.br/digital_news/noticia.php?id_conteudo=934
9&/IBOPE+10+SITES+MAIS+ACESSADOS+EM+AGOSTO+NO+B
R>
14
Sistemas desenvolvidos dentro da filosofia de código aberto e
colaborado
12
9
Comunidades de colaboração são grupos que usuários na Internet que
se agrupam em torno de portais ou redes sociais para troca de extensões
que incrementem um software existente. Exemplo: Joomla Extensions,
acessado em <http://extensions.joomla.org>
10
Conjunto de práticas que realiza liberação parcial ou total do códigofonte e que recebe muitas vezes colaborações de comunidades de
usuários e desenvolvedores
2
de os sistemas que farão tais convergências serem
parcialmente ou integralmente abertos15, para que possam
ser integrados pelos desenvolvedores web a outros
sistemas e também ganhem adquiram de maneira rápida
através de pacotes de melhorias e novas extensões que os
incrementem.
parcialmente ou totalmente aberto, que possa ser estudado
por desenvolvedores web e incrementado por eles a partir
de extensões. Além disso, tal programa-cliente também se
limita a se conectar a serviços disponibilizados pelos sites
de redes sociais citados. Ou seja, sua integração é
realizada apenas com as redes sociais já previstas no
programa e que disponham serviços para ele se conectar.
Por fim, o programa dispõe apenas de uma forma de
visualização das informações, que não pode ser alterada
pelos usuários, senão dentro das poucas possibilidades já
previstas no programa.
A partir dessa análise, viu-se a existência da
característica dos programas-cliente em não se integrar
amplamente com as informações de outros ambientes,
uma vez que os programas só se conectam com ambientes
que disponham serviços com tal finalidade. Também é
fato que tais programas-cliente não possibilitam
customização na forma de visualização dos dados pelos
usuários. Além disso, os programas vistos também não
dispõem seus códigos aos desenvolvedores web, a fim de
que se permitam incrementos através de extensões.
4. Sistemas que realizam convergência de
dados a partir de sites de redes sociais
Os sites de redes sociais acumulam hoje um dos
maiores tráfegos de dados na Internet. Seu uso foi
classificado como a quarta atividade mais popular da
Internet no mundo, segundo pesquisa da Nielsen
Company16. Se considerarmos a Cultura da Convergência
(JENKINS, 2008), com sua velocidade de informação e
interoperabilidade de mídias e dados, o excesso de sites
de redes sociais a que os usuários se associam poderia
causar problemas a esses usuários sobre o
acompanhamento das informações geradas nesses sites e
também sua utilização. Foi para sanar esses problemas
que algumas ferramentas foram criadas, como o RSS e
seus leitores.
Os leitores de RSS são plataformas que agregam, em
um mesmo ambiente, informações geradas em ambientes
que já dispõem da tecnologia RSS. Portanto, vê-se que a
solução resolveu muitos dos problemas de convergência
de dados para os usuários – principalmente sobre o
acompanhamento dos portais de notícias. Contudo, há de
se perceber a limitação dos leitores de RSS em só
aceitarem integrar-se com outros ambientes caso eles
também possuam tecnologia RSS. Não há uma integração
direta do leitor de RSS com as informações contidas no
banco de dados do ambiente que ele quer se integrar, mas
sim apenas uma ligação com o serviço que aquele portal
de notícias, por exemplo, dispõe em forma de RSS.
Focando-se agora a sites de redes sociais, muitos
leitores de RSS já se integram com alguns serviços
disponibilizados por esses sites como Youtube17, Flickr18,
entre outros. Mas, nesse caso dos sites de redes sociais,
são os chamados programas-cliente que surgem como
principais agregadores de informações. Por exemplo,
através do programa-cliente TweetDeck é possível
apresentar simultaneamente na interface do programa as
atualizações dos perfis de Twitter, Facebook, LinkedIn e
MySpace. Contudo, apesar da popularidade do programa
entre usuários dessas redes, ele não dispõe de um código
5. Sugestão de sistema de gestão de conteúdo
web
5.1. Conceito e objetivos
A partir das análises supracitadas, chegou-se nessa
pesquisa a uma sugestão para um sistema de gestão de
conteúdo web, chamada aqui de SGCW. A sugestão
consiste em um sistema que gerencie dados capturados da
web, advindos, por exemplo, de portais, intranets e sites
de redes sociais. Os ambientes a terem seus dados geridos
podem dispor diversos conteúdos, que serão coletados
diretamente na aplicação de banco de dados ou via web
services com sua API19.
O SGCW, nesse estudo, será uma aplicação diferente
das aplicações CMS20, que realizam ações de publicação,
edição e exclusão de conteúdos em ambientes web. A
idéia é que, futuramente, o SGCW possa inclusive servir
para que o usuário faça um gerenciamento básico de
conteúdo do seu CMS, como um simples CRUD
(inclusão, alteração, consulta e exclusão), mas o principal
objetivo do SGCW será o gerenciamento de conteúdos
vindos da web, ou seja, a coleta de dados.
Em termos práticos, a idéia do SGCW é realizar a
captura dos mais diversos tipos de conteúdo existentes em
outros ambientes, interligando-se às conhecidas APIs dos
web service ou, indo além, coletando diretamente dos
bancos de dados. Além disso, proporcionará um possível
incremento através de extensões.
15
Fazendo uso de licenças de software livre
Pesquisa “Global Faces and Networked Places: a Nielsen report on
Social Networking’s New Global Footprint”, promovida pela Nielsen
Company e divulgada em março de 2009.
17
http://youtube.com
18
http://www.flickr.com
16
19
Application Programming Interface
Content Management System ou sistema gerenciador de conteúdo,
próprio, por exemplo, para gestão de conteúdo de portais web
20
3
de uma chamada subseqüente (mas uma interface fluente
envolve mais que um encadeamento de método).
Seguem algumas características do contexto de
implementação da Fluente Interface:
- É definido através do valor de retorno de um método
chamado;
- É auto-referencial, no qual o novo contexto é
equivalente ao contexto passado;
- É denunciado através do retorno de um contexto de
vazio.
Portanto, com a utilização de Fluent Interface e de
DSLs, o Framework consegue também interpretar dados
de uma linguagem, de alto nível23, criada a partir desses
dois conceitos. Dessa forma, é possível criar uma
linguagem mais amigável e fluente para consumir dados
de diferentes serviços web.
Para o Framework em questão, como exercício prático
da pesquisa, foi escolhida a linguagem Inglês como
padrão de desenvolvimento de cada DSL, já na busca pela
universalização do sistema e pelo compartilhamento
futuro com demais desenvolvedores.
Segue abaixo alguns exemplos da utilização desse
Framework.
No que tange ao usuário do SGCW, o sistema será
disponibilizado em uma interface amigável, através da
qual os usuários poderão consumir serviços como Twitter,
Google Search, Google Translator, Flickr, entre outros.
Além disso, os usuários poderão integrar outros
softwares, que viessem a utilizar a base de dados como
principal centro de informação.
Para não limitar o sistema a sites de redes sociais,
como muitas das aplicações existente e já citadas fazem, o
SGCW possibilitará o usuário a consumir informações de
diversas aplicações web usadas, por exemplo, para o
desenvolvimento de portais web, como Joomla!,
Wordpress, Drupal, entre outras.
Para o seu desenvolvimento, o sistema utilizará
linguagem PHP e práticas de desenvolvimento de
software como DDD (Domain-Driven-Design) e Fluent
Interface.
5.2. Análise prática com o desenvolvimento de um
Framework
O desenvolvimento de um Framework vem da
necessidade de facilitar o processo de desenvolvimento do
sistema sugerido nesse estudo. Para isso, o Framework
interpretará uma série de informações que chamaremos de
DSL (em inglês, Domain Specific Language).
Segundo Martin Fowler21, a linguagem de domínio
específico (DSL) possui uma a idéia básica: uma
linguagem de computador orientada para um determinado
tipo de problema. Isso vem contrário à idéia de linguagem
de propósito geral, que é reservada a qualquer tipo de
problema de software. Ainda conforme Martin Fowler,
DSLs são comuns na informática, visto que há exemplos
que incluem CSS, expressões regulares, SQL e HQL.
Além disso, elas possuem a própria sintaxe e forma de
escrita. Isso além do fato de também possuir um
interpretador (Parser), que é usado para processar as
DSLs de maneira mais amigável.
Conforme Martin Fowler, DSLs podem entrar em
execução através da interpretação ou geração de código.
Porém, é normalmente mais fácil interpretar (leitura do
script DSL e executá-lo em tempo de execução), mas vale
ressaltar que, às vezes, a geração de código é realmente
essencial.
Quando conceituamos Fluente Interface (EVANS,
2009; FOWLER, 2010), pode-se explicar, conforme o
conceito comumente difundido até na própria Wikipedia
dos EUA22, como sendo uma maneira de implementar um
código orientado a objeto de forma que vise proporcionar
um código mais legível. A Fluente Interface é
normalmente
implementada
pelo
método
de
encadeamento, para retransmitir o contexto de instrução
5.2 Exemplo da utilização do Framework
1 - Aplicação Flickr
1.1 - Realizar uma pesquisa pelo termo "Joomla
Day Brasil";
1.2 - Trazer informações de uma foto com um Id
específico;
1.3 - Trazer informações de todas as fotos de um
conjunto de fotos específico;
1.4 - Trazer uma foto de diferentes tamanhos
com um Id específico.
//inicializando um tipo de aplicação
$Flickr = \Flapp\Factory::getApplication("Flickr");
$Flickr->parser('search with text "Joomla Day Brasil"'); //item 1.1
$Flickr->parser('photo info with id "3919926282"'); //item 1.2
$Flickr->parser('photo info from photoset "72157623196518483"');
//item 1.3
$Flickr->parser('photo size with id "3919926282"'); //item 1.4
//para cada resultado, deve se utilizar o seguinte trecho de código
para capturar as suas referentes informações.
$rows = $Flickr->getCatalogRows();
2 - Aplicação Google
2.1 - Traduzir um texto utilizando o Google
Tradutor de um texto específico para uma linguagem
especifica;
2.2 - Fazer uma pesquisa na web por um termo
específico.
$Google = \Flapp\Factory::getApplication("Google");
21
Autor e consultor sobre Design of Enterprise Software e mantenedor
do site Martinfowler, acessado em <http://martinfowler.com>
22
Acessado em < http://en.wikipedia.org/wiki/Fluent_interface >
23
Nível complexo de programação, que requer um nível de abstração
elevado que aproxime a linguagem do código à linguagem humana
4
$Google->parser('translate text "Ola Mundo!" to language "en"');
//item 2.1
$Google->parser('search on web term "Joomla!"'); //item 2.2
//para cada resultado, deve se utilizar o seguinte trecho de código
para capturar as suas referentes informações
$rows = $Google->getcatalogRows();
(JENKINS, 2008), essas informações precisam estar
disponibilizadas de maneira muito mais rápida e em um
mesmo ambiente. Viu-se também que há várias aplicações
que realizam essa atividade de convergência dos dados
vindos de outros ambientes web. Contudo, percebe-se
também que poucas dessas aplicações mantêm uma
filosofia de software livre parcial ou integral em seu
desenvolvimento; não permitem uma customização por
parte dos usuários – no que se refere à visualização – e
dos desenvolvedores web – no que se refere a
programação/design/integração com outros sistemas; são
limitados a serviços web disponibilizados pelas
plataformas a que eles se integram e não se conectam
diretamente a informações contidas em banco de dados,
mas sim a serviços das plataformas a que eles se
conectam. Dessa forma, há uma dificuldade de
incremento do sistema por outros desenvolvedores, além
de um problema sobre o crescimento do sistema com a
integração de extensões. Também, diante dessas
características, o sistema dificulta a interação mútua
(PRIMO, 1999) com o usuário através da possibilidade de
ampla customização técnica e de visualização.
Portanto, a partir dessa análise, chegou-se a uma
proposta de sistema que tivesse seu código parcialmente
aberto, que possibilitasse incrementos com extensões, que
coletasse informações de outros ambientes independente
do tipo de banco de dados e que possibilitasse
customização por parte dos usuários na forma de
visualização dos dados coletados.
3 - Aplicação Joomla(Banco de dados)
3.1 - Trazer os conteúdos publicados de uma
categoria com um nome específico;
3.2 - Trazer os conteúdos em ordem publicados;
3.3 - Trazer os últimos banners publicados de
outra configuração de base de dados que utiliza a mesma
estrutura.
$Joomla = \Flapp\Factory::getApplication("Joomla");
$Joomla->parser('content from category with name "latest" and
content published'); //item 3.1
também podemos realizar a mesma consulta de diferentes formas.
$Joomla->parser('content from category with name "latest"');
$Joomla->parser('content published in order'); //item 3.2
//Modificando a configuração para outra base de dados que utilize a
mesma estrutura
$Joomla->getConnection('Database 2'); //item 3.3
$Joomla->parser('banner latest published');
//ou
$Joomla->parser('banner published latest');
//para cada resultado, deve se utilizar o seguinte trecho de código
para capturar as suas referentes informações
$rows = $Joomla->getRows();
Portanto, utilizando DSL, é possível construir uma
forma fluente de realizar consultas dinâmicas em
aplicações de banco de dados, assim como também
coletar informação a partir de aplicações que utilizem web
service. Dessa forma, torna-se possível o principal intuito
do SGCW, que é consumir dados de aplicações, estejam
elas disponíveis através de web service ou diretamente no
banco de dados.
Futuramente, dentro da perspectiva de incremento do
sistema SGCW, também será possível desenvolver uma
interface na qual o usuário poderá não só consumir dados
da web de forma fluente, mas também escolher a forma
de exibição desses dados. Dessa maneira, será possível
criar, com os dados de uma pesquisa no Flickr, por
exemplo, uma galeria de fotos utilizando XHTML, um
RSS ou um gráfico de comparação das fotos por
quantidade de comentários. Essas possibilidades virão
dentro da lógica, prevista, de incremento do sistema a
partir de extensões, quiçá colaborativas na Internet.
12. Bibliografia
CASTELLS, Manuel. A Sociedade em Rede. A era da
informação: economia, sociedade e cultura. 2.ed.; São Paulo: Paz e
Terra, vol. 1, 1999.
EVANS, Eric. Domain-Driven Design: Atacando As
Complexidades na Criação do Software. Rio de Janeiro: Alta Books,
2009.
FOWLER, Martin. Domain Specific Language. Acessado em
10 de abril de 2010, às 9:00, pelo endereço
<http://www.martinfowler.com/bliki/DomainSpecificLanguage.html>
JENKINS, Henry. Cultura da Convergência. São Paulo:
Aleph, 2008.
LEVY, Pierre. Cibercultura. São Paulo: Editora 34, 1999.
Tradução de Carlos Irineu da Costa.
PRIMO, Alex; TEIXEIRA, Fernando; FORTES, Márcio
Borges. Explorando o conceito de interatividade: definições e
taxonomias. 1999. Disponível em: <http://usr.psico.ufrgs.br>. Último
acesso em 6 de novembro de 2007, às 1h15min.
WIKIPEDIA. Fluent Interface. Acessado em 10 de abril de
2010, às 14:00, pelo endereço
<http://en.wikipedia.org/wiki/Fluent_interface>
6. Conclusão
Viu-se nessa pesquisa que, diante do volume crescente
de informações na Internet, sobretudo nos sites de redes
sociais, há também a necessidade de organização dessas
informações. Dentro da Cultura da Convergência
5
Download

Convergência de conteúdo a partir de sites de redes